Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

add artists/album universal scrapers for music and last.fm for musicv…

…ideos
  • Loading branch information...
commit cfb94b4d1baae0b3c0cf3909f247e73666f12b35 1 parent 4c4ccf0
@MartijnKaijser authored
View
24 addons/metadata.album.universal/addon.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.album.universal"
+ name="Universal Album Scraper"
+ version="1.2.2"
+ provider-name="Olympia, Team XBMC">
+ <requires>
+ <import addon="xbmc.metadata" version="1.0"/>
+ <import addon="metadata.common.last.fm" version="1.3.2"/>
+ <import addon="metadata.common.allmusic.com" version="2.3.1"/>
+ <import addon="metadata.common.musicbrainz.org" version="1.2.3"/>
+ <import addon="metadata.common.fanart.tv" version="1.0.1"/>
+ <import addon="metadata.common.amazon.de" version="1.0.0"/>
+ </requires>
+ <extension point="xbmc.metadata.scraper.albums"
+ language="en"
+ library="albumuniversal.xml"/>
+ <extension point="xbmc.addon.metadata">
+ <summary lang="en">Universal Scraper for Albums</summary>
+ <description lang="en">This scraper collects information from the following supported sites: MusicBrainz, last.fm, allmusic.com and amazon.de, while grabs artwork from: fanart.tv, last.fm and allmusic.com. It can be set field by field that from which site you want that specific information.
+
+The initial search is always done on MusicBrainz. In case allmusic and/or amazon.de links are not added on the MusicBrainz site, fields from allmusic.com and/or amazon.de cannot be fetched (very easy to add those missing links though).</description>
+ <platform>all</platform>
+ </extension>
+</addon>
View
166 addons/metadata.album.universal/albumuniversal.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scraper framework="1.1" date="2012-06-09">
+ <NfoUrl dest="3">
+ <RegExp input="$$1" output="&lt;url&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;" dest="3">
+ <expression>release/(.+)</expression>
+ </RegExp>
+ </NfoUrl>
+ <CreateAlbumSearchUrl dest="3">
+ <RegExp input="$$1" output="&lt;url&gt;http://search.musicbrainz.org/ws/2/release/?fmt=xml&amp;query=release:&quot;\1&quot;%20AND%20artist:&quot;$$2&quot;&lt;/url&gt;" dest="3">
+ <RegExp input="$$2" output="\1" dest="4">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$2" output="\1" dest="6">
+ <expression noclean="1">(.+)(?:Ft%2e|Feat%2e|Ft.|Feat.|%20and%20)</expression>
+ </RegExp>
+ <RegExp input="$$6" output="\1" dest="4">
+ <expression>(.+)</expression>
+ </RegExp>
+ <expression/>
+ </RegExp>
+ </CreateAlbumSearchUrl>
+ <GetAlbumSearchResults dest="8">
+ <RegExp input="$$5" output="&lt;results&gt;\1&lt;/results&gt;" dest="8">
+ <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url 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;/entity&gt;" dest="5">
+ <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;&lt;language&gt;[^&lt;]*&lt;/language&gt;&lt;script&gt;[^&lt;]*&lt;/script&gt;&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\stype=&quot;Album&quot;\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url 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;/entity&gt;" dest="5+">
+ <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;&lt;language&gt;[^&lt;]*&lt;/language&gt;&lt;script&gt;[^&lt;]*&lt;/script&gt;&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group(?:\stype=&quot;[^&quot;]*&quot;)*\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAlbumSearchResults>
+ <GetAlbumDetails dest="3">
+ <RegExp input="$$5" output="&lt;details&gt;\1&lt;/details&gt;" dest="3">
+ <!--MBID - release-->
+ <RegExp input="$$1" output="\1" dest="3">
+ <expression>id=&quot;([^&quot;]*)</expression>
+ </RegExp>
+ <!--MBID - release group-->
+ <RegExp input="$$1" output="\1" dest="4">
+ <expression>&lt;release-group type=&quot;[^&quot;]*&quot; id=&quot;([^&quot;]*)&quot;</expression>
+ </RegExp>
+ <!--Album title-->
+ <RegExp input="$$1" output="\1" dest="7">
+ <expression trim="1">&lt;release id=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <!--Artist name-->
+ <RegExp input="$$1" output="\1" dest="8">
+ <expression trim="1">&lt;release id=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;[^&lt;]*&lt;.*?&lt;artist id=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <RegExp input="$$3" output="&lt;chain function=&quot;GetMBAlbumTitleByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$3" output="&lt;chain function=&quot;GetMBAlbumArtistByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$3" output="&lt;chain function=&quot;GetMBAlbumLabelByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$3" output="&lt;chain function=&quot;GetMBAlbumDateByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$3" output="&lt;chain function=&quot;GetMBAlbumTracksByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumreviewsource]" output="&lt;url function=&quot;GetAMGAlbumReview&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumreviewsource]" output="&lt;chain function=&quot;GetLastFMAlbumReviewByAlbumAndArtist&quot;&gt;$$7::$$8::$$7::$$8&lt;/chain&gt;" dest="5+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumreviewsource]" output="&lt;url function=&quot;GetAmazonDEAlbumReview&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>amazon.de</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumratingsource]" output="&lt;chain function=&quot;GetMBAlbumRatingByMBID&quot;&gt;$$3&lt;/chain&gt;" dest="5+">
+ <expression>MusicBrainz</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumratingsource]" output="&lt;url function=&quot;GetAMGAlbumRating&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumstylessource]" output="&lt;url function=&quot;GetAMGAlbumStyles&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[albummoodssource]" output="&lt;url function=&quot;GetAMGAlbumMoods&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[albumthemessource]" output="&lt;url function=&quot;GetAMGAlbumThemes&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp conditional="fanarttvalbumthumbs" input="$$1" output="&lt;chain function=&quot;GetFanartTvAlbumThumbsByMBID&quot;&gt;$$4&lt;/chain&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <RegExp conditional="allmusicalbumthumbs" input="$$1" output="&lt;url function=&quot;GetAMGAlbumThumbs&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <RegExp conditional="lastfmalbumthumbs" input="$$1" output="&lt;chain function=&quot;GetLastFMAlbumThumbs&quot;&gt;$$7::$$8::$$7::$$8&lt;/chain&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAlbumDetails>
+
+ <GetAMGAlbumReview dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumReviewByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumReview>
+
+ <GetAMGAlbumRating dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumRatingByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumRating>
+
+ <GetAMGAlbumStyles dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumStylesByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumStyles>
+
+ <GetAMGAlbumMoods dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumMoodsByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumMoods>
+
+ <GetAMGAlbumThemes dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumThemesByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumThemes>
+
+ <GetAMGAlbumThumbs dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAMGAlbumThumbsByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">allmusic.com/album/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGAlbumThumbs>
+
+ <GetAmazonDEAlbumReview dest="5">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="&lt;chain function=&quot;GetAmazonDEAlbumReviewByASIN&quot;&gt;\1&lt;/chain&gt;" dest="2">
+ <expression noclean="1">http://www.amazon.de/gp/product/([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAmazonDEAlbumReview>
+
+</scraper>
View
36 addons/metadata.album.universal/changelog.txt
@@ -0,0 +1,36 @@
+[B]1.2.2[/B]
+Fixed: accommodate new Frodo style URL encoding
+
+[B]1.2.1[/B]
+Removed: '&' sign from artist splitter
+
+[B]1.2.0[/B]
+Added: scraping album review from amazon.de (if link exist on MusicBrainz)
+
+[B]1.1.4[/B]
+Fixed: typo blocks preferring album in search result
+
+[B]1.1.3[/B]
+Fixed: won't find tracks without recording id
+
+[B]1.1.2[/B]
+Fixed: won't find tracks without duration
+
+[B]1.1.1[/B]
+Fixed: artists won't find with 'and' in their name
+
+[B]1.1.0[/B]
+Added: trying to get album info when multiple artists are credited (first artist will be used)
+Fixed: will not find some albums
+
+[B]1.0.3[/B]
+Fixed: Some Album releases were not found
+
+[B]1.0.2[/B]
+Fixed: Track Duration from MusicBrainz was wrong in certain cases. Credits to scudlee!
+
+[B]1.0.1[/B]
+Fixed: scraping moods from allmusic.com
+
+[B]1.0.0[/B]
+Initial version
View
BIN  addons/metadata.album.universal/icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
13 addons/metadata.album.universal/resources/language/English/strings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<strings>
+ <string id="30000">Grab Album Thumbs from fanart.tv</string>
+ <string id="30001">Grab Album Thumbs from Last.fm</string>
+ <string id="30002">Get Album Review from</string>
+ <string id="30003"> Preferred Language</string>
+ <string id="30004">Get Album Rating from</string>
+ <string id="30005">Get Album Styles from</string>
+ <string id="30006">Get Album Moods from</string>
+ <string id="30007">Get Album Themes from</string>
+ <string id="30008">Grab Album Thumbs from allmusic.com</string>
+ <string id="30009">Artwork</string>
+</strings>
View
20 addons/metadata.album.universal/resources/settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings>
+ <category label="128">
+ <setting type="lsep" label="General Settings"/>
+ <setting label="30002" type="labelenum" values="last.fm|amazon.de|None" id="albumreviewsource" default="last.fm"/>
+ <setting label="30003" type="labelenum" values="en|de|es|fr|it|jp|pl|pt|ru|sv|tr|zh" id="lastfmlanguage" default="en" visible="eq(-1,0)"/>
+ <setting type="sep"/>
+ <setting label="30004" type="labelenum" values="MusicBrainz|allmusic.com|None" id="albumratingsource" default="MusicBrainz"/>
+ <setting label="30005" type="labelenum" values="allmusic.com|None" id="albumstylessource" default="allmusic.com"/>
+ <setting label="30006" type="labelenum" values="allmusic.com|None" id="albummoodssource" default="allmusic.com"/>
+ <setting label="30007" type="labelenum" values="allmusic.com|None" id="albumthemessource" default="allmusic.com"/>
+ </category>
+
+ <category label="30009">
+ <setting type="lsep" label="Artwork Settings"/>
+ <setting label="30000" type="bool" id="fanarttvalbumthumbs" default="true"/>
+ <setting label="30001" type="bool" id="lastfmalbumthumbs" default="true"/>
+ <setting label="30008" type="bool" id="allmusicalbumthumbs" default="true"/>
+ </category>
+</settings>
View
24 addons/metadata.artists.universal/addon.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.artists.universal"
+ name="Universal Artist Scraper"
+ version="2.0.6"
+ provider-name="Team XBMC">
+ <requires>
+ <import addon="xbmc.metadata" version="1.0"/>
+ <import addon="metadata.common.last.fm" version="1.4.1"/>
+ <import addon="metadata.common.allmusic.com" version="2.4.1"/>
+ <import addon="metadata.common.musicbrainz.org" version="1.2.1"/>
+ <import addon="metadata.common.htbackdrops.com" version="1.2.0"/>
+ <import addon="metadata.common.fanart.tv" version="1.1.0"/>
+ </requires>
+ <extension point="xbmc.metadata.scraper.artists"
+ language="en"
+ library="artistuniversal.xml"/>
+ <extension point="xbmc.addon.metadata">
+ <summary lang="en">Universal Scraper for Artists</summary>
+ <description lang="en">This scraper collects information from the following supported sites: MusicBrainz, last.fm, and allmusic.com, while grabs artwork from: fanart.tv, htbackdrops.com, last.fm and allmusic.com. It can be set field by field that from which site you want that specific information.
+
+The initial search is always done on MusicBrainz. In case allmusic link is not added on the MusicBrainz site fields from allmusic.com cannot be fetched (very easy to add those missing links though).</description>
+ <platform>all</platform>
+ </extension>
+</addon>
View
146 addons/metadata.artists.universal/artistuniversal.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scraper framework="1.1" date="2012-05-28">
+ <NfoUrl dest="3">
+ <RegExp input="$$1" output="&lt;url&gt;http://www.musicbrainz.org/ws/2/artist/\1?inc=url-rels&lt;/url&gt;" dest="3">
+ <expression>http://musicbrainz.org/artist/(.+)</expression>
+ </RegExp>
+ </NfoUrl>
+ <CreateArtistSearchUrl dest="3">
+ <RegExp input="$$1" output="&lt;url&gt;http://search.musicbrainz.org/ws/2/artist/?fmt=xml&amp;query=artist:&quot;$$4&quot;&amp;limit=100&lt;/url&gt;" dest="3">
+ <RegExp input="$$1" output="\1" dest="4">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="6">
+ <expression noclean="1">(.+)(?:Ft%2e|Feat%2e|Ft.|Feat.|%20and%20)</expression>
+ </RegExp>
+ <RegExp input="$$6" output="\1" dest="4">
+ <expression>(.+)</expression>
+ </RegExp>
+ <expression/>
+ </RegExp>
+ </CreateArtistSearchUrl>
+ <GetArtistSearchResults dest="8">
+ <RegExp input="$$5" output="&lt;results&gt;\1&lt;/results&gt;" dest="8">
+ <RegExp input="$$1" output="&lt;entity&gt;&lt;title&gt;\2&lt;/title&gt;&lt;genre&gt;\7&lt;/genre&gt;&lt;url cache=&quot;mb-\1-artist.xml&quot;&gt;http://www.musicbrainz.org/ws/2/artist/\1?inc=url-rels&lt;/url&gt;&lt;/entity&gt;" dest="9">
+ <expression repeat="yes" noclean="1">artist ext:score=&quot;[^&quot;]*&quot;(?:\stype=&quot;[^&quot;]*&quot;)* id=&quot;([^&quot;]*)&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)?(&lt;gender&gt;[^&lt;]*&lt;/gender&gt;)?(&lt;country&gt;[^&lt;]*&lt;/country&gt;)?(&lt;disambiguation&gt;([^&lt;]*))?</expression>
+ </RegExp>
+ <RegExp input="$$9" output="\1" dest="5">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <expression noclean="1"/>
+ </RegExp>
+ </GetArtistSearchResults>
+ <GetArtistDetails dest="3" clearbuffers="no">
+ <RegExp input="$$5" output="&lt;details&gt;\1&lt;/details&gt;" dest="3">
+ <!--MBID - Artist-->
+ <RegExp input="$$1" output="\1" dest="8">
+ <expression noclean="1">&lt;artist(?:\stype=&quot;[^&quot;]*&quot;)* id=&quot;([^&quot;]*)&quot;&gt;&lt;name&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <!--AMGID - Artist-->
+ <RegExp input="$$1" output="\2" dest="9">
+ <expression noclean="1">&gt;&lt;relation type=&quot;allmusic&quot;&gt;&lt;target&gt;http://(www.)?allmusic.com/artist/([^&lt;]*)</expression>
+ </RegExp>
+ <RegExp input="$$8" conditional="fanarttvthumbs" output="&lt;chain function=&quot;GetFanartTvArtistThumbsByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression/>
+ </RegExp>
+ <RegExp input="$$8" conditional="htbthumbs" output="&lt;chain function=&quot;GetHTBThumbsByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression/>
+ </RegExp>
+ <RegExp input="$$8" conditional="lastfmartistthumbs" output="&lt;chain function=&quot;GetLastFMArtistThumbsByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression/>
+ </RegExp>
+ <RegExp input="$$8" conditional="fanarttvfanart" output="&lt;chain function=&quot;GetFanartTvArtistFanartsByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression/>
+ </RegExp>
+ <RegExp input="$$8" conditional="htbfanart" output="&lt;chain function=&quot;GetHTBFanartByMBID&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression/>
+ </RegExp>
+ <RegExp input="$$9" output="&lt;chain function=&quot;GetAMGData&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp input="$$9" output="&lt;chain function=&quot;AMGFallback&quot;&gt;\1&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">^$</expression>
+ </RegExp>
+ <RegExp input="$INFO[discogsource]" output="&lt;chain function=&quot;GetMBDiscographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>MusicBrainz</expression>
+ </RegExp>
+ <RegExp input="$INFO[lifespansource]" output="&lt;chain function=&quot;GetMBLafeSpanByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>MusicBrainz</expression>
+ </RegExp>
+ <RegExp input="$INFO[biogsource]" output="&lt;chain function=&quot;GetLastFMBiographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[discogsource]" output="&lt;chain function=&quot;GetLastFMDiscographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[genressource]" output="&lt;chain function=&quot;GetLastFMArtistGenresByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[stylessource]" output="&lt;chain function=&quot;GetLastFMArtistStylesByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="5+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <expression noclean="1"/>
+ </RegExp>
+ </GetArtistDetails>
+
+ <GetAMGData dest="5" clearbuffers="no">
+ <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$$1" output="\1" dest="9">
+ <expression/>
+ </RegExp>
+ <RegExp input="" output="" dest="2">
+ <expression />
+ </RegExp>
+ <RegExp input="$INFO[discogsource]" output="&lt;chain function=&quot;GetAMGDiscographyByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[lifespansource]" output="&lt;chain function=&quot;GetAMGArtistLifeSpanByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[biogsource]" output="&lt;chain function=&quot;GetAMGBiographyByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[genressource]" output="&lt;chain function=&quot;GetAMGArtistGenresByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[stylessource]" output="&lt;chain function=&quot;GetAMGArtistStylesByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[moodssource]" output="&lt;chain function=&quot;GetAMGArtistMoodsByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$INFO[yearsasource]" output="&lt;chain function=&quot;GetAMGArtistYearsActiveByAMGID&quot;&gt;$$9&lt;/chain&gt;" dest="2+">
+ <expression>allmusic.com</expression>
+ </RegExp>
+ <RegExp input="$$9" conditional="allmusicartistthumbs" output="&lt;chain function=&quot;GetAMGArtistThumbsByAMGID&quot;&gt;\1&lt;/chain&gt;" dest="2+">
+ <expression/>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetAMGData>
+
+ <AMGFallback dest="5" clearbuffers="no">
+ <RegExp input="$$11" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+ <RegExp input="$INFO[biogfbsource]" output="&lt;chain function=&quot;GetLastFMBiographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[discogfbsource]" output="&lt;chain function=&quot;GetLastFMDiscographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[discogfbsource]" output="&lt;chain function=&quot;GetMBDiscographyByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>MusicBrainz</expression>
+ </RegExp>
+ <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetLastFMArtistGenresByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[stylesfbsource]" output="&lt;chain function=&quot;GetLastFMArtistStylesByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>last.fm</expression>
+ </RegExp>
+ <RegExp input="$INFO[lifespanfbsource]" output="&lt;chain function=&quot;GetMBLafeSpanByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="11+">
+ <expression>MusicBrainz</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </AMGFallback>
+
+</scraper>
View
37 addons/metadata.artists.universal/changelog.txt
@@ -0,0 +1,37 @@
+[B]2.0.6[/B]
+Fixed: accommodate new Frodo style URL encoding
+
+[B]2.0.5[/B]
+Removed: '&' sign from artist splitter
+
+[B]2.0.4[/B]
+Improved: further improve search results for artists with almost no data
+
+[B]2.0.3[/B]
+Improved: search results are now return artists with almost no data
+
+[B]2.0.2[/B]
+Fixed: artists won't find with 'and' in their name
+
+[B]2.0.1[/B]
+Fixed: potential crashes due to infinite loop
+
+[B]2.0.0[/B]
+Added: Fallback per field
+Added: scraping in case of multiple artists (feat., ft., &, and)
+Added: other improvements
+
+[B]1.2.1[/B]
+Added: Enable all source for artwork by default
+
+[B]1.2.0[/B]
+Added: extra options for Artist Biography
+
+[B]1.1.1[/B]
+Added: handling of new format of allmusic link
+
+[B]1.1.0[/B]
+Added: language setting for last.fm artist biography
+
+[B]1.0.0[/B]
+Initial version
View
BIN  addons/metadata.artists.universal/icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
24 addons/metadata.artists.universal/resources/language/English/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<strings>
+ <string id="30000">Enable Artist Fanarts from HTBackdrops.com</string>
+ <string id="30001">Enable Artist Thumbs from allmusic.com</string>
+ <string id="30002">Enable Artist Thumbs from last.fm</string>
+ <string id="30003">Enable Artist Thumbs from HTBackdrops.com</string>
+ <string id="30004">Enable Artist Fanarts from fanart.tv</string>
+ <string id="30005">Enable Artist Thumbs from fanart.tv</string>
+ <string id="30006">Get Artist Biography from</string>
+ <string id="30007">Artwork</string>
+ <string id="30008">Get Artist Discography from</string>
+ <string id="30009">Get Artist Genres from</string>
+ <string id="30010">Get Artist Styles from</string>
+ <string id="30011">Get Artist Life-Span from</string>
+ <string id="30012">Get Artist Moods from</string>
+ <string id="30014">Get Artist Years Active from</string>
+ <string id="30015"> Preferred Language</string>
+ <string id="30016">Fallback to Artist Biography from</string>
+ <string id="30017">Fallback to Artist Discography from</string>
+ <string id="30018">Fallback to Artist Genres from</string>
+ <string id="30019">Fallback to Artist Styles from</string>
+ <string id="30020">Fallback to Artist Life-Span from</string>
+ <string id="30021">Fallbacks</string>
+</strings>
View
37 addons/metadata.artists.universal/resources/settings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings>
+ <category label="128">
+ <setting label="30006" type="labelenum" values="last.fm|None" id="biogsource" default="last.fm"/>
+ <setting label="30015" type="labelenum" values="en|de|es|fr|it|jp|pl|pt|ru|sv|tr|zh" id="lastfmlanguage" default="en" visible="eq(-1,0)"/>
+ <setting type="sep"/>
+ <setting label="30008" type="labelenum" values="last.fm|MusicBrainz|allmusic.com|None" id="discogsource" default="MusicBrainz"/>
+ <setting type="sep"/>
+ <setting label="30009" type="labelenum" values="last.fm|allmusic.com|None" id="genressource" default="last.fm"/>
+ <setting label="30010" type="labelenum" values="last.fm|allmusic.com|None" id="stylessource" default="last.fm"/>
+ <setting label="30011" type="labelenum" values="allmusic.com|MusicBrainz|None" id="lifespansource" default="allmusic.com"/>
+ <setting label="30012" type="labelenum" values="allmusic.com|None" id="moodssource" default="allmusic.com"/>
+ <setting label="30014" type="labelenum" values="allmusic.com|None" id="yearsasource" default="allmusic.com"/>
+ </category>
+
+ <category label="30021">
+ <setting label="30016" type="labelenum" values="last.fm|None" id="biogfbsource" default="None"/>
+ <setting label="30015" type="labelenum" values="en|de|es|fr|it|jp|pl|pt|ru|sv|tr|zh" id="lastfmlanguage" default="en" visible="eq(-1,0)"/>
+ <setting type="sep"/>
+ <setting label="30017" type="labelenum" values="last.fm|MusicBrainz|None" id="discogfbsource" default="None" visible="false"/>
+ <setting label="30018" type="labelenum" values="last.fm|allmusic.com|None" id="genresfbsource" default="None"/>
+ <setting label="30019" type="labelenum" values="last.fm|allmusic.com|None" id="stylesfbsource" default="None"/>
+ <setting label="30020" type="labelenum" values="MusicBrainz|allmusic.com|None" id="lifespanfbsource" default="None"/>
+ </category>
+
+ <category label="30007">
+ <setting type="lsep" label="Thumb Sources"/>
+ <setting label="30005" type="bool" id="fanarttvthumbs" default="true"/>
+ <setting label="30003" type="bool" id="htbthumbs" default="true"/>
+ <setting label="30002" type="bool" id="lastfmartistthumbs" default="true"/>
+ <setting label="30001" type="bool" id="allmusicartistthumbs" default="true"/>
+ <setting type="lsep" label="Fanart Sources"/>
+ <setting label="30004" type="bool" id="fanarttvfanart" default="true"/>
+ <setting label="30000" type="bool" id="htbfanart" default="true"/>
+ </category>
+
+</settings>
View
32 addons/metadata.musicvideos.last.fm/addon.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<addon id="metadata.musicvideos.last.fm"
+ name="Last.fm for Music Videos"
+ version="1.0.0"
+ provider-name="Team XBMC">
+ <requires>
+ <import addon="xbmc.metadata" version="1.0"/>
+ <import addon="metadata.common.last.fm" version="1.3.2"/>
+ <import addon="metadata.common.fanart.tv" version="1.0.1"/>
+ </requires>
+ <extension point="xbmc.metadata.scraper.musicvideos"
+ language="en"
+ library="lastfmmusicvideos.xml"/>
+ <extension point="xbmc.addon.metadata">
+ <summary lang="bg">Сваля инф. за музикални клипове от Last.fm</summary>
+ <summary lang="en">Last.fm Music Video Scraper</summary>
+ <summary lang="fi">Last.fm musiikkivideotietojen lataaja</summary>
+ <summary lang="hu">Last.fm videóklip leolvasó</summary>
+ <summary lang="kr">야후! 뮤직 비디오 스크래퍼</summary>
+ <summary lang="pl">Scraper teledysków Last.fm</summary>
+ <summary lang="pt">Scraper de música Last.fm</summary>
+ <summary lang="se">Skrapa för Last.fm musik</summary>
+ <description lang="bg">Сваля информация за музикални клипове</description>
+ <description lang="en">Download Music Video information</description>
+ <description lang="fi">Lataa musiikkivideoiden tiedot</description>
+ <description lang="hu">Videóklip információk letöltése a Last.fm webhelyről</description>
+ <description lang="kr">뮤직 비디오 정보 다운로드</description>
+ <description lang="pl">Pobieraj informacje o teledyskach z last.fm</description>
+ <description lang="pt">Descarregar informação de filmes de last.fm</description>
+ <description lang="se">Ladda ner musikvideoinformation från last.fm</description>
+ </extension>
+</addon>
View
BIN  addons/metadata.musicvideos.last.fm/icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
63 addons/metadata.musicvideos.last.fm/lastfmmusicvideos.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scraper framework="1.1" date="2012-06-10">
+ <CreateSearchUrl dest="3">
+ <RegExp input="$$1" output="&lt;url cache=&quot;lastfmm-\2.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=track.getinfo&amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;artist=\1&amp;track=\2&lt;/url&gt;" dest="3">
+ <expression trim="1,2">(.+)%20%20%20(.+)</expression>
+ </RegExp>
+ </CreateSearchUrl>
+ <GetSearchResults dest="3">
+ <RegExp input="$$5" output="&lt;results&gt;\1&lt;/results&gt;" dest="3">
+ <RegExp input="$$1" output="\1" dest="6">
+ <expression>&lt;/id&gt;\s*&lt;name&gt;([^&lt;]*).*?&lt;artist&gt;\s*&lt;name&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="\2" dest="7">
+ <expression>&lt;/id&gt;\s*&lt;name&gt;([^&lt;]*).*?&lt;artist&gt;\s*&lt;name&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;entity&gt;&lt;title&gt;$$7 - $$6&lt;/title&gt;&lt;url cache=&quot;lastfmm-\1.xml&quot;&gt;http://ws.audioscrobbler.com/2.0/?method=track.getinfo&amp;api_key=71e468a84c1f40d4991ddccc46e40f1b&amp;artist=\2&amp;track=\1&lt;/url&gt;&lt;/entity&gt;" dest="5">
+ <expression encode="1,2">&lt;/id&gt;\s*&lt;name&gt;([^&lt;]*).*?&lt;artist&gt;\s*&lt;name&gt;([^&lt;]*)</expression>
+ </RegExp>
+ <expression noclean="1" />
+ </RegExp>
+ </GetSearchResults>
+ <GetDetails dest="3">
+ <RegExp input="$$5" output="&lt;details&gt;\1&lt;/details&gt;" dest="3">
+ <RegExp input="$$1" output="\1" dest="4">
+ <expression>&lt;/title&gt;\s*&lt;mbid&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="7">
+ <expression>&lt;album[^&gt;]*&gt;\s*&lt;artist&gt;\s*[^&lt;]*&lt;/artist&gt;\s*&lt;title&gt;([^&lt;]*)&lt;/title&gt;</expression>
+ </RegExp>
+ <RegExp input="$$1" output="\1" dest="8">
+ <expression>&lt;artist&gt;\s*&lt;name&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;title&gt;\1&lt;/title&gt;" dest="5">
+ <expression>&lt;name&gt;([^&lt;]*)&lt;</expression>
+ </RegExp>
+ <RegExp input="$$8" output="&lt;artist&gt;\1&lt;/artist&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <RegExp input="$$7" output="&lt;album&gt;\1&lt;/album&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <RegExp input="$$4" output="&lt;chain function=&quot;GetLastFMAlbumDateByAlbumAndArtist&quot;&gt;$$7::$$8::$$7::$$8&lt;/chain&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <RegExp input="$$1" output="&lt;plot&gt;\1&lt;/plot&gt;" dest="5+">
+ <expression fixchars="1">&lt;content&gt;&lt;!\[CDATA\[(.*?)(User-|\]\])</expression>
+ </RegExp>
+ <RegExp input="$$1" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="5+">
+ <expression repeat="yes">&lt;tag&gt;\s*&lt;name&gt;([^&lt;]*)&lt;/name&gt;</expression>
+ </RegExp>
+ <RegExp conditional="lastfmalbumthumbs" input="$$1" output="&lt;thumb&gt;\1&lt;/thumb&gt;" dest="5+">
+ <expression>&lt;image size="extralarge"&gt;\s*([^&lt;]*)\s*&lt;/image&gt;</expression>
+ </RegExp>
+ <RegExp conditional="fanarttvalbumthumbs" input="$$1" output="&lt;chain function=&quot;GetFanartTvAlbumThumbsByMBID&quot;&gt;$$4&lt;/chain&gt;" dest="5+">
+ <expression noclean="1">(.+)</expression>
+ </RegExp>
+ <RegExp conditional="lastfmalbumthumbs" input="$$1" output="&lt;chain function=&quot;GetLastFMAlbumThumbs&quot;&gt;$$7::$$8::$$7::$$8&lt;/chain&gt;" dest="5+">
+ <expression noclean="1" />
+ </RegExp>
+ <expression noclean="1"/>
+ </RegExp>
+ </GetDetails>
+</scraper>
View
5 addons/metadata.musicvideos.last.fm/resources/language/English/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<strings>
+ <string id="30000">Grab album thumbs from fanart.tv</string>
+ <string id="30001">Grab album thumbs from Last.fm</string>
+</strings>
View
5 addons/metadata.musicvideos.last.fm/resources/settings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings>
+ <setting label="30000" type="bool" id="fanarttvalbumthumbs" default="true"/>
+ <setting label="30001" type="bool" id="lastfmalbumthumbs" default="true"/>
+</settings>
Please sign in to comment.
Something went wrong with that request. Please try again.