summaryrefslogtreecommitdiffstats
path: root/addons/metadata.common.allmusic.com
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /addons/metadata.common.allmusic.com
parentInitial commit. (diff)
downloadkodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz
kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'addons/metadata.common.allmusic.com')
-rw-r--r--addons/metadata.common.allmusic.com/addon.xml42
-rw-r--r--addons/metadata.common.allmusic.com/allmusic.xml372
-rw-r--r--addons/metadata.common.allmusic.com/icon.pngbin0 -> 6197 bytes
3 files changed, 414 insertions, 0 deletions
diff --git a/addons/metadata.common.allmusic.com/addon.xml b/addons/metadata.common.allmusic.com/addon.xml
new file mode 100644
index 0000000..effc5bb
--- /dev/null
+++ b/addons/metadata.common.allmusic.com/addon.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.common.allmusic.com"
+ name="AllMusic Scraper Library"
+ version="3.2.2"
+ provider-name="Team Kodi">
+ <requires>
+ <import addon="xbmc.metadata" version="2.1.0"/>
+ </requires>
+ <extension point="xbmc.metadata.scraper.library"
+ library="allmusic.xml"/>
+ <extension point="xbmc.addon.metadata">
+ <platform>all</platform>
+ <summary lang="bg">Библиотека за сваляне на музикална инф. от AllMusic</summary>
+ <summary lang="en">AllMusic Music Scraper Library</summary>
+ <summary lang="de">Musik-Scraper für AllMusic.com</summary>
+ <summary lang="es">Scraper de música de AllMusic</summary>
+ <summary lang="fi">AllMusic musiikkitietojen lataajan kirjasto</summary>
+ <summary lang="fr">Scraper AllMusic pour la musique</summary>
+ <summary lang="hu">AllMusic zenei adat leolvasó</summary>
+ <summary lang="nl">AllMusic-scraperfuncties</summary>
+ <summary lang="pl">Scraper muzyki AllMusic</summary>
+ <summary lang="pt">Scraper de música AllMusic</summary>
+ <summary lang="ro">Bibliotecă catalog de muzică AllMusic</summary>
+ <summary lang="ru">Музыкальная Информация AllMusic</summary>
+ <summary lang="se">Skrapa för AllMusic.com</summary>
+ <summary lang="zh">AllMusic音乐刮削器代码库</summary>
+ <description lang="bg">Извлича инф. за музикални файлове от www.allmusic.com</description>
+ <description lang="en">Download Music information from www.allmusic.com</description>
+ <description lang="de">Downloade Musik Informationen von www.allmusic.com</description>
+ <description lang="es">Descarga información musical de www.allmusic.com</description>
+ <description lang="fi">Lataa musiikkitietoja osoitteesta www.allmusic.com</description>
+ <description lang="fr">Télécharger les infos musicales depuis www.allmusic.com</description>
+ <description lang="hu">Zene információk letöltése a www.allmusic.com webhelyről</description>
+ <description lang="nl">Muziekinformatie ophalen van www.allmusic.com</description>
+ <description lang="pl">Pobieraj informacje o muzyce z www.allmusic.com</description>
+ <description lang="pt">Descarregar informação de música de www.allmusic.com</description>
+ <description lang="ro">Descărcați informații muzică de pe www.allmusic.com</description>
+ <description lang="ru">Загружать информацию о Музыке с www.allmusic.com</description>
+ <description lang="se">Ladda ner musikinformation från www.allmusic.com</description>
+ <description lang="zh">从www.allmusic.com下载音乐信息</description>
+ </extension>
+</addon>
diff --git a/addons/metadata.common.allmusic.com/allmusic.xml b/addons/metadata.common.allmusic.com/allmusic.xml
new file mode 100644
index 0000000..0493875
--- /dev/null
+++ b/addons/metadata.common.allmusic.com/allmusic.xml
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scraperfunctions>
+ <GetAMGDiscographyByAMGID dest="5" clearbuffers="no">
+ <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist-discography.html&quot; function=&quot;ParseAMGDiscography&quot;&gt;https://www.allmusic.com/artist/\1/discography&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\sclass=&quot;year[^&quot;]*&quot;(?:\stitle=&quot;[^&quot;]*&quot;)*\s*data-sort-value=&quot;[^&gt;]*&gt;\s*([^&lt;]*)&lt;/td&gt;[^&lt;]*&lt;td\sclass=&quot;.*?title=&quot;([^&quot;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGDiscography>
+
+ <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;https://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 \3&lt;/born&gt;" dest="11+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Born.*?birthdate/[^&quot;]+&quot;&gt;([^&lt;]*)(.*?"/birthplace/[^&quot;]+&quot;&gt;([^&lt;]*))?</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;died&gt;\1 \3&lt;/died&gt;" dest="11+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Died.*?deathdate/[^&quot;]+&quot;&gt;([^&lt;]*)(.*?&quot;/deathplace/[^&quot;]+&quot;&gt;([^&lt;]*))?</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="11+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Formed.*?birthdate/[^&quot;]+&quot;&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="11+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Disbanded.*?deathdate/[^&quot;]+[^&quot;]+&quot;&gt;([^&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>
+ <RegExp input="$INFO[lifespanfbsource]" output="&lt;chain function=&quot;GetTADBFallbackLifeSpanByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+ <expression>TheAudioDb.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>
+ </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;https://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 \3&lt;/born&gt;" dest="2">
+ <expression trim="1,2">&lt;h4&gt;\s.+Born.*?birthdate/[^&quot;]+&quot;&gt;([^&lt;]*)(.*?"/birthplace/[^&quot;]+&quot;&gt;([^&lt;]*))?</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;died&gt;\1 \3&lt;/died&gt;" dest="2+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Died.*?deathdate/[^&quot;]+&quot;&gt;([^&lt;]*)(.*?&quot;/deathplace/[^&quot;]+&quot;&gt;([^&lt;]*))?</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="2">
+ <expression trim="1,2">&lt;h4&gt;\s.+Formed.*?birthdate/[^&quot;]+&quot;&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="2+">
+ <expression trim="1,2">&lt;h4&gt;\s.+Disbanded.*?deathdate/[^&quot;]+[^&quot;]+&quot;&gt;([^&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;https://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;yearsactive&gt;\1&lt;/yearsactive&gt;" dest="2">
+ <expression trim="1" noclean="1">&lt;h\d&gt;Active&lt;/h\d&gt;[^&gt;]*&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <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;https://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="" output="" dest="6">
+ <expression />
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="6">
+ <expression noclean="1">&lt;h4&gt;Genre&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="11">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/genre/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <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>
+ <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetTADBFallbackArtistGenresByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+ <expression>TheAudioDb.com</expression>
+ </RegExp>
+ <expression>&lt;genre&gt;&lt;/genre&gt;</expression>
+ </RegExp>
+ <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;https://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;h4&gt;Genre&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/genre/[^&quot;]*&quot;&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;https://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="" output="" dest="7">
+ <expression />
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="7">
+ <expression noclean="1">&lt;h4&gt;Styles&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="11">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/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>
+ <RegExp input="$INFO[stylesfbsource]" output="&lt;chain function=&quot;GetTADBFallbackArtistStylesByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+ <expression>TheAudioDb.com</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;https://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;h4&gt;Styles&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/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;https://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="" output="" dest="10">
+ <expression />
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="10">
+ <expression noclean="1">&gt;Artists\sMoods&lt;/h\d*&gt;(.*?)&lt;/ul&gt;</expression>
+ </RegExp>
+ <RegExp input="$$10" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="11">
+ <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;\s*&lt;/li&gt;</expression>
+ </RegExp>
+ <RegExp input="$$11" output="$$12" dest="2">
+ <RegExp input="$INFO[moodsfbsource]" output="&lt;chain function=&quot;GetTADBFallbackArtistMoodsByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
+ <expression>TheAudioDb.com</expression>
+ </RegExp>
+ <expression>&lt;mood&gt;&lt;/mood&gt;</expression>
+ </RegExp>
+ <RegExp input="$$11" output="$$11" dest="2">
+ <expression>&lt;mood&gt;(.+)&lt;/mood&gt;</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGArtistMoods>
+
+ <GetAMGFallbackArtistMoodsByAMGID dest="5" clearbuffers="no">
+ <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGFallbackArtistMoods&quot;&gt;https://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+ <expression noclean="1"/>
+ </RegExp>
+ </GetAMGFallbackArtistMoodsByAMGID>
+ <ParseAMGFallbackArtistMoods 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="10">
+ <expression />
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="10">
+ <expression noclean="1">&gt;Artists\sMoods&lt;/h\d*&gt;(.*?)&lt;/ul&gt;</expression>
+ </RegExp>
+ <RegExp input="$$10" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;\s*&lt;/li&gt;</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGFallbackArtistMoods>
+
+
+ <GetAMGAlbumRatingByAMGID dest="5">
+ <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumRating&quot;&gt;https://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;10.0&quot;&gt;\1&lt;/rating&gt;" dest="2">
+ <expression noclean="1">rating-allmusic-([0-9^]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGAlbumRating>
+
+ <GetAMGAlbumGenresByAMGID dest="5">
+ <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumGenres&quot;&gt;https://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">class=&quot;genre&quot;&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/genre/[^&quot;]*&quot;&gt;([^&lt;]*)</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;https://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">class=&quot;styles&quot;&gt;(.*?)&lt;/div&gt;</expression>
+ </RegExp>
+ <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/style/[^&quot;]*&quot;&gt;([^&lt;]*)</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;https://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">&gt;\s*&lt;h4&gt;Album\sMoods&lt;/h4&gt;(.*?)&lt;/section&gt;</expression>
+ </RegExp>
+ <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/mood/[^&quot;]*&quot;&gt;([^&lt;]*)</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;https://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="4">
+ <expression trim="1" noclean="1">&lt;section\sclass=&quot;themes&quot;&gt;(.*?)&lt;/section&gt;</expression>
+ </RegExp>
+ <RegExp input="$$4" output="&lt;theme&gt;\1&lt;/theme&gt;" dest="2">
+ <expression repeat="yes" noclean="1">&lt;a\shref=&quot;https://www.allmusic.com/theme/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGAlbumThemes>
+
+ <GetAMGAlbumThumbsByAMGID dest="5">
+ <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-album.html&quot; function=&quot;ParseAMGAlbumThumbs&quot;&gt;https://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 aspect=&quot;thumb&quot;&gt;https://cdn-s3.allmusic.com/release-covers/500/\1&lt;/thumb&gt;" dest="2">
+ <expression noclean="1">&lt;img src=&quot;https://cdn-s3.allmusic.com/release-covers/500/([^&quot;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </ParseAMGAlbumThumbs>
+
+</scraperfunctions>
diff --git a/addons/metadata.common.allmusic.com/icon.png b/addons/metadata.common.allmusic.com/icon.png
new file mode 100644
index 0000000..bf2789e
--- /dev/null
+++ b/addons/metadata.common.allmusic.com/icon.png
Binary files differ