Hi,
I’ve been running into a limit for how to display a list of bootleg releases for a specific artist, but to then be able to view with columns for ‘recorded at’ being either a place, event, or area. I’ve been experimenting with raw calls to the API and processing the view of the XML using an XSL template. My Fu isn’t very good, but this is what I’ve come up with so far
Save as releases.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mb="http://musicbrainz.org/ns/mmd-2.0#">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<h2>MusicBrainz release decoder test by davygrvy@pobox.com</h2>
Count is <xsl:value-of select="mb:metadata/mb:release-list/@count" /><br/>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Status</th>
<th>Attributes</th>
<th>Date</th>
<th>Place</th>
<th>Disambig</th>
</tr>
<xsl:for-each select="mb:metadata/mb:release-list/mb:release">
<tr>
<td><a href="https://musicbrainz.org/release/{@id}"><xsl:value-of select="mb:title"/></a></td>
<td><xsl:value-of select="mb:status"/></td>
<td><xsl:value-of select="mb:release-group/mb:primary-type"/> + <xsl:value-of select="mb:release-group/mb:secondary-type-list/mb:secondary-type"/></td>
<xsl:if test="not(mb:relation-list)">
<td>[no data]</td>
<td>[no data]</td>
</xsl:if>
<xsl:for-each select="mb:relation-list/mb:relation">
<!-- TODO: use 'credited as' below when spec'd -->
<xsl:choose>
<xsl:when test="@type-id='4dda6e40-14af-46bb-bb78-ea22f4a99dfa'">
<!-- 'recorded at' for event, but we can't see 'held in/at', so display name with link to event -->
<td><xsl:value-of select="mb:event/mb:life-span/mb:begin"/></td>
<td><a href="https://musicbrainz.org/event/{mb:event/@id}"><xsl:value-of select="mb:event/mb:name"/></a></td>
</xsl:when>
<xsl:when test="@type-id='3b1fae9f-5b22-42c5-a40c-d1e5c9b90251'">
<!-- 'recorded at' for place -->
<td><xsl:value-of select="mb:begin"/></td>
<td><xsl:value-of select="mb:place/mb:name"/></td>
</xsl:when>
<xsl:when test="@type-id='354043e1-bdc2-4c7f-b338-2bf9c1d56e88'">
<!-- 'recorded in' for area -->
<td><xsl:value-of select="mb:begin"/></td>
<td><xsl:value-of select="mb:area/mb:name"/></td>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<td><xsl:value-of select="mb:disambiguation"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
I call it from the command line with this
davygrvy@puukukui:~/PlayBox/MB stuff$ wget -O - https://musicbrainz.org/ws/2/release?artist=678d88b2-87b0-403b-b63d-5da7465aecc3\&status=bootleg\&type=live\&inc=release-groups+place-rels+event-rels\&limit=25\&offset=850 |xsltproc -o releases.html releases.xsl -; google-chrome releases.html
I get a view like this
My formatting stinks (thus far) for multiple locations, but I’m getting what I need. I can see releases with disambigs, but no formal place or concert event relationships and even ones with nothing. This is showing the work I need to do for creating concert events in my templated series. I’m about a quarter done converting the whole thing ![]()
