update common scraper modules
authorMartijn Kaijser <mcm.kaijser@gmail.com>
Sun, 8 Jul 2012 10:54:29 +0000 (12:54 +0200)
committerMartijn Kaijser <mcm.kaijser@gmail.com>
Sun, 8 Jul 2012 10:55:07 +0000 (12:55 +0200)
15 files changed:
addons/metadata.common.allmusic.com/addon.xml
addons/metadata.common.allmusic.com/allmusic.xml
addons/metadata.common.allmusic.com/icon.png [new file with mode: 0644]
addons/metadata.common.amazon.de/addon.xml [new file with mode: 0644]
addons/metadata.common.amazon.de/amazonde.xml [new file with mode: 0644]
addons/metadata.common.fanart.tv/addon.xml [new file with mode: 0644]
addons/metadata.common.fanart.tv/fanarttv.xml [new file with mode: 0644]
addons/metadata.common.htbackdrops.com/addon.xml
addons/metadata.common.htbackdrops.com/htbackdrops.xml
addons/metadata.common.htbackdrops.com/icon.png [new file with mode: 0644]
addons/metadata.common.last.fm/addon.xml
addons/metadata.common.last.fm/icon.png [new file with mode: 0644]
addons/metadata.common.last.fm/lastfm.xml
addons/metadata.common.musicbrainz.org/addon.xml [new file with mode: 0644]
addons/metadata.common.musicbrainz.org/musicbrainz.xml [new file with mode: 0644]

index 0fc8372..8a990a9 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.allmusic.com"
        name="AllMusic"
-        version="1.9.0"
+        version="2.4.3"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="1.0"/>
index dec3959..fa593d6 100644 (file)
 <scraperfunctions>
-       <GetAMGDiscography dest="5">
-               <RegExp input="$$2$$3" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;album&gt;&lt;year&gt;\1&lt;/year&gt;&lt;title&gt;\2&lt;/title&gt;&lt;label&gt;\3&lt;/label&gt;&lt;/album&gt;" dest="2">
-                               <expression repeat="yes" clear="yes" noclean="1,3,4">&lt;td class=&quot;sorted cell&quot;&gt;([^&lt;]*)&lt;/td&gt;.*?&lt;td class=&quot;cell&quot;&gt;&lt;a href=&quot;[^&gt;]*&gt;([^&lt;]*)&lt;.*?&lt;td class=&quot;cell&quot;&gt;([^&lt;]*)&lt;</expression>
+       <GetAMGDiscographyByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGDiscography&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression clear="yes" noclean="1"/>
+               </RegExp>
+       </GetAMGDiscographyByAMGID>
+       <ParseAMGDiscography dest="5" clearbuffers="no">
+               <RegExp input="$$3" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="3">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;album&gt;&lt;year&gt;\1&lt;/year&gt;&lt;title&gt;\2&lt;/title&gt;&lt;label&gt;\3&lt;/label&gt;&lt;/album&gt;" dest="3">
+                               <expression repeat="yes" clear="yes" trim="1">&lt;td class=&quot;year[^&quot;]*&quot;(?:\stitle=&quot;[^&quot;]*&quot;)*\s*data-sort-value=&quot;[^&gt;]*&gt;([^&lt;]*)&lt;/td&gt;[^&lt;]*&lt;td class=&quot;.*?title=&quot;([^&quot;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGDiscography>
+
+       <GetAMGBiographyByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGBiography&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGBiographyByAMGID>
+       <ParseAMGBiography dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
-                       <RegExp input="$$2" output="\1&amp;amp;\2" dest="3">
-                               <expression repeat="yes" noclean="1,2">(.*?)&amp;(.+)</expression>
+                       <RegExp input="$$1" output="\1" dest="11">
+                               <expression clear="yes">&quot; itemprop=&quot;description&quot;&gt;(.*?)div class=&quot;advertisement leaderboard&quot;&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$3" output="" dest="2">
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[biogfbsource]" output="&lt;chain function=&quot;GetLastFMFallbackBiographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+                                       <expression>last.fm</expression>
+                               </RegExp>
+                               <expression>^$</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="&lt;biography&gt;\1&lt;/biography&gt;" dest="2">
                                <expression>(.+)</expression>
                        </RegExp>
-                       <expression noclean="1" />
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseAMGBiography>
+
+       <GetAMGFallbackBiographyByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFallbackBiography&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
                </RegExp>
-       </GetAMGDiscography>
-       <GetAMGBiography dest="5">
+       </GetAMGFallbackBiographyByAMGID>
+       <ParseAMGFallbackBiography dest="5" clearbuffers="no">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;biography&gt;Fetching artist biography from allmusic.com is not possible due to copyright reasons.&lt;/biography&gt;" dest="2">
-                               <expression clear="yes">Biography&lt;/h2&gt;.*?&lt;/p&gt;(.*?)&lt;/p&gt;</expression>
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="\1" dest="2">
+                               <expression clear="yes">&quot; itemprop=&quot;description&quot;&gt;(.*?)div class=&quot;advertisement leaderboard&quot;&gt;</expression>
                        </RegExp>
                        <expression noclean="1"/>
                </RegExp>
-       </GetAMGBiography>
-       <GetAMGReview dest="5">
+       </ParseAMGFallbackBiography>
+
+       <GetAMGArtistNameByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistName&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistNameByAMGID>
+       <ParseAMGArtistName dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;review&gt;Fetching album review from allmusic.com is not possible due to copyright reasons.&lt;/review&gt;" dest="2">
-                               <expression>&lt;h2 class=&quot;title&quot;&gt;Review&lt;/h2&gt;.*?&lt;/p&gt;(.*?)&lt;/p&gt;</expression>
+                       <RegExp input="$$1" output="&lt;name&gt;\1&lt;/name&gt;" dest="2">
+                               <expression noclean="1">http://schema.org/MusicGroup&quot;&gt;[^&lt;]*&lt;span itemprop=&quot;name&quot;&gt;([^&lt;]*)&lt;/span&gt;</expression>
                        </RegExp>
-                       <expression noclean="1" />
+                       <expression noclean="1"/>
                </RegExp>
-       </GetAMGReview>
-       <ParseAMGArtist dest="3">
-               <RegExp input="$$5" output="&lt;details&gt;\1&lt;/details&gt;" dest="3">
-                       <RegExp input="$$1" output="&lt;name&gt;\1&lt;/name&gt;" dest="5">
-                               <expression noclean="1">&lt;meta name=&quot;title&quot; content=&quot;([^&quot;]*)</expression>
+       </ParseAMGArtistName>
+
+       <GetAMGArtistLifeSpanByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistLifeSpan&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistLifeSpanByAMGID>
+       <ParseAMGArtistLifeSpan dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="11">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;born&gt;\1 \2&lt;/born&gt;" dest="11+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Born[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;died&gt;\1 \2&lt;/died&gt;" dest="11+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Died[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="11+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Formed[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="11+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Disbanded[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[lifespanfbsource]" output="&lt;chain function=&quot;GetMBFallbackLafeSpanByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+                                       <expression>MusicBrainz</expression>
+                               </RegExp>
+                       <expression>^$</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$11" dest="2">
+                       <expression noclean="1">&lt;(?:born|formed)*&gt;(.+)&lt;/(?:born|formed)*&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;born&gt;\1&lt;/born&gt;" dest="5+">
-                               <expression>&lt;h3&gt;Born[^&gt;]*&gt;[^&gt;]*&gt;(.*?)&lt;/p&gt;</expression>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseAMGArtistLifeSpan>
+
+       <GetAMGFallbackArtistLifeSpanByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFallbackArtistLifeSpan&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGFallbackArtistLifeSpanByAMGID>
+       <ParseAMGFallbackArtistLifeSpan dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;born&gt;\1&lt;/born&gt;" dest="5+">
-                               <expression>&lt;h3&gt;Birth[^&gt;]*&gt;[^&gt;]*&gt;(.*?)&lt;/p&gt;</expression>
+                       <RegExp input="$$1" output="&lt;born&gt;\1 \2&lt;/born&gt;" dest="2">
+                               <expression trim="1,2">&lt;dt&gt;\s*Born[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;died&gt;\1 \2&lt;/died&gt;" dest="2+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Died[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="2">
+                               <expression trim="1,2">&lt;dt&gt;\s*Formed[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="2+">
+                               <expression trim="1,2">&lt;dt&gt;\s*Disbanded[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseAMGFallbackArtistLifeSpan>
+
+       <GetAMGArtistYearsActiveByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistYearsActive&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistYearsActiveByAMGID>
+       <ParseAMGArtistYearsActive dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;died&gt;\1&lt;/died&gt;" dest="5+">
-                               <expression>&lt;h3&gt;Died[^&gt;]*&gt;[^&gt;]*&gt;(.*?)&lt;/p&gt;</expression>
+                       <RegExp input="$$1" output="&lt;yearsactive&gt;\1&lt;/yearsactive&gt;" dest="2">
+                               <expression trim="1" noclean="1">&lt;dd class=&quot;active&quot;&gt;([^&lt;]*)&lt;</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="5+">
-                               <expression>&lt;h3&gt;Formed[^&gt;]*&gt;[^&gt;]*&gt;(.*?)&lt;/p&gt;</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGArtistYearsActive>
+
+       <GetAMGArtistGenresByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistGenres&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistGenresByAMGID>
+       <ParseAMGArtistGenres dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="5+">
-                               <expression>&lt;h3&gt;Disbanded[^&gt;]*&gt;[^&gt;]*&gt;(.*?)&lt;/p&gt;</expression>
+                       <RegExp input="" output="" dest="6">
+                               <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;h3&gt;Years Active&lt;/h3&gt;(.*?)&lt;/p&gt;</expression>
+                               <expression noclean="1">&lt;dt&gt;Genres&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$6" output="&lt;genre&gt;\2&lt;/genre&gt;" dest="11">
+                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/genre/[^&quot;]*&quot;&gt;(&lt;strong&gt;)?([^&lt;]*)</expression>
                        </RegExp>
-                       <RegExp input="$$6" output="\1's/" dest="7+">
-                               <expression repeat="yes">&lt;span class=&quot;active&quot;&gt;([0-9]+)&lt;/span&gt;</expression>
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetLastFMFallbackArtistGenresByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+                                       <expression>last.fm</expression>
+                               </RegExp>
+                               <expression>&lt;genre&gt;&lt;/genre&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$7" output="&lt;yearsactive&gt;\1&lt;/yearsactive&gt;" dest="5+">
-                               <expression noclean="1">(.+)/</expression>
+                       <RegExp input="$$11" output="$$11" dest="2">
+                               <expression>&lt;genre&gt;(.+)&lt;/genre&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGArtistGenres>
+
+       <GetAMGFallbackArtistGenresByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFallbackArtistGenres&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGFallbackArtistGenresByAMGID>
+       <ParseAMGFallbackArtistGenres dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="6">
+                               <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;h3&gt;Genres&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;dt&gt;Genres&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$6" output="&lt;genre&gt;\2&lt;/genre&gt;" dest="2">
+                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/genre/[^&quot;]*&quot;&gt;(&lt;strong&gt;)?([^&lt;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGFallbackArtistGenres>
+
+       <GetAMGArtistStylesByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistStyles&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistStylesByAMGID>
+       <ParseAMGArtistStyles dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
-                       <RegExp input="$$6" output="&lt;genre&gt;\2&lt;/genre&gt;" dest="5+">
-                               <expression repeat="yes" noclean="1">&lt;a href=&quot;/explore/genre/[^&gt;]*&gt;(&lt;strong&gt;)?([^&lt;]*)</expression>
+                       <RegExp input="" output="" dest="7">
+                               <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="7">
-                               <expression noclean="1">&lt;h3&gt;Styles&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;dt&gt;Styles&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="5+">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                       <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="11">
+                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[stylesfbsource]" output="&lt;chain function=&quot;GetLastFMFallbackArtistStylesByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+                                       <expression>last.fm</expression>
+                               </RegExp>
+                               <expression>&lt;style&gt;&lt;/style&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$11" dest="2">
+                               <expression>&lt;style&gt;(.+)&lt;/style&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGArtistStyles>
+
+       <GetAMGFallbackArtistStylesByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFallbackArtistStyles&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGFallbackArtistStylesByAMGID>
+       <ParseAMGFallbackArtistStyles dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="7">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="\1" dest="7">
+                               <expression noclean="1">&lt;dt&gt;Styles&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
+                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGFallbackArtistStyles>
+
+       <GetAMGArtistMoodsByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistMoods&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistMoodsByAMGID>
+       <ParseAMGArtistMoods dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="8">
-                               <expression noclean="1">&lt;h3&gt;Moods&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;artist moods&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="5+">
+                       <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
                                <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
                        </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGArtistMoods>
+
+       <GetAMGArtistThumbsByAMGID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistThumbs&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGArtistThumbsByAMGID>
+       <ParseAMGArtistThumbs dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="\1" dest="9">
-                               <expression noclean="1">&lt;h3&gt;Instruments&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;photo gallery&lt;/h4&gt;(.*?)&lt;h4&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$9" output="&lt;instruments&gt;\1&lt;/instruments&gt;" dest="5+">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                       <RegExp input="$$9" output="&lt;thumb&gt;http://cps-static.rovicorp.com/3/JPG_1080/\1&lt;/thumb&gt;" dest="2">
+                               <expression repeat="yes" noclean="1">&lt;img src=&quot;http://cps-static.rovicorp.com/3/JPG_[^/]*/([^&quot;]*)</expression>
                        </RegExp>
-                       <RegExp conditional="allmusicartistthumbs" input="$$1" output="&lt;thumb&gt;\1&lt;/thumb&gt;" dest="5+">
-                               <expression noclean="1">&lt;img id=&quot;artist_image&quot; src=&quot;([^&quot;]*)&quot;</expression>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseAMGArtistThumbs>
+
+
+       <GetAMGAlbumReviewByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumReview&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumReviewByAMGID>
+       <ParseAMGAlbumReview dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;review&gt;\1&lt;/review&gt;" dest="2">
+                               <expression>&lt;span itemprop=&quot;description&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
-       </ParseAMGArtist>
-       <ParseAMGAlbum dest="3">
-               <RegExp input="$$5" output="&lt;details&gt;\1&lt;/details&gt;" dest="3">
-                       <RegExp input="$$1" output="&lt;title&gt;\1&lt;/title&gt;" dest="5">
-                               <expression trim="1" noclean="1">&lt;meta name=&quot;title&quot; content=&quot;([^-]*)-[^&lt;]*&quot; /&gt;</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="&lt;artist&gt;\1&lt;/artist&gt;" dest="5+">
-                               <expression noclean="1">&lt;meta name=&quot;title&quot; content=&quot;[^-]*- ([^&lt;]*)&quot; /&gt;</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="&lt;rating&gt;\1&lt;/rating&gt;" dest="5+">
-                               <expression noclean="1">&lt;h3&gt;Rating&lt;/h3&gt;[^_]*_r([0-9^]*)</expression>
+       </ParseAMGAlbumReview>
+
+       <GetAMGAlbumTitleByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumTitle&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumTitleByAMGID>
+       <ParseAMGAlbumTitle dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;title&gt;\1&lt;/title&gt;" dest="2">
+                               <expression trim="1" noclean="1">&lt;div class=&quot;album-title&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;label&gt;\1&lt;/label&gt;" dest="5+">
-                               <expression noclean="1">&lt;h3&gt;Label&lt;/h3&gt;[^&gt;]*&gt;([^&lt;]*)</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumTitle>
+
+       <GetAMGAlbumArtistByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumArtist&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumArtistByAMGID>
+       <ParseAMGAlbumArtist dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;artist&gt;\1&lt;/artist&gt;" dest="2">
+                               <expression noclean="1">&lt;div class=&quot;album-artist&quot;&gt;[^&gt;]*&gt;([^&lt;]*)</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;type&gt;\1&lt;/type&gt;" dest="5+">
-                               <expression noclean="1">&lt;h3&gt;Type&lt;/h3&gt;[^&gt;]*&gt;([^&lt;]*)</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumArtist>
+
+       <GetAMGAlbumRatingByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumRating&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumRatingByAMGID>
+       <ParseAMGAlbumRating dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;rating max=&quot;5.0&quot;&gt;\1&lt;/rating&gt;" dest="2">
+                               <expression noclean="1">itemprop=&quot;rating&quot;&gt;([0-9^]*)</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;releasedate&gt;\1&lt;/releasedate&gt;" dest="5+">
-                               <expression noclean="1">&lt;h3&gt;Release Date&lt;/h3&gt;[^&gt;]*&gt;([^&lt;]*)</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumRating>
+
+       <GetAMGAlbumDateByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumDate&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumDateByAMGID>
+       <ParseAMGAlbumDate dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;releasedate&gt;\1&lt;/releasedate&gt;" dest="2">
+                               <expression noclean="1">&lt;dd class=&quot;release-date&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;year&gt;\1&lt;/year&gt;" dest="5+">
-                               <expression noclean="1">&lt;span&gt;Release Date.*?([0-9]+)&lt;/</expression>
+                       <RegExp input="$$1" output="&lt;year&gt;\2&lt;/year&gt;" dest="2+">
+                               <expression trim="1" noclean="1">&lt;dd class=&quot;release-date&quot;&gt;([^,]*,)?([^&lt;]*)</expression>
                        </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumDate>
+
+       <GetAMGAlbumGenresByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumGenres&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumGenresByAMGID>
+       <ParseAMGAlbumGenres dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;h3&gt;Genre[s]?&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;dd class=&quot;genres&quot;&gt;(.*?)&lt;/dd&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="5+">
+                       <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="2">
                                <expression repeat="yes" trim="1" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
                        </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumGenres>
+
+       <GetAMGAlbumStylesByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumStyles&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumStylesByAMGID>
+       <ParseAMGAlbumStyles dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="7">
-                               <expression noclean="1">&lt;h3&gt;Style[s]?&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;dd class=&quot;styles&quot;&gt;(.*?)&lt;/dd&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="5+">
+                       <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
                                <expression repeat="yes" trim="1" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
                        </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumStyles>
+
+       <GetAMGAlbumMoodsByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumMoods&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumMoodsByAMGID>
+       <ParseAMGAlbumMoods dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="8">
-                               <expression trim="1" noclean="1">&lt;h3&gt;Mood[s]?&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression trim="1" noclean="1">&gt;\s*&lt;h4&gt;album moods&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="5+">
+                       <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
                                <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
                        </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumMoods>
+
+       <GetAMGAlbumThemesByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumThemes&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumThemesByAMGID>
+       <ParseAMGAlbumThemes dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="9">
-                               <expression noclean="1">&lt;h3&gt;Theme[s]?&lt;/h3&gt;(.*?)&lt;/div&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;album themes&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$9" output="&lt;theme&gt;\1&lt;/theme&gt;" dest="5+">
+                       <RegExp input="$$9" output="&lt;theme&gt;\1&lt;/theme&gt;" dest="2">
                                <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;track&gt;&lt;position&gt;\1&lt;/position&gt;&lt;title&gt;\2&lt;/title&gt;&lt;duration&gt;\3&lt;/duration&gt;&lt;/track&gt;" dest="5+">
-                               <expression repeat="yes" noclean="1,2,3">&quot;cell&quot;&gt;([0-9]+)&lt;.*?&lt;td class=&quot;cell&quot;&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/td&gt;.*?&lt;td class=&quot;cell&quot;&gt;([0-9]*:[0-9]*)&lt;/td&gt;</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumThemes>
+
+       <GetAMGAlbumTracksByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumTracks&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumTracksByAMGID>
+       <ParseAMGAlbumTracks dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;track&gt;&lt;position&gt;\1&lt;/position&gt;&lt;title&gt;\2&lt;/title&gt;&lt;duration&gt;\3&lt;/duration&gt;&lt;/track&gt;" dest="2">
+                               <expression repeat="yes" trim="1" noclean="1,2,3">&lt;td class=&quot;tracknum&quot;&gt;([0-9]*).*?&lt;div class=&quot;title&quot;&gt;[^&gt;]*&gt;([^&lt;]*).*?&lt;td class=&quot;time&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
-                       <RegExp conditional="allmusicalbumthumbs" input="$$1" output="&lt;thumb&gt;http://image.allmusic.com/\1&lt;/thumb&gt;" dest="5+">
-                               <expression noclean="1">http://image.allmusic.com/([^&quot;]*)&quot;</expression>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumTracks>
+
+       <GetAMGAlbumThumbsByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumThumbs&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGAlbumThumbsByAMGID>
+       <ParseAMGAlbumThumbs dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;thumb&gt;http://cps-static.rovicorp.com/3/JPG_500/\1&lt;/thumb&gt;" dest="2">
+                               <expression noclean="1">&lt;meta property=&quot;og:image&quot; content=&quot;http://cps-static.rovicorp.com/3/JPG_[^/]*/([^&quot;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseAMGAlbumThumbs>
+
+
+       <GetAMGFakeBiographyByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFakeBiography&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGFakeBiographyByAMGID>
+       <ParseAMGFakeBiography dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;biography&gt;Fetching artist biography from allmusic.com is not possible due to copyright reasons.&lt;/biography&gt;" dest="2">
+                               <expression noclean="1" />
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseAMGFakeBiography>
+
+       <GetAMGFakeAlbumReviewByAMGID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGFakeAlbumReview&quot;&gt;http://www.allmusic.com/album/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetAMGFakeAlbumReviewByAMGID>
+       <ParseAMGFakeAlbumReview dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;review&gt;Fetching album review from allmusic.com is not possible due to copyright reasons.&lt;/review&gt;" dest="2">
+                               <expression noclean="1"/>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
-       </ParseAMGAlbum>
+       </ParseAMGFakeAlbumReview>
+
 </scraperfunctions>
diff --git a/addons/metadata.common.allmusic.com/icon.png b/addons/metadata.common.allmusic.com/icon.png
new file mode 100644 (file)
index 0000000..9c18e20
Binary files /dev/null and b/addons/metadata.common.allmusic.com/icon.png differ
diff --git a/addons/metadata.common.amazon.de/addon.xml b/addons/metadata.common.amazon.de/addon.xml
new file mode 100644 (file)
index 0000000..d9750bc
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.common.amazon.de"
+       name="Amazon.de"
+       version="1.0.0"
+       provider-name="Team XBMC">
+  <requires>
+    <import addon="xbmc.metadata" version="1.0"/>
+  </requires>
+  <extension point="xbmc.metadata.scraper.library"
+             library="amazonde.xml"/>
+  <extension point="xbmc.addon.metadata">
+    <platform>all</platform>
+    <minversion>20000</minversion>
+    <summary lang="en">amazon.de Scraper Library</summary>
+    <description lang="en">Download Music information from amazon.de</description>
+  </extension>
+</addon>
diff --git a/addons/metadata.common.amazon.de/amazonde.xml b/addons/metadata.common.amazon.de/amazonde.xml
new file mode 100644 (file)
index 0000000..a8e054b
--- /dev/null
@@ -0,0 +1,15 @@
+<scraperfunctions>
+       <GetAmazonDEAlbumReviewByASIN dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseAmazonDEAlbumReview&quot;&gt;http://www.amazon.de/exec/obidos/ASIN/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </GetAmazonDEAlbumReviewByASIN>
+       <ParseAmazonDEAlbumReview dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;review&gt;\1&lt;/review&gt;" dest="2">
+                               <expression fixchars="1">Kurzbeschreibung&lt;/h3&gt;\s*&lt;div class=&quot;productDescriptionWrapper&quot;&gt;(.*?)&lt;div class</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseAmazonDEAlbumReview>
+</scraperfunctions>
diff --git a/addons/metadata.common.fanart.tv/addon.xml b/addons/metadata.common.fanart.tv/addon.xml
new file mode 100644 (file)
index 0000000..0d60546
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.common.fanart.tv"
+       name="fanart.tv"
+       version="1.1.0"
+       provider-name="Team XBMC">
+  <requires>
+    <import addon="xbmc.metadata" version="1.0"/>
+  </requires>
+  <extension point="xbmc.metadata.scraper.library"
+             library="fanarttv.xml"/>
+  <extension point="xbmc.addon.metadata">
+    <platform>all</platform>
+    <minversion>20000</minversion>
+    <summary lang="bg">Библиотека за сваляне на инф. от fanart.tv</summary>
+    <summary lang="en">fanart.tv Scraper Library</summary>
+    <summary lang="de">Scraper für Hintergründe von fanart.tv</summary>
+    <summary lang="es">Scraper de fanart.tv</summary>
+    <summary lang="fi">fanart.tv taustakuvalataajan kirjasto</summary>
+    <summary lang="fr">Scraper fanart.tv</summary>
+    <summary lang="hu">fanart.tv leolvasó-könyvtár</summary>
+    <summary lang="nl">fanart.tv-scraperfuncties</summary>
+    <summary lang="pl">Scraper biblioteki fanart.tv</summary>
+    <summary lang="pt">Biblioteca de fundos fanart.tv</summary>
+    <summary lang="ru">Обработчик Фоновых изображений с fanart.tv</summary>
+    <summary lang="se">Skrapa för fanart.tv</summary>
+    <summary lang="zh">fanart.tv刮削器代码库</summary>
+    <description lang="bg">Сваля декорации от www.fanart.tv.com</description>
+    <description lang="en">Download backdrops from www.fanart.tv.com</description>
+    <description lang="de">Downloade Hintergründe von www.fanart.tv.com</description>
+    <description lang="es">Descarga fanart y fotos de artistas de www.fanart.tv.com</description>
+    <description lang="fi">Lataa taustakuvia osoitteesta www.fanart.tv.com</description>
+    <description lang="fr">Télécharge les backdrops depuis www.htbackgrops.com</description>
+    <description lang="hu">Fanartképek letöltése www.fanart.tv.com webhelyről</description>
+    <description lang="nl">Achtergronden ophalen van www.fanart.tv.com</description>
+    <description lang="pl">Pobieraj tła z www.fanart.tv.com</description>
+    <description lang="pt">Descarregar fundos de www.fanart.tv.com</description>
+    <description lang="ru">Загружать фоновые изображения с www.fanart.tv.com</description>
+    <description lang="se">Ladda ner bakgrundsbilder från www.fanart.tv.com</description>
+    <description lang="zh">从www.fanart.tv.com下载背景图</description>
+  </extension>
+</addon>
diff --git a/addons/metadata.common.fanart.tv/fanarttv.xml b/addons/metadata.common.fanart.tv/fanarttv.xml
new file mode 100644 (file)
index 0000000..f5b6faf
--- /dev/null
@@ -0,0 +1,58 @@
+<scraperfunctions>
+       <GetFanartTvArtistThumbsByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseFanartTvArtistThumbs&quot; cache=&quot;fanarttv-artistimages-\1.xml&quot;&gt;http://fanart.tv/webservice/artist/ed4b784f97227358b31ca4dd966a04f1/\1/xml/&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetFanartTvArtistThumbsByMBID>
+       <ParseFanartTvArtistThumbs dest="5" clearbuffers="no">
+               <RegExp input="$$13" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="13">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;\1/preview&quot;&gt;\1&lt;/thumb&gt;" dest="13">
+                               <expression repeat="yes" noclean="1">&lt;artistthumb id=&quot;[^&quot;]*&quot; url=&quot;([^&quot;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseFanartTvArtistThumbs>
+
+       <GetFanartTvArtistFanartsByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseFanartTvArtistFanarts&quot; cache=&quot;fanarttv-artistimages-\1.xml&quot;&gt;http://fanart.tv/webservice/artist/ed4b784f97227358b31ca4dd966a04f1/\1/xml/&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetFanartTvArtistFanartsByMBID>
+       <ParseFanartTvArtistFanarts dest="5" clearbuffers="no">
+               <RegExp input="$$13" output="&lt;details&gt;&lt;fanart&gt;\1&lt;/fanart&gt;&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="13">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="14">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;\1/preview&quot;&gt;\1&lt;/thumb&gt;" dest="14">
+                               <expression repeat="yes" noclean="1">&lt;artistbackground id=&quot;[^&quot;]*&quot; url=&quot;([^&quot;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$14" output="\1" dest="13">
+                               <expression noclean="1">(.+)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseFanartTvArtistFanarts>
+
+       <GetFanartTvAlbumThumbsByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseFanartTvAlbumThumbs&quot; cache=&quot;fanarttv-albumimages-\1.xml&quot;&gt;http://fanart.tv/webservice/album/ed4b784f97227358b31ca4dd966a04f1/\1/xml/&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetFanartTvAlbumThumbsByMBID>
+       <ParseFanartTvAlbumThumbs dest="5" clearbuffers="no">
+               <RegExp input="$$13" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="13">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;\1/preview&quot;&gt;\1&lt;/thumb&gt;" dest="13">
+                               <expression repeat="yes" noclean="1">&lt;albumcover id=&quot;[^&quot;]*&quot; url=&quot;([^&quot;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseFanartTvAlbumThumbs>
+</scraperfunctions>
index c77de5f..2b7d8b3 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.htbackdrops.com"
        name="HTBackdrops"
-       version="1.0.7"
+       version="1.2.0"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="1.0"/>
index e29ee83..0531585 100644 (file)
@@ -1,28 +1,51 @@
 <scraperfunctions>
+       <GetHTBThumbsByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetHTBThumbsByMBID>
        <GetHTBThumbs dest="5">
                <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBThumbs>
-       <ParseHTBThumbs dest="5">
+       <ParseHTBThumbs dest="5" clearbuffers="no">
                <RegExp input="$$13" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="13">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="13">
                                <expression repeat="yes" noclean="1">&lt;id&gt;([^&lt;]+)&lt;/id&gt;\n[^&lt;]+&lt;aid&gt;5&lt;/aid&gt;</expression>
                        </RegExp>
-                       <expression noclean="1">(.+)</expression>
+                       <expression noclean="1" />
                </RegExp>
        </ParseHTBThumbs>
+
+       <GetHTBFanartByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetHTBFanartByMBID>
        <GetHTBFanart dest="5">
                <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBFanart>
-       <ParseHTBFanart dest="5">
-               <RegExp input="$$13" output="&lt;details&gt;&lt;fanart url=&quot;http://www.htbackdrops.com/&quot;&gt;\1&lt;/fanart&gt;&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;thumb preview=&quot;api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="13">
+       <ParseHTBFanart dest="5" clearbuffers="no">
+               <RegExp input="$$13" output="&lt;details&gt;&lt;fanart&gt;\1&lt;/fanart&gt;&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="13">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="14">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="14">
                                <expression repeat="yes" noclean="1">&lt;id&gt;([^&lt;]+)&lt;/id&gt;\n[^&lt;]+&lt;aid&gt;1&lt;/aid&gt;</expression>
                        </RegExp>
-                       <expression noclean="1">(.+)</expression>
+                       <RegExp input="$$14" output="\1" dest="13">
+                               <expression noclean="1">(.+)</expression>
+                       </RegExp>
+                       <expression noclean="1" />
                </RegExp>
        </ParseHTBFanart>
 </scraperfunctions>
diff --git a/addons/metadata.common.htbackdrops.com/icon.png b/addons/metadata.common.htbackdrops.com/icon.png
new file mode 100644 (file)
index 0000000..277ec12
Binary files /dev/null and b/addons/metadata.common.htbackdrops.com/icon.png differ
index 981cf95..8bece1a 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.last.fm"
        name="Last.FM"
-       version="1.1.0"
+       version="1.4.1"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="1.0"/>
diff --git a/addons/metadata.common.last.fm/icon.png b/addons/metadata.common.last.fm/icon.png
new file mode 100644 (file)
index 0000000..b253ec5
Binary files /dev/null and b/addons/metadata.common.last.fm/icon.png differ
index 6bd19c6..e8c8ee2 100644 (file)
 <scraperfunctions>
-       <GetLastFMDiscography dest="5">
+       <GetLastFMDiscographyByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMDiscography&quot; cache=&quot;lastfmdiscog-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMDiscographyByMBID>
+       <GetLastFMDiscography dest="5" clearbuffers="no">
                <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMDiscography&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&amp;amp;artist=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1"/>
                </RegExp>
        </GetLastFMDiscography>
-       <ParseLastFMDiscography dest="5">
+       <ParseLastFMDiscography dest="5" clearbuffers="no">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;album&gt;&lt;title&gt;\1&lt;/title&gt;&lt;/album&gt;" dest="2+">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;album&gt;&lt;title&gt;\1&lt;/title&gt;&lt;/album&gt;" dest="2">
                                <expression repeat="yes">&lt;album[^&gt;]*&gt;[^&lt;]*&lt;name&gt;([^&lt;]*?)&lt;/name&gt;</expression>
                        </RegExp>
                        <expression noclean="1"/>
                </RegExp>
        </ParseLastFMDiscography>
-       <GetLastFMArtistThumbsByID dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistThumbs&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getimages&amp;mbid=\1&amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&lt;/url&gt;&lt;/details&gt;" dest="5">
+
+       <GetLastFMBiographyByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMBiography&quot; cache=&quot;lastfmartistinfo-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMBiographyByMBID>
+       <ParseLastFMBiography dest="5" clearbuffers="no">
+               <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="6">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="11">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="\1" dest="11">
+                               <expression fixchars="1">&lt;content&gt;&lt;!\[CDATA\[(.*?)\]\]</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[biogfbsource]" output="&lt;chain function=&quot;GetAMGFallbackBiographyByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="12">
+                                       <expression>allmusic.com</expression>
+                               </RegExp>
+                               <expression>^$</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="&lt;biography&gt;\1&lt;/biography&gt;" dest="6">
+                               <expression>(.+)</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseLastFMBiography>
+
+       <GetLastFMFallbackBiographyByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMFallbackBiography&quot; cache=&quot;lastfmartistinfo-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMFallbackBiographyByMBID>
+       <ParseLastFMFallbackBiography dest="5" clearbuffers="no">
+               <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="6">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;biography&gt;\1&lt;/biography&gt;" dest="6">
+                               <expression fixchars="1">&lt;content&gt;&lt;!\[CDATA\[(.*?)\]\]</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseLastFMFallbackBiography>
+
+       <GetLastFMArtistGenresByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistGenres&quot; cache=&quot;lastfmgenres-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettoptags&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMArtistGenresByMBID>
+       <ParseLastFMArtistGenres dest="5" clearbuffers="no">
+               <RegExp input="$$4" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="4">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="11">
+                               <expression noclean="1">&lt;tag&gt;.*?&lt;name&gt;([^/lt;]*)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="4">
+                               <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetAMGFallbackArtistGenresByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="12">
+                                       <expression>allmusic.com</expression>
+                               </RegExp>
+                               <expression>&lt;genre&gt;&lt;/genre&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$11" dest="4">
+                               <expression>&lt;genre&gt;(.+)&lt;/genre&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseLastFMArtistGenres>
+
+       <GetLastFMFallbackArtistGenresByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMFallbackArtistGenres&quot; cache=&quot;lastfmgenres-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettoptags&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMFallbackArtistGenresByMBID>
+       <ParseLastFMFallbackArtistGenres dest="5" clearbuffers="no">
+               <RegExp input="$$4" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="4">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="4">
+                               <expression noclean="1">&lt;tag&gt;.*?&lt;name&gt;([^/lt;]*)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseLastFMFallbackArtistGenres>
+
+       <GetLastFMArtistStylesByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistStyles&quot; cache=&quot;lastfmgenres-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettoptags&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMArtistStylesByMBID>
+       <ParseLastFMArtistStyles dest="5" clearbuffers="no">
+               <RegExp input="$$4" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="4">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;style&gt;\1&lt;/style&gt;" dest="11">
+                               <expression repeat="yes" noclean="1">&lt;tag&gt;.*?&lt;name&gt;([^/lt;]*)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="4">
+                               <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetAMGFallbackArtistStylesByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="12">
+                                       <expression>allmusic.com</expression>
+                               </RegExp>
+                               <expression>&lt;style&gt;&lt;/style&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$11" dest="4">
+                               <expression>&lt;style&gt;(.+)&lt;/style&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseLastFMArtistStyles>
+
+       <GetLastFMFallbackArtistStylesByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMFallbackArtistStyles&quot; cache=&quot;lastfmgenres-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.gettoptags&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMFallbackArtistStylesByMBID>
+       <ParseLastFMFallbackArtistStyles dest="5" clearbuffers="no">
+               <RegExp input="$$4" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="4">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;style&gt;\1&lt;/style&gt;" dest="4">
+                               <expression repeat="yes" noclean="1">&lt;tag&gt;.*?&lt;name&gt;([^/lt;]*)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseLastFMFallbackArtistStyles>
+
+       <GetLastFMArtistThumbsByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistThumbs&quot; cache=&quot;lastfmartistimages-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getimages&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
-       </GetLastFMArtistThumbsByID>
-       <GetLastFMArtistThumbsByName dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistThumbs&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getimages&amp;artist=\1&amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&lt;/url&gt;&lt;/details&gt;" dest="5">
+       </GetLastFMArtistThumbsByMBID>
+       <GetLastFMArtistThumbsByName dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMArtistThumbs&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=artist.getimages&amp;amp;artist=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetLastFMArtistThumbsByName>
-       <ParseLastFMArtistThumbs dest="5">
+       <ParseLastFMArtistThumbs dest="5" clearbuffers="no">
                <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="6">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="&lt;thumb preview=&quot;\2&quot;&gt;\1&lt;/thumb&gt;" dest="6">
-                               <expression repeat="yes" noclean="1">&lt;size name="original"[^&gt;]*&gt;([^&lt;]*)&lt;[^&lt;]*&lt;size name="large"[^&gt;]*&gt;([^&lt;]*)&lt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;size name=&quot;original&quot;[^&gt;]*&gt;([^&lt;]*)&lt;[^&lt;]*&lt;size name=&quot;large&quot;[^&gt;]*&gt;([^&lt;]*)&lt;</expression>
                        </RegExp>
-                       <expression noclean="1">(.+)</expression>
+                       <expression noclean="1" />
                </RegExp>
        </ParseLastFMArtistThumbs>
+
+
+       <GetLastFMAlbumTitleByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumTitle&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumTitleByMBID>
+       <GetLastFMAlbumTitleByAlbumAndArtist dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumTitle&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
+               </RegExp>
+       </GetLastFMAlbumTitleByAlbumAndArtist>
+       <ParseLastFMAlbumTitle dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;title&gt;\1&lt;/title&gt;" dest="2">
+                               <expression noclean="1">&lt;name&gt;(.*?)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseLastFMAlbumTitle>
+
+       <GetLastFMAlbumArtistByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumArtist&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumArtistByMBID>
+       <GetLastFMAlbumArtistByAlbumAndArtist dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumArtist&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
+               </RegExp>
+       </GetLastFMAlbumArtistByAlbumAndArtist>
+       <ParseLastFMAlbumArtist dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;artist&gt;\1&lt;/artist&gt;" dest="2">
+                               <expression noclean="1">&lt;artist&gt;(.*?)&lt;/artist&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseLastFMAlbumArtist>
+
+       <GetLastFMAlbumDateByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumDate&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumDateByMBID>
+       <GetLastFMAlbumDateByAlbumAndArtist dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumDate&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
+               </RegExp>
+       </GetLastFMAlbumDateByAlbumAndArtist>
+       <ParseLastFMAlbumDate dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;releasedate&gt;\1&lt;/releasedate&gt;" dest="2">
+                               <expression trim="1">&lt;releasedate&gt;([^,]*)?([^&lt;]*)?&lt;/releasedate&gt;</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;year&gt;\1&lt;/year&gt;" dest="2+">
+                               <expression trim="1">&lt;releasedate&gt;.*?([0-9]{4})[^&lt;]*&lt;/releasedate&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseLastFMAlbumDate>
+
+       <GetLastFMAlbumTracksByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumTracks&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumTracksByMBID>
+       <GetLastFMAlbumTracksByAlbumAndArtist dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumTracks&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
+               </RegExp>
+       </GetLastFMAlbumTracksByAlbumAndArtist>
+       <ParseLastFMAlbumTracks dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;track&gt;&lt;position&gt;\1&lt;/position&gt;&lt;title&gt;\2&lt;/title&gt;&lt;/track&gt;" dest="2">
+                               <expression repeat="yes" noclean="1">&lt;track rank=&quot;(.*?)&quot;.*?&lt;name&gt;(.*?)&lt;/name&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseLastFMAlbumTracks>
+
+       <GetLastFMAlbumReviewByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumReview&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumReviewByMBID>
+       <GetLastFMAlbumReviewByAlbumAndArtist dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumReview&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
+               </RegExp>
+       </GetLastFMAlbumReviewByAlbumAndArtist>
+       <ParseLastFMAlbumReview dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;review&gt;\1&lt;/review&gt;" dest="2">
+                               <expression fixchars="1">&lt;content&gt;&lt;!\[CDATA\[(.*?)(User-|\]\])</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseLastFMAlbumReview>
+
+       <GetLastFMAlbumThumbsByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumThumbs&quot; cache=&quot;lastfmalbum-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;amp;mbid=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetLastFMAlbumThumbsByMBID>
        <GetLastFMAlbumThumbs dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumThumbs&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;album=\1&amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&lt;/url&gt;&lt;/details&gt;" dest="5">
-                       <expression>(.+)::(.+)</expression>
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseLastFMAlbumThumbs&quot; cache=&quot;lastfmalbum-\4-\3.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=album.getinfo&amp;artist=\2&amp;amp;album=\1&amp;amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;lang=$INFO[lastfmlanguage]&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression encode="1,2">(.+)::(.+)::(.+)::(.+)</expression>
                </RegExp>
        </GetLastFMAlbumThumbs>
        <ParseLastFMAlbumThumbs dest="5">
                        <RegExp input="$$1" output="&lt;thumb&gt;\1&lt;/thumb&gt;" dest="2+">
                                <expression noclean="1">&lt;image size=&quot;large&quot;&gt;([^&lt;]*)&lt;/image&gt;</expression>
                        </RegExp>
-                       <expression noclean="1"></expression>
+                       <expression noclean="1">(.+)</expression>
                </RegExp>
        </ParseLastFMAlbumThumbs>
+
 </scraperfunctions>
diff --git a/addons/metadata.common.musicbrainz.org/addon.xml b/addons/metadata.common.musicbrainz.org/addon.xml
new file mode 100644 (file)
index 0000000..42a2635
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.common.musicbrainz.org"
+       name="musicbrainz"
+        version="1.2.3"
+       provider-name="Team XBMC">
+  <requires>
+    <import addon="xbmc.metadata" version="1.0"/>
+  </requires>
+  <extension point="xbmc.metadata.scraper.library"
+             library="musicbrainz.xml"/>
+  <extension point="xbmc.addon.metadata">
+    <platform>all</platform>
+    <minversion>20000</minversion>
+    <summary lang="bg">Библиотека за сваляне на музикална инф. от MusicBrainz</summary>
+    <summary lang="en">MusicBrainz Music Scraper Library</summary>
+    <summary lang="de">Musik-Scraper für musicbrainz.org</summary>
+    <summary lang="es">Scraper de música de MusicBrainz</summary>
+    <summary lang="fi">MusicBrainz musiikkitietojen lataajan kirjasto</summary>
+    <summary lang="fr">Scraper MusicBrainz pour la musique</summary>
+    <summary lang="hu">MusicBrainz zenei adat leolvasó</summary>
+    <summary lang="nl">MusicBrainz-scraperfuncties</summary>
+    <summary lang="pl">Scraper muzyki MusicBrainz</summary>
+    <summary lang="pt">Scraper de música MusicBrainz</summary>
+    <summary lang="ro">Bibliotecă catalog de muzică MusicBrainz</summary>
+    <summary lang="ru">Музыкальная Информация MusicBrainz</summary>
+    <summary lang="se">Skrapa för musicbrainz.org</summary>
+    <summary lang="zh">MusicBrainz音乐刮削器代码库</summary>
+    <description lang="bg">Извлича инф. за музикални файлове от www.musicbrainz.org</description>
+    <description lang="en">Download Music information from www.musicbrainz.org</description>
+    <description lang="de">Downloade Musik Informationen von www.musicbrainz.org</description>
+    <description lang="es">Descarga información musical de www.musicbrainz.org</description>
+    <description lang="fi">Lataa musiikkitietoja osoitteesta www.musicbrainz.org</description>
+    <description lang="fr">Télécharger les infos musicales depuis www.musicbrainz.org</description>
+    <description lang="hu">Zene információk letöltése a www.musicbrainz.org webhelyről</description>
+    <description lang="nl">Muziekinformatie ophalen van www.musicbrainz.org</description>
+    <description lang="pl">Pobieraj informacje o muzyce z www.musicbrainz.org</description>
+    <description lang="pt">Descarregar informação de música de www.musicbrainz.org</description>
+    <description lang="ro">Descărcați informații muzică de pe www.musicbrainz.org</description>
+    <description lang="ru">Загружать информацию о Музыке с www.musicbrainz.org</description>
+    <description lang="se">Ladda ner musikinformation från www.musicbrainz.org</description>
+    <description lang="zh">从www.musicbrainz.org下载音乐信息</description>
+  </extension>
+</addon>
diff --git a/addons/metadata.common.musicbrainz.org/musicbrainz.xml b/addons/metadata.common.musicbrainz.org/musicbrainz.xml
new file mode 100644 (file)
index 0000000..16e539b
--- /dev/null
@@ -0,0 +1,170 @@
+<scraperfunctions>
+       <GetMBDiscographyByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBDiscography&quot; cache=&quot;mb-\1-discog.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group?artist=\1&amp;amp;limit=100&amp;amp;type=album&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBDiscographyByMBID>
+       <ParseMBDiscography dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;album&gt;&lt;year&gt;\4&lt;/year&gt;&lt;title&gt;\2&lt;/title&gt;&lt;label&gt;\1&lt;/label&gt;&lt;/album&gt;" dest="2">
+                               <expression repeat="yes" clear="yes" fixchars="1,2,3" noclean="1,2,3"> type="Album" id="([^"]*)"&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;first-release-date(\s/)?&gt;(\d{4})?</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseMBDiscography>
+
+       <GetMBLafeSpanByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBLifeSpan&quot; cache=&quot;mb-\1-artist.xml&quot;&gt;http://www.musicbrainz.org/ws/2/artist/\1?inc=url-rels&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBLafeSpanByMBID>
+       <ParseMBLifeSpan dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="" output="" dest="11">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;born&gt;\1&lt;/born&gt;" dest="11">
+                       <expression>&lt;artist type=&quot;Person&quot;.*?&lt;life-span&gt;&lt;begin&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;died&gt;\1&lt;/died&gt;" dest="11+">
+                       <expression>&lt;artist type=&quot;Person&quot;.*?&lt;life-span&gt;&lt;begin&gt;[^&lt;]*&lt;/begin&gt;&lt;end&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="11">
+                       <expression>&lt;artist type=&quot;Group&quot;.*?&lt;life-span&gt;&lt;begin&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="11+">
+                       <expression>&lt;artist type=&quot;Group&quot;.*?&lt;life-span&gt;&lt;begin&gt;[^&lt;]*&lt;/begin&gt;&lt;end&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$12" dest="2">
+                               <RegExp input="$INFO[lifespanfbsource]" output="&lt;chain function=&quot;GetAMGFallbackArtistLifeSpanByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="12">
+                                       <expression>allmusic.com</expression>
+                               </RegExp>
+                       <expression>^$</expression>
+                       </RegExp>
+                       <RegExp input="$$11" output="$$11" dest="2">
+                       <expression noclean="1">&lt;(?:born|formed)*&gt;(.+)&lt;/(?:born|formed)*&gt;</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseMBLifeSpan>
+
+       <GetMBFallbackLafeSpanByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseFallbackMBLifeSpan&quot; cache=&quot;mb-\1-artist.xml&quot;&gt;http://www.musicbrainz.org/ws/2/artist/\1?inc=url-rels&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBFallbackLafeSpanByMBID>
+       <ParseFallbackMBLifeSpan dest="5" clearbuffers="no">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="" output="" dest="2">
+                               <expression />
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;born&gt;\1&lt;/born&gt;" dest="2">
+                       <expression>&lt;artist type=&quot;Person&quot;.*?&lt;life-span&gt;&lt;begin&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;died&gt;\1&lt;/died&gt;" dest="2+">
+                       <expression>&lt;artist type=&quot;Person&quot;.*?&lt;life-span&gt;&lt;begin&gt;[^&lt;]*&lt;/begin&gt;&lt;end&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="2">
+                       <expression>&lt;artist type=&quot;Group&quot;.*?&lt;life-span&gt;&lt;begin&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="2+">
+                       <expression>&lt;artist type=&quot;Group&quot;.*?&lt;life-span&gt;&lt;begin&gt;[^&lt;]*&lt;/begin&gt;&lt;end&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1"/>
+               </RegExp>
+       </ParseFallbackMBLifeSpan>
+
+       <GetMBAlbumTitleByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumTitle&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumTitleByMBID>
+       <ParseMBAlbumTitle dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;title&gt;\1&lt;/title&gt;" dest="2">
+                               <expression noclean="1">&lt;release id=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseMBAlbumTitle>
+
+       <GetMBAlbumArtistByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumArtist&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumArtistByMBID>
+       <ParseMBAlbumArtist dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;artist&gt;\1&lt;/artist&gt;" dest="2">
+                               <expression noclean="1">&lt;artist id=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseMBAlbumArtist>
+
+       <GetMBAlbumRatingByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumRating&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumRatingByMBID>
+       <ParseMBAlbumRating dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;rating&gt;\1&lt;/rating&gt;" dest="2">
+                               <expression noclean="1">&lt;/primary-type&gt;&lt;rating votes-count="[^"]*"&gt;(\d)</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseMBAlbumRating>
+
+       <GetMBAlbumLabelByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumLabel&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumLabelByMBID>
+       <ParseMBAlbumLabel dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;label&gt;\1&lt;/label&gt;" dest="2">
+                               <expression noclean="1">&lt;label id=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseMBAlbumLabel>
+
+       <GetMBAlbumDateByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumDate&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumDateByMBID>
+       <ParseMBAlbumDate dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;releasedate&gt;\1&lt;/releasedate&gt;" dest="2">
+                               <expression noclean="1">&lt;first-release-date&gt;([^&lt;]*)&lt;</expression>
+                       </RegExp>
+                       <RegExp input="$$1" output="&lt;year&gt;\1&lt;/year&gt;" dest="2+">
+                               <expression noclean="1">&lt;first-release-date&gt;(\d{4})</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseMBAlbumDate>
+
+       <GetMBAlbumTracksByMBID dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseMBAlbumTracks&quot; cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1" />
+               </RegExp>
+       </GetMBAlbumTracksByMBID>
+       <ParseMBAlbumTracks dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;track&gt;&lt;position&gt;\1&lt;/position&gt;&lt;title&gt;\4&lt;/title&gt;&lt;duration&gt;\2&lt;/duration&gt;&lt;/track&gt;" dest="2">
+                               <expression repeat="yes">&lt;track&gt;&lt;position&gt;(\d+)&lt;/position&gt;&lt;number&gt;\d*&lt;/number&gt;(?:&lt;length&gt;(\d*?)\d{3}&lt;/length&gt;)*(?:&lt;recording id=&quot;([^&quot;]*)&quot;&gt;)*&lt;title&gt;([^&lt;]*)&lt;</expression>
+                       </RegExp>
+                       <expression noclean="1">(.+)</expression>
+               </RegExp>
+       </ParseMBAlbumTracks>
+
+</scraperfunctions>