diff options
40 files changed, 720 insertions, 587 deletions
diff --git a/addons/metadata.album.universal/addon.xml b/addons/metadata.album.universal/addon.xml index 8875ed2b29..5989103d0a 100644 --- a/addons/metadata.album.universal/addon.xml +++ b/addons/metadata.album.universal/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.album.universal" name="Universal Album Scraper" - version="3.1.3" + version="3.1.4" provider-name="Olympia, Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> diff --git a/addons/metadata.album.universal/albumuniversal.xml b/addons/metadata.album.universal/albumuniversal.xml index c913d7e3d8..c16246d88f 100644 --- a/addons/metadata.album.universal/albumuniversal.xml +++ b/addons/metadata.album.universal/albumuniversal.xml @@ -27,10 +27,10 @@ <GetAlbumSearchResults dest="8"> <RegExp input="$$5" output="<results sorted="yes">\1</results>" dest="8"> <RegExp input="$$1" output="<entity><year>\6-\5-T#\7</year><artist>\4</artist><title>\3</title><relevance scale="100">\2</relevance><url cache="mb-\1-album.xml">$INFO[mbsite]/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings</url></entity>" dest="5"> - <expression repeat="yes">release\sid="([^"]*)"[^:]*:score="(\d*)"><title>([^<]*)</title><status>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging>[^<]*</packaging>)*<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="Album"\stype-id="[^"]*"><title>[^<]*</title>(?:<disambiguation>[^<]*</disambiguation>)*(?:<primary-type\sid="[^"]*">[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type\sid="[^"]*">[^<]*</secondary-type>)+</secondary-type-list>)*</release-group>(?:<date>(\d{4})[^<]*</date>)*(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+).*?</release></expression> + <expression repeat="yes">release\sid="([^"]*)"[^:]*:score="(\d*)"><title>([^<]*)</title><status\sid[^>]*>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging[^<]*</packaging>)*<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="Album"\stype-id="[^"]*"><title>[^<]*</title>(?:<disambiguation>[^<]*</disambiguation>)*(?:<primary-type\sid="[^"]*">[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type\sid="[^"]*">[^<]*</secondary-type>)+</secondary-type-list>)*</release-group>(?:<date>(\d{4})[^<]*</date>)*(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+).*?</release></expression> </RegExp> <RegExp input="$$1" output="<entity><year>\6-\5-T#\7</year><artist>\4</artist><title>\3</title><relevance scale="100">\2</relevance><url cache="mb-\1-album.xml">$INFO[mbsite]/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings</url></entity>" dest="5+"> - <expression repeat="yes">release\sid="([^"]*)"[^:]*:score="(\d*)"><title>([^<]*)</title><status>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging>[^<]*</packaging>)*<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="[^"]*"\stype-id="[^"]*"><title>[^<]*</title>(?:<disambiguation>[^<]*</disambiguation>)*(?:<primary-type\sid="[^"]*">[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type\sid="[^"]*">[^<]*</secondary-type>)+</secondary-type-list>)*</release-group>(?:<date>(\d{4})[^<]*</date>)*(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+).*?</release></expression> + <expression repeat="yes">release\sid="([^"]*)"[^:]*:score="(\d*)"><title>([^<]*)</title><status\sid[^>]*>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging[^<]*</packaging>)*<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="[^"]*"\stype-id="[^"]*"><title>[^<]*</title>(?:<disambiguation>[^<]*</disambiguation>)*(?:<primary-type\sid="[^"]*">[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type\sid="[^"]*">[^<]*</secondary-type>)+</secondary-type-list>)*</release-group>(?:<date>(\d{4})[^<]*</date>)*(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+).*?</release></expression> </RegExp> <expression noclean="1" /> </RegExp> diff --git a/addons/metadata.album.universal/changelog.txt b/addons/metadata.album.universal/changelog.txt index 2734abbdcf..f4579233eb 100644 --- a/addons/metadata.album.universal/changelog.txt +++ b/addons/metadata.album.universal/changelog.txt @@ -1,3 +1,6 @@ +[B]3.1.4[/B] +Fixed: search results again + [B]3.1.3[/B] Fixed: search results diff --git a/addons/metadata.common.imdb.com/addon.xml b/addons/metadata.common.imdb.com/addon.xml index 1324914d7a..152e3ae514 100644 --- a/addons/metadata.common.imdb.com/addon.xml +++ b/addons/metadata.common.imdb.com/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.common.imdb.com" name="IMDB Scraper Library" - version="3.1.5" + version="3.1.6" provider-name="Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> diff --git a/addons/metadata.common.imdb.com/changelog.txt b/addons/metadata.common.imdb.com/changelog.txt index 3dea2f0928..c7ae848088 100644 --- a/addons/metadata.common.imdb.com/changelog.txt +++ b/addons/metadata.common.imdb.com/changelog.txt @@ -1,3 +1,6 @@ +[B]3.1.6[/B] +- fixed: IMDb outline as plot + [B]3.1.5[/B] - changed: switch to https diff --git a/addons/metadata.common.imdb.com/imdb.xml b/addons/metadata.common.imdb.com/imdb.xml index c328d8871b..c15cab7032 100644 --- a/addons/metadata.common.imdb.com/imdb.xml +++ b/addons/metadata.common.imdb.com/imdb.xml @@ -197,13 +197,13 @@ </GetIMDBOutlineToPlotById> <ParseIMDBOutlineToPlot dest="5"> <RegExp input="$$2" output="<details>\1</details>" dest="5"> - <RegExp input="$$1" output="<outline>\1</outline>" dest="2"> + <RegExp input="$$1" output="<plot>\1</plot>" dest="2"> <expression fixchars="1" trim="1"><div class="summary_text">(.+?)<div\sclass</expression> </RegExp> - <RegExp input="$$1" output="<outline>\1</outline>" dest="2"> + <RegExp input="$$1" output="<plot>\1</plot>" dest="2"> <expression fixchars="1" trim="1"><div class="summary_text">(.+?)<a\shref="(.+?)=tt_ov_pl"</expression> </RegExp> - <RegExp input="$$1" output="<outline>\1</outline>" dest="2"> + <RegExp input="$$1" output="<plot>\1</plot>" dest="2"> <expression fixchars="1" trim="1"><div class="summary_text">(.+?)<a\shref="[^"]*"\s*>Add\sa\sPlot</expression> </RegExp> <expression noclean="1" /> diff --git a/addons/metadata.common.themoviedb.org/addon.xml b/addons/metadata.common.themoviedb.org/addon.xml index 876658135b..3c36279f7e 100644 --- a/addons/metadata.common.themoviedb.org/addon.xml +++ b/addons/metadata.common.themoviedb.org/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.common.themoviedb.org" name="The Movie Database Scraper Library" - version="3.2.3" + version="3.2.13" provider-name="Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> diff --git a/addons/metadata.common.themoviedb.org/tmdb.xml b/addons/metadata.common.themoviedb.org/tmdb.xml index 1429d41e01..484f10ce1f 100644 --- a/addons/metadata.common.themoviedb.org/tmdb.xml +++ b/addons/metadata.common.themoviedb.org/tmdb.xml @@ -9,7 +9,7 @@ <RegExp input="$$1" output="\1" dest="17"> <expression>.+::.+::(.+)?</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBCertifications" cache="tmdb-cert-\1.json">https://api.tmdb.org/3/movie/\1/releases?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBCertifications" cache="tmdb-cert-\1.json">https://api.themoviedb.org/3/movie/\1/releases?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression>(.+)::(.+)::(.+)?</expression> </RegExp> <expression noclean="1" /> @@ -32,11 +32,11 @@ <RegExp input="$$1" output="\1::\2" dest="16"> <expression>(.+)::(.+)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBTitle" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBTitle" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <RegExp input="$$1" output="$$2" dest="5"> - <RegExp input="$$1" output="<url function="ParseTMDBTitle" cache="tmdb-en-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> + <RegExp input="$$1" output="<url function="ParseTMDBTitle" cache="tmdb-en-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> <expression>(.+)::</expression> </RegExp> <expression>(.+)::Keep Original</expression> @@ -64,7 +64,7 @@ <RegExp input="$$1" output="\1" dest="8"> <expression encode="1">(.+)::.+</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBPlot" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBPlot" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <expression noclean="1" /> @@ -75,7 +75,7 @@ <RegExp input="$$1" output="\1" dest="9"> <expression clear="yes" fixchars="1">"overview":"(.*?)","</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-en-$$8.json">https://api.tmdb.org/3/movie/$$8?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-en-$$8.json">https://api.themoviedb.org/3/movie/$$8?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> <expression>^$</expression> </RegExp> <RegExp input="$$9" output="<plot>\1</plot>" dest="2"> @@ -98,7 +98,7 @@ <RegExp input="$$1" output="\1" dest="8"> <expression>(.+)::.+</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBTagline" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBTagline" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <expression noclean="1" /> @@ -109,7 +109,7 @@ <RegExp input="$$1" output="\1" dest="9"> <expression clear="yes" fixchars="1">"tagline":"(.*?)","</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseFallbackTMDBTagline" cache="tmdb-en-$$8.json">https://api.tmdb.org/3/movie/$$8?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseFallbackTMDBTagline" cache="tmdb-en-$$8.json">https://api.themoviedb.org/3/movie/$$8?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> <expression>^$</expression> </RegExp> <RegExp input="$$9" output="<tagline>\1</tagline>" dest="2"> @@ -132,7 +132,7 @@ <RegExp input="$$1" output="\1" dest="8"> <expression clear="yes" noclean="1" /> </RegExp> - <RegExp input="$$8" output="<url function="ParseTMDBTags" >https://api.tmdb.org/3/movie/\1/keywords?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$8" output="<url function="ParseTMDBTags" >https://api.themoviedb.org/3/movie/\1/keywords?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> <expression noclean="1" /> @@ -155,7 +155,7 @@ <RegExp input="$$1" output="\2" dest="10"> <expression>(.+)::(.+)</expression> </RegExp> - <RegExp input="$$8" output="<url function="GetTMDBSetID" cache="tmdb-$$10-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$10</url>" dest="5"> + <RegExp input="$$8" output="<url function="GetTMDBSetID" cache="tmdb-$$10-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$10</url>" dest="5"> <expression /> </RegExp> <expression noclean="1" /> @@ -166,10 +166,10 @@ <RegExp input="$$1" output="\1" dest="9"> <expression clear="yes" noclean="1">"belongs_to_collection":\{"id":([0-9]+),"name":"([^"]*)</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.tmdb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> <expression>(.+)</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseTMDBSetOutline" cache="tmdbset-$$10-\1.json">https://api.tmdb.org/3/collection/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$10&amp;append_to_response=images&amp;include_image_language=$$10,en,null</url>" dest="2+"> + <RegExp input="$$9" output="<url function="ParseTMDBSetOutline" cache="tmdbset-$$10-\1.json">https://api.themoviedb.org/3/collection/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$10&amp;append_to_response=images&amp;include_image_language=$$10,en,null</url>" dest="2+"> <expression>(.+)</expression> </RegExp> <expression noclean="1" /> @@ -213,7 +213,7 @@ </RegExp> <expression noclean="1" /> </RegExp> - <RegExp input="$$9" output="<url function="ParseFallbackTMDBSetOutline" cache="tmdbset-en-$$6.json">https://api.tmdb.org/3/collection/$$6?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en&amp;append_to_response=images&amp;include_image_language=$$10,en,null</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseFallbackTMDBSetOutline" cache="tmdbset-en-$$6.json">https://api.themoviedb.org/3/collection/$$6?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en&amp;append_to_response=images&amp;include_image_language=$$10,en,null</url>" dest="2"> <expression>^$</expression> </RegExp> <expression noclean="1" /> @@ -251,10 +251,10 @@ <GetTMDBCastByIdChain dest="4"> <!-- Expected chaining format= tmdb_id--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.tmdb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBCast" cache="tmdb-cast-\1.json">https://api.tmdb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5+"> + <RegExp input="$$1" output="<url function="ParseTMDBCast" cache="tmdb-cast-\1.json">https://api.themoviedb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5+"> <expression /> </RegExp> <expression noclean="1" /> @@ -265,11 +265,17 @@ <RegExp input="$$1" output="\1" dest="7"> <expression clear="yes" noclean="1">"cast":\[([^\]]*)</expression> </RegExp> - <RegExp input="$$7" output="<actor><name>\2</name><role>\1</role><order>\3</order><thumb>$$20original\4</thumb></actor>" dest="2"> - <expression repeat="yes" fixchars="1,2">"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","gender":[0-9]*,"id":[0-9]*,"name":"([^"]*)","order":([0-9]*),"profile_path":"([^"]*)"</expression> + <RegExp input="$$7" output="<actor><name>\2</name><role>\3</role><order>\4</order><thumb>$$20original\1</thumb></actor>" dest="2"> + <expression repeat="yes" fixchars="1,2">"known_for_department":"[^"]*","original_name":"[^"]*","popularity":[^"]*"profile_path":"([^"]*)","name":"([^"]*)","cast_id":[0-9]*,"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*)}</expression> </RegExp> - <RegExp input="$$7" output="<actor><name>\2</name><role>\1</role><order>\3</order></actor>" dest="2+"> - <expression repeat="yes" fixchars="1,2">"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","gender":[0-9]*,"id":[0-9]*,"name":"([^"]*)","order":([0-9]*),"profile_path":null</expression> + <RegExp input="$$7" output="<actor><name>\1</name><role>\2</role><order>\3</order></actor>" dest="2+"> + <expression repeat="yes" fixchars="1,2">"known_for_department":"[^"]*","original_name":"[^"]*","popularity":[^"]*"profile_path":null,"name":"([^"]*)","cast_id":[0-9]*,"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*)}</expression> + </RegExp> + <RegExp input="$$7" output="<actor><name>\1</name><role>\3</role><order>\4</order><thumb>$$20original\2</thumb></actor>" dest="2+"> + <expression repeat="yes" fixchars="1,2">"known_for_department":"[^"]*","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":"([^"]*)","cast_id":[0-9]*,"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*)}</expression> + </RegExp> + <RegExp input="$$7" output="<actor><name>\1</name><role>\2</role><order>\3</order></actor>" dest="2+"> + <expression repeat="yes" fixchars="1,2">"known_for_department":"[^"]*","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":null,"cast_id":[0-9]*,"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*)}</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -277,7 +283,7 @@ <GetTMDBDirectorsByIdChain dest="4"> <!-- Expected chaining format= tmdb_id--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBDirectors" cache="tmdb-cast-\1.json">https://api.tmdb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBDirectors" cache="tmdb-cast-\1.json">https://api.themoviedb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> <expression noclean="1" /> @@ -285,11 +291,8 @@ </GetTMDBDirectorsByIdChain> <ParseTMDBDirectors dest="5"> <RegExp input="$$2" output="<details>\1</details>" dest="5"> - <RegExp input="$$1" output="\1" dest="7"> - <expression clear="yes" noclean="1">"crew":\[([^\]]*)</expression> - </RegExp> - <RegExp input="$$7" output="<director>\1</director>" dest="2"> - <expression repeat="yes" fixchars="1">"department":"Directing","gender":[0-9]*,"id":[0-9]*,"job":"Director","name":"([^"]*)"</expression> + <RegExp input="$$1" output="<director>\1</director>" dest="2"> + <expression repeat="yes" fixchars="1">"name":"([^"]*)"(?=[^\}]*?"Director")</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -297,7 +300,7 @@ <GetTMDBWitersByIdChain dest="4"> <!-- Expected chaining format= tmdb_id--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBWriters" cache="tmdb-cast-\1.json">https://api.tmdb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBWriters" cache="tmdb-cast-\1.json">https://api.themoviedb.org/3/movie/\1/casts?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> <expression noclean="1" /> @@ -305,11 +308,17 @@ </GetTMDBWitersByIdChain> <ParseTMDBWriters dest="5"> <RegExp input="$$2" output="<details>\1</details>" dest="5"> - <RegExp input="$$1" output="\1" dest="7"> - <expression clear="yes" noclean="1">"crew":\[([^\]]*)</expression> + <RegExp input="$$1" output="<credits>\1</credits>" dest="2"> + <expression repeat="yes" fixchars="1">"name":"([^"]*)"(?=[^\}]*?"Screenplay")</expression> + </RegExp> + <RegExp input="$$1" output="<credits>\1</credits>" dest="2+"> + <expression repeat="yes" fixchars="1">"name":"([^"]*)"(?=[^\}]*?"Writer")</expression> + </RegExp> + <RegExp input="$$1" output="<credits>\1</credits>" dest="2+"> + <expression repeat="yes" fixchars="1">"name":"([^"]*)"(?=[^\}]*?"Teleplay")</expression> </RegExp> - <RegExp input="$$7" output="<credits>\1</credits>" dest="2"> - <expression repeat="yes" fixchars="1">"department":"Writing","gender":[0-9]*,"id":[0-9]*,"job":"(?:Screenplay|Writer|Author)?","name":"([^"]*)"</expression> + <RegExp input="$$1" output="<credits>\1</credits>" dest="2+"> + <expression repeat="yes" fixchars="1">"name":"([^"]*)"(?=[^\}]*?"Novel")</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -317,7 +326,7 @@ <GetTMDBGenresByIdChain dest="4"> <!-- Expected chaining format= tmdb_id::language--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBGenres" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBGenres" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <expression noclean="1" /> @@ -343,7 +352,7 @@ <RegExp input="$$1" output="\2" dest="11"> <expression>(.+)::([^\|]*)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBRating" cache="tmdb-$$11-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBRating" cache="tmdb-$$11-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11</url>" dest="5"> <expression>^(.+)::</expression> </RegExp> <expression noclean="1" /> @@ -369,7 +378,7 @@ <RegExp input="$$1" output="\2" dest="11"> <expression>(.+)::([^\|]*)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBRatings" cache="tmdb-$$11-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBRatings" cache="tmdb-$$11-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11</url>" dest="5"> <expression noclean="1">^((tt)?\d+)</expression> </RegExp> <RegExp input="$$1" output="default="true"" dest="3"> @@ -392,7 +401,7 @@ <GetTMDBStudioByIdChain dest="4"> <!-- Expected chaining format= tmdb_id::language_for_caching--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBStudio" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBStudio" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <expression noclean="1" /> @@ -412,7 +421,7 @@ <GetTMDBCountryByIdChain dest="4"> <!-- Expected chaining format= tmdb_id::language_for_caching--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBCountry" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBCountry" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <expression noclean="1" /> @@ -432,8 +441,8 @@ <GetTMDBTrailerByIdChain dest="4"> <!-- Expected chaining format= tmdb_id::language--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<url function="ParseTMDBTrailer" cache="tmdb-trailer-\2-\1.json">https://api.tmdb.org/3/movie/\1/trailers?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> - <expression>(.+)::(.+)</expression> + <RegExp input="$$1" output="<url function="ParseTMDBTrailer" cache="tmdb-trailer-\2-\1.json">https://api.themoviedb.org/3/movie/\1/trailers?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <expression>(.+)::(..)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -449,7 +458,7 @@ <RegExp input="$$7" output="<trailer>plugin://plugin.video.youtube/?action=play_video&amp;videoid=\1</trailer>" dest="9"> <expression noclean="1">"source":"([^"]*)","type":"Trailer"</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseTMDBEnTrailer" cache="tmdb-trailer-en-$$8.json">https://api.tmdb.org/3/movie/$$8/trailers?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseTMDBEnTrailer" cache="tmdb-trailer-en-$$8.json">https://api.themoviedb.org/3/movie/$$8/trailers?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="2"> <expression>^$</expression> </RegExp> <RegExp input="$$9" output="$$9" dest="2"> @@ -469,7 +478,7 @@ <RegExp input="$$7" output="<trailer>plugin://plugin.video.youtube/?action=play_video&amp;videoid=\1</trailer>" dest="9"> <expression noclean="1">"source":"([^"]*)","type":"Trailer"</expression> </RegExp> - <RegExp input="$$9" output="<url function="ParseTMDBAllTrailer" cache="tmdb-trailer-$$8.json">https://api.tmdb.org/3/movie/$$8/trailers?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> + <RegExp input="$$9" output="<url function="ParseTMDBAllTrailer" cache="tmdb-trailer-$$8.json">https://api.themoviedb.org/3/movie/$$8/trailers?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> <expression>^$</expression> </RegExp> <RegExp input="$$9" output="$$9" dest="2"> @@ -493,13 +502,13 @@ <GetTMDBFanartByIdChain dest="4"> <!-- Expected chaining format= tmdb_id::poster_language--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> <RegExp input="$$1" output="\2" dest="11"> - <expression>(.+)::(.+)</expression> + <expression>(.+)::(..)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.tmdb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBFanart" cache="tmdb-images-\1.json">https://api.tmdb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> - <expression>(.+)::(.+)</expression> + <RegExp input="$$1" output="<url function="ParseTMDBFanart" cache="tmdb-images-\1.json">https://api.themoviedb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> + <expression>(.+)::(..)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -519,16 +528,16 @@ <GetTMDBLandscapeByIdChain clearbuffers="no" dest="4"> <!-- Expected chaining format= tmdb_id::language--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> <RegExp input="$$1" output="\2" dest="11"> - <expression>(.+)::(.+)</expression> + <expression>(.+)::(..)</expression> </RegExp> <RegExp input="$$1" output="\1" dest="13"> - <expression>(.+)::(.+)</expression> + <expression>(.+)::(..)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.tmdb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBLandscape" cache="tmdb-images-\1.json">https://api.tmdb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> - <expression>(.+)::(.+)</expression> + <RegExp input="$$1" output="<url function="ParseTMDBLandscape" cache="tmdb-images-\1.json">https://api.themoviedb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> + <expression>(.+)::(..)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -554,16 +563,16 @@ <GetTMDBThumbsByIdChain clearbuffers="no" dest="4"> <!-- Expected chaining format= tmdb_id::language--> <RegExp input="$$5" output="<details>\1</details>" dest="4"> <RegExp input="$$1" output="\2" dest="11"> - <expression>(.+)::(.+)</expression> + <expression>(.+)::(..)</expression> </RegExp> <RegExp input="$$1" output="\1" dest="13"> - <expression>(.+)::(.+)</expression> + <expression>(.+)::(..)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.tmdb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBThumbs" cache="tmdb-images-\1.json">https://api.tmdb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> - <expression>(.+)::(.+)</expression> + <RegExp input="$$1" output="<url function="ParseTMDBThumbs" cache="tmdb-images-\1.json">https://api.themoviedb.org/3/movie/\1/images?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$$11&amp;include_image_language=$$11,en,null</url>" dest="5+"> + <expression>(.+)::(..)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -588,7 +597,7 @@ <RegExp input="$$9" output="$$10" dest="2"> <expression>^$</expression> </RegExp> - <RegExp input="$$2" output="<url function="ParseFallbackTMDBThumbs">https://api.tmdb.org/3/movie/$$13/images?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> + <RegExp input="$$2" output="<url function="ParseFallbackTMDBThumbs">https://api.themoviedb.org/3/movie/$$13/images?api_key=f090bb54758cabf231fb605d3e3e0468</url>" dest="2"> <expression>^$</expression> </RegExp> <expression noclean="1" /> @@ -610,7 +619,7 @@ <ParseTMDBBaseImageURL clearbuffers="no" dest="4"> <RegExp input="$$5" output="<details>$$20</details>" dest="4"> <RegExp input="$$1" output="\1" dest="20"> - <expression>"images":\{"base_url":"([^"]*)"</expression> + <expression>"images":\{.*?"secure_base_url":"([^"]*)"</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -621,11 +630,11 @@ <RegExp input="$$1" output="\2" dest="16"> <expression>(.+)::(.+)</expression> </RegExp> - <RegExp input="$$1" output="<url function="ParseTMDBPremiered" cache="tmdb-\2-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBPremiered" cache="tmdb-\2-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=\2</url>" dest="5"> <expression>(.+)::(.+)</expression> </RegExp> <RegExp input="$$16" output="$$2" dest="5"> - <RegExp input="$$1" output="<url function="ParseTMDBPremiered" cache="tmdb-$INFO[tmdbcertcountry]-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[tmdbcertcountry]</url>" dest="2"> + <RegExp input="$$1" output="<url function="ParseTMDBPremiered" cache="tmdb-$INFO[tmdbcertcountry]-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[tmdbcertcountry]</url>" dest="2"> <expression/> </RegExp> <expression>Keep Original</expression> diff --git a/addons/metadata.themoviedb.org.python/addon.xml b/addons/metadata.themoviedb.org.python/addon.xml index 93fcb2f8a7..53af3d8d1a 100644 --- a/addons/metadata.themoviedb.org.python/addon.xml +++ b/addons/metadata.themoviedb.org.python/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.themoviedb.org.python" name="The Movie Database Python" - version="1.3.0+matrix.1" + version="1.3.1+matrix.1" provider-name="Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> @@ -11,14 +11,14 @@ library="python/scraper.py"/> <extension point="xbmc.addon.metadata"> <reuselanguageinvoker>true</reuselanguageinvoker> - <news>v1.3.0 (2020-10-04) + <news>v1.3.1 (2020-11-02) +- Change: simplify artwork selection options +- Fix: strip region to pick correct poster language + +v1.3.0 (2020-10-04) - Change: removed dependencies on requests, tmdbsimple, and trakt modules - Change: images now returned with initial API call instead of during fallback - Change: settings language for TMDb now use culture name (i.e. en-US) - required for direct API call - -v1.2.1 (2020-08-08) -- Fix: Prefer movies that exactly match search title and year -- Fix: Change 'landscape from TMDb' option disabled behavior to keep titled fanart </news> <summary lang="af_ZA">TMDB Fliek Skraper</summary> <summary lang="be_BY">TMDB Movie Scraper</summary> diff --git a/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdb.py b/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdb.py index 7ce9422daf..2852f9eaa3 100644 --- a/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdb.py +++ b/addons/metadata.themoviedb.org.python/python/lib/tmdbscraper/tmdb.py @@ -160,6 +160,9 @@ def _get_moviecollection(collection_id, language=None): return response def _parse_artwork(movie, collection, urlbases, language): + if language: + # Image languages don't have regional variants + language = language.split('-')[0] posters = [] landscape = [] fanart = [] diff --git a/addons/metadata.themoviedb.org.python/python/scraper.py b/addons/metadata.themoviedb.org.python/python/scraper.py index 8561d6d357..c976407a0b 100644 --- a/addons/metadata.themoviedb.org.python/python/scraper.py +++ b/addons/metadata.themoviedb.org.python/python/scraper.py @@ -12,7 +12,7 @@ from lib.tmdbscraper.traktratings import get_trakt_ratinginfo from scraper_datahelper import combine_scraped_details_info_and_ratings, \ combine_scraped_details_available_artwork, find_uniqueids_in_text, get_params from scraper_config import configure_scraped_details, PathSpecificSettings, \ - configure_fanarttv_artwork, configure_tmdb_artwork, is_fanarttv_configured + configure_tmdb_artwork, is_fanarttv_configured ADDON_SETTINGS = xbmcaddon.Addon() ID = ADDON_SETTINGS.getAddonInfo('id') @@ -85,6 +85,8 @@ def add_artworks(listitem, artworks): listitem.setAvailableFanart(fanart_to_set) def get_details(input_uniqueids, handle, settings): + if not input_uniqueids: + return False details = get_tmdb_scraper(settings).get_details(input_uniqueids) if not details: return False @@ -113,7 +115,6 @@ def get_details(input_uniqueids, handle, settings): settings.getSettingString('fanarttv_clientkey'), settings.getSettingString('fanarttv_language'), details['_info']['set_tmdbid']) - fanarttv_info = configure_fanarttv_artwork(fanarttv_info, settings) details = combine_scraped_details_available_artwork(details, fanarttv_info) details = configure_scraped_details(details, settings) @@ -144,7 +145,11 @@ def build_lookup_string(uniqueids): return json.dumps(uniqueids) def parse_lookup_string(uniqueids): - return json.loads(uniqueids) + try: + return json.loads(uniqueids) + except ValueError: + log("Can't parse this lookup string, is it from another add-on?\n" + uniqueids, xbmc.LOGWARNING) + return None def run(): params = get_params(sys.argv[1:]) diff --git a/addons/metadata.themoviedb.org.python/python/scraper_config.py b/addons/metadata.themoviedb.org.python/python/scraper_config.py index c39d4c9e64..76a042bcfa 100644 --- a/addons/metadata.themoviedb.org.python/python/scraper_config.py +++ b/addons/metadata.themoviedb.org.python/python/scraper_config.py @@ -30,23 +30,8 @@ def configure_tmdb_artwork(details, settings): return details -_fanarttv_arttypes = ['fanart', 'poster', 'clearlogo', 'clearart', 'discart', 'banner', 'landscape', 'keyart'] -_fanarttv_arttypes += ['set.' + t for t in _fanarttv_arttypes] -def configure_fanarttv_artwork(details, settings): - if 'available_art' not in details: - return details - art = details['available_art'] - for arttype in _fanarttv_arttypes: - if arttype in art and not settings.getSettingBool('enable_fanarttv_' + arttype): - del art[arttype] - - return details - def is_fanarttv_configured(settings): - for arttype in _fanarttv_arttypes: - if settings.getSettingBool('enable_fanarttv_' + arttype): - return True - return False + return settings.getSettingBool('enable_fanarttv_artwork') def _configure_rating_prefix(details, settings): if details['info'].get('mpaa'): diff --git a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po index f977ba8507..2f29815ab5 100644 --- a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po +++ b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po @@ -77,65 +77,5 @@ msgid "Fanart.tv personal API key (optional)" msgstr "" msgctxt "#30102" -msgid "Enable fanart from Fanart.tv" -msgstr "" - -msgctxt "#30103" -msgid "Enable poster from Fanart.tv" -msgstr "" - -msgctxt "#30104" -msgid "Enable clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30105" -msgid "Enable clearart from Fanart.tv" -msgstr "" - -msgctxt "#30106" -msgid "Enable discart from Fanart.tv" -msgstr "" - -msgctxt "#30107" -msgid "Enable banner from Fanart.tv" -msgstr "" - -msgctxt "#30108" -msgid "Enable landscape from Fanart.tv" -msgstr "" - -msgctxt "#30109" -msgid "Enable set fanart from Fanart.tv" -msgstr "" - -msgctxt "#30110" -msgid "Enable set poster from Fanart.tv" -msgstr "" - -msgctxt "#30111" -msgid "Enable set clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30112" -msgid "Enable set clearart from Fanart.tv" -msgstr "" - -msgctxt "#30113" -msgid "Enable set discart from Fanart.tv" -msgstr "" - -msgctxt "#30114" -msgid "Enable set banner from Fanart.tv" -msgstr "" - -msgctxt "#30115" -msgid "Enable set landscape from Fanart.tv" -msgstr "" - -msgctxt "#30116" -msgid "Enable keyart from Fanart.tv" -msgstr "" - -msgctxt "#30117" -msgid "Enable set keyart from Fanart.tv" +msgid "Enable artwork from Fanart.tv" msgstr "" diff --git a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_nz/strings.po b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_nz/strings.po index f977ba8507..2f29815ab5 100644 --- a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_nz/strings.po +++ b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_nz/strings.po @@ -77,65 +77,5 @@ msgid "Fanart.tv personal API key (optional)" msgstr "" msgctxt "#30102" -msgid "Enable fanart from Fanart.tv" -msgstr "" - -msgctxt "#30103" -msgid "Enable poster from Fanart.tv" -msgstr "" - -msgctxt "#30104" -msgid "Enable clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30105" -msgid "Enable clearart from Fanart.tv" -msgstr "" - -msgctxt "#30106" -msgid "Enable discart from Fanart.tv" -msgstr "" - -msgctxt "#30107" -msgid "Enable banner from Fanart.tv" -msgstr "" - -msgctxt "#30108" -msgid "Enable landscape from Fanart.tv" -msgstr "" - -msgctxt "#30109" -msgid "Enable set fanart from Fanart.tv" -msgstr "" - -msgctxt "#30110" -msgid "Enable set poster from Fanart.tv" -msgstr "" - -msgctxt "#30111" -msgid "Enable set clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30112" -msgid "Enable set clearart from Fanart.tv" -msgstr "" - -msgctxt "#30113" -msgid "Enable set discart from Fanart.tv" -msgstr "" - -msgctxt "#30114" -msgid "Enable set banner from Fanart.tv" -msgstr "" - -msgctxt "#30115" -msgid "Enable set landscape from Fanart.tv" -msgstr "" - -msgctxt "#30116" -msgid "Enable keyart from Fanart.tv" -msgstr "" - -msgctxt "#30117" -msgid "Enable set keyart from Fanart.tv" +msgid "Enable artwork from Fanart.tv" msgstr "" diff --git a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_us/strings.po b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_us/strings.po index f977ba8507..2f29815ab5 100644 --- a/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_us/strings.po +++ b/addons/metadata.themoviedb.org.python/resources/language/resource.language.en_us/strings.po @@ -77,65 +77,5 @@ msgid "Fanart.tv personal API key (optional)" msgstr "" msgctxt "#30102" -msgid "Enable fanart from Fanart.tv" -msgstr "" - -msgctxt "#30103" -msgid "Enable poster from Fanart.tv" -msgstr "" - -msgctxt "#30104" -msgid "Enable clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30105" -msgid "Enable clearart from Fanart.tv" -msgstr "" - -msgctxt "#30106" -msgid "Enable discart from Fanart.tv" -msgstr "" - -msgctxt "#30107" -msgid "Enable banner from Fanart.tv" -msgstr "" - -msgctxt "#30108" -msgid "Enable landscape from Fanart.tv" -msgstr "" - -msgctxt "#30109" -msgid "Enable set fanart from Fanart.tv" -msgstr "" - -msgctxt "#30110" -msgid "Enable set poster from Fanart.tv" -msgstr "" - -msgctxt "#30111" -msgid "Enable set clearlogo from Fanart.tv" -msgstr "" - -msgctxt "#30112" -msgid "Enable set clearart from Fanart.tv" -msgstr "" - -msgctxt "#30113" -msgid "Enable set discart from Fanart.tv" -msgstr "" - -msgctxt "#30114" -msgid "Enable set banner from Fanart.tv" -msgstr "" - -msgctxt "#30115" -msgid "Enable set landscape from Fanart.tv" -msgstr "" - -msgctxt "#30116" -msgid "Enable keyart from Fanart.tv" -msgstr "" - -msgctxt "#30117" -msgid "Enable set keyart from Fanart.tv" +msgid "Enable artwork from Fanart.tv" msgstr "" diff --git a/addons/metadata.themoviedb.org.python/resources/settings.xml b/addons/metadata.themoviedb.org.python/resources/settings.xml index b63ae0c789..2ade0e3e97 100644 --- a/addons/metadata.themoviedb.org.python/resources/settings.xml +++ b/addons/metadata.themoviedb.org.python/resources/settings.xml @@ -19,23 +19,8 @@ <setting id="previewUrl" type="text" default="" visible="false" /> </category> <category label="Fanart.tv"> + <setting label="30102" type="bool" id="enable_fanarttv_artwork" default="true"/> <setting id="fanarttv_language" label="30100" type="select" default="en" values="en|fr|de|ja|zh|es|it|pt|sv|ru|nl|ar|ko|no|hu|da|hi|is|pl|he|bg|fi|ml" /> - <setting label="30102" type="bool" id="enable_fanarttv_fanart" default="false"/> - <setting label="30103" type="bool" id="enable_fanarttv_poster" default="false"/> - <setting label="30116" type="bool" id="enable_fanarttv_keyart" default="false"/> - <setting label="30104" type="bool" id="enable_fanarttv_clearlogo" default="false"/> - <setting label="30105" type="bool" id="enable_fanarttv_clearart" default="false"/> - <setting label="30106" type="bool" id="enable_fanarttv_discart" default="false"/> - <setting label="30107" type="bool" id="enable_fanarttv_banner" default="false"/> - <setting label="30108" type="bool" id="enable_fanarttv_landscape" default="false"/> - <setting label="30109" type="bool" id="enable_fanarttv_set.fanart" default="false"/> - <setting label="30110" type="bool" id="enable_fanarttv_set.poster" default="false"/> - <setting label="30117" type="bool" id="enable_fanarttv_set.keyart" default="false"/> - <setting label="30111" type="bool" id="enable_fanarttv_set.clearlogo" default="false"/> - <setting label="30112" type="bool" id="enable_fanarttv_set.clearart" default="false"/> - <setting label="30113" type="bool" id="enable_fanarttv_set.discart" default="false"/> - <setting label="30114" type="bool" id="enable_fanarttv_set.banner" default="false"/> - <setting label="30115" type="bool" id="enable_fanarttv_set.landscape" default="false"/> <setting label="30101" type="text" id="fanarttv_clientkey" default="" /> </category> </settings> diff --git a/addons/metadata.themoviedb.org/addon.xml b/addons/metadata.themoviedb.org/addon.xml index 5bacdeb8c7..9ff116f12f 100644 --- a/addons/metadata.themoviedb.org/addon.xml +++ b/addons/metadata.themoviedb.org/addon.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.themoviedb.org" name="The Movie Database" - version="5.1.7" + version="5.2.6" provider-name="Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> <import addon="metadata.common.imdb.com" version="2.9.2"/> - <import addon="metadata.common.themoviedb.org" version="3.1.0"/> + <import addon="metadata.common.themoviedb.org" version="3.2.6"/> <import addon="plugin.video.youtube" version="4.4.10" optional="true"/> </requires> <extension point="xbmc.metadata.scraper.movies" @@ -17,7 +17,7 @@ <summary lang="be_BY">TMDB Movie Scraper</summary> <summary lang="bg_BG">Сваля инф. за филми от TMDB</summary> <summary lang="ca_ES">Arreplegador de pel·lícules TMDB</summary> - <summary lang="cs_CZ">Zdroj zisku dat k filmům TMDB</summary> + <summary lang="cs_CZ">Stahovač informací k filmům z TMDB</summary> <summary lang="cy_GB">Crafwr Ffilmiau TMDB</summary> <summary lang="da_DK">TMDB Scraper til Film</summary> <summary lang="de_DE">TMDB Filmscraper</summary> @@ -68,7 +68,7 @@ <description lang="be_BY">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> <description lang="bg_BG">themoviedb.org е безплатна и отворена филмова база данни. Задвижва се изцяло от потребителите си, от хора като вас. Милиони хора по света всеки месец ползват TMDb. Благодарение на многофункционално API може да се ползва от най-различни и популярни медийни центрове като Kodi, които извличат метаданни, постери и фанарт за филми с цел за красивото оформяне на интерфейса.</description> <description lang="ca_ES">themoviedb.org és una base de dades oberta i lliure. Es manté completament per usuaris, per gent com tu. TMDb s'utilitza actualment per milions de persones cada mes i amb la seva potent API també és utilitzada per molts centre media populas com l'Kodi per obtenir les meta-dades de pel·lícules, pósters i fanart per enriquir l'experiència d'usuari.</description> - <description lang="cs_CZ">themoviedb.org je otevřená a svobodná databáze filmů. Je řízena uživateli, tedy lidmi jako vy. TMDB je každý měsíc používána milióny lidí a se svým výborným API je také používano mnoha populárními mediálními centry jako je Kodi, k získávání metadat, plagátů a fanartu filmů pro obohacení uživatelského zážitku.</description> + <description lang="cs_CZ">themoviedb.org je bezplatná a otevřená databáze filmů a seriálů. Je celá řízena uživateli, tedy lidmi jako vy. TMDb je aktuálně používána každý měsíc milióny lidí a se svým výborným API je také používána mnoha oblíbenými multimediálními centry, jako je Kodi, k získávání metadat, plakátů a fanartů filmů a seriálů pro obohacení uživatelského zážitku.</description> <description lang="cy_GB">Mae themoviedb.org yn gronfa ddata ffilmiau rhydd ac agored. Mae'n cael ei yrru gan ddefnyddwyr fel chi. Mae TMDb yn cael ei ddefnyddio gan filiynau o bobl bob mis a gyda'i API pwerus, mae'n cael ei ddefnyddio gan lawer o'r canolfannau cyfrwng fel Kodi i estyn metadata ffilmiau, posteri a chelf er mwyn cyfoethogi profiad defnyddwyr.</description> <description lang="da_DK">themoviedb.org er en fri og åben filmdatabase. Den er helt og aldeles brugerdrevet af folk som dig. TMDb bruges i dag af millioner af mennesker hver måned, og med deres kraftfulde API er den også brugt af mange populære mediecentre såsom Kodi til at hente metadata, plakater og fankunst til film, for at berige brugerens oplevelse.</description> <description lang="de_DE">TheMovieDB.org ist eine freie und offene Filmdatenbank. Sie wird von Benutzern wie dir angetrieben. TheMovieDB wird zur Zeit von millionen Nutzern jeden Monat genutzt und dank ihrer mächtigen API ist sie auch von vielen Media-Center, wie z.B. Kodi, implementiert, um Film-Metadaten, -Poster und -Fanarts zu beziehen, die das Benutzererlebnis verbessern.</description> @@ -116,9 +116,8 @@ <description lang="zh_TW">themoviedb.org是一個免費和開放的電影資料庫。它是完全由與您一樣的廣大使用者來更新資訊。 TMDb目前擁有數以百萬計的使用人次並且有著強大的API,許多受歡迎的媒體中心平台像Kodi藉由TMDb獲取電影的數據資料庫,海報和影片資訊,以豐富使用者體驗。</description> <platform>all</platform> <license>GPL v2.0</license> - <forum></forum> + <forum>https://forum.kodi.tv/showthread.php?tid=339672</forum> <website>https://www.themoviedb.org</website> - <email></email> <assets> <icon>icon.png</icon> </assets> diff --git a/addons/metadata.themoviedb.org/changelog.txt b/addons/metadata.themoviedb.org/changelog.txt index 46838d132b..8ff6e72736 100644 --- a/addons/metadata.themoviedb.org/changelog.txt +++ b/addons/metadata.themoviedb.org/changelog.txt @@ -1,3 +1,33 @@ +[B]5.2.6[/B] +- changed: Updated de and zh language codes to match tmdb - these codes needs to be reset by the users + +[B]5.2.4[/B] +- fixed: trying to workaround the search results issue + +[B]5.2.3[/B] +- fixed: search results + +[B]5.2.2[/B] +- fixed: fr-FR and it-IT language parameter + +[B]5.2.1[/B] +- added: Estonian language option + +[B]5.2.0[/B] +- added: Landscape scraping from tmdb + +[B]5.1.11[/B] +- added: belarusian language option + +[B]5.1.10[/B] +- improved: search results to handle articles and the end of title + +[B]5.1.9[/B] +- fixed: search results + +[B]5.1.8[/B] +- updated: CZ language + [B]5.1.6&5.1.7[/B] - changed: fixes for Chinese language diff --git a/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po b/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po index d303eb2d48..b1e887a28e 100644 --- a/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po +++ b/addons/metadata.themoviedb.org/resources/language/resource.language.cs_cz/strings.po @@ -29,8 +29,8 @@ msgid "Preferred Language" msgstr "Upřednostňovaný jazyk" msgctxt "#30003" -msgid "Get Rating from" -msgstr "Získat hodnocení z" +msgid "Default Rating from" +msgstr "Výchozí hodnocení z" msgctxt "#30004" msgid "Enable Trailer (YouTube)" @@ -43,3 +43,7 @@ msgstr "Ponechat původní název" msgctxt "#30006" msgid "Preferred Certification Country" msgstr "Upřednostňovaný stát poskytující certifikaci" + +msgctxt "#30007" +msgid "Add also IMDb ratings" +msgstr "Přidat také hodnocení z IMDb" diff --git a/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po b/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po index 9cd97f6c36..6bce43f79e 100644 --- a/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po +++ b/addons/metadata.themoviedb.org/resources/language/resource.language.en_gb/strings.po @@ -47,3 +47,7 @@ msgstr "" msgctxt "#30007" msgid "Add also IMDb ratings" msgstr "" + +msgctxt "#30008" +msgid "Enable Landscape" +msgstr "" diff --git a/addons/metadata.themoviedb.org/resources/settings.xml b/addons/metadata.themoviedb.org/resources/settings.xml index 80b155b2e0..9c5ddb641a 100644 --- a/addons/metadata.themoviedb.org/resources/settings.xml +++ b/addons/metadata.themoviedb.org/resources/settings.xml @@ -2,9 +2,10 @@ <settings> <setting label="30005" type="bool" id="keeporiginaltitle" default="false"/> <setting label="30000" type="bool" id="fanart" default="true"/> + <setting label="30008" type="bool" id="landscape" default="false"/> <setting label="30004" type="bool" id="trailer" default="true"/> - <setting label="30002" type="select" values="ar-AE|ar-SA|bg|bn-BD|ca-ES|ch-GU|cs|da|de|el|en|eo-EO|es|es-MX|eu-ES|fa|fa-ir|fi|fr|fr-CA|gl|he|hi-IN|hr|hu|id-ID|it|ja|ka-GE|ko|lt-LT|lv-LV|ml-IN|nb|nl|no|pl|pt|pt-br|ro|ru|sk|sl|sr|sv|ta-IN|th|tr|uk|vi-VN|zh|zh-tw|zh-hk" id="language" default="en"/> - <setting label="30006" type="select" values="au|bg|br|ca|cz|ge|de|dk|ee|es|fi|fr|gb|gr|hr|hu|id|il|in|it|ir|jp|kr|lt|lv|mx|nl|no|pl|pt|ru|si|sv|th|tr|ua|us|vn|zh" id="tmdbcertcountry" default="us"/> + <setting label="30002" type="select" values="ar-AE|ar-SA|be-BY|bg|bn-BD|ca-ES|ch-GU|cs|da|de-DE|el|en|eo-EO|es|es-MX|et-EE|eu-ES|fa|fa-ir|fi|fr-FR|fr-CA|gl|he|hi-IN|hr|hu|id-ID|it-IT|ja|ka-GE|ko|lt-LT|lv-LV|ml-IN|nb|nl|no|pl|pt|pt-br|ro|ru|sk|sl|sr|sv|ta-IN|th|tr|uk|vi-VN|zh-CN|zh-HK|zh-TW" id="language" default="en"/> + <setting label="30006" type="select" values="au|bg|br|by|ca|cz|ge|de|dk|ee|es|fi|fr|gb|gr|hr|hu|id|il|in|it|ir|jp|kr|lt|lv|mx|nl|no|pl|pt|ru|si|sv|th|tr|ua|us|vn|zh" id="tmdbcertcountry" default="us"/> <setting label="30003" type="labelenum" values="TMDb|IMDb" id="RatingS" default="TMDb"/> <setting label="30007" type="bool" id="imdbanyway" visible="eq(-1,0)" default="false"/> <setting label="certprefix" type="text" id="certprefix" default="Rated " visible="false"/> diff --git a/addons/metadata.themoviedb.org/tmdb.xml b/addons/metadata.themoviedb.org/tmdb.xml index f37bfce1bb..600202e6e7 100644 --- a/addons/metadata.themoviedb.org/tmdb.xml +++ b/addons/metadata.themoviedb.org/tmdb.xml @@ -1,43 +1,58 @@ <?xml version="1.0" encoding="UTF-8"?> <scraper framework="1.1" date="2012-01-16"> <CreateSearchUrl dest="3"> - <RegExp input="$$1" output="<url>https://api.tmdb.org/3/search/movie?api_key=f090bb54758cabf231fb605d3e3e0468&amp;query=\1&amp;year=$$4&amp;language=$INFO[language]</url>" dest="3"> + <RegExp input="$$7" output="<url>https://api.themoviedb.org/3/search/movie?api_key=f090bb54758cabf231fb605d3e3e0468&amp;query=\1&amp;year=$$4&amp;language=$INFO[language]</url>" dest="3"> <RegExp input="$$2" output="\1" dest="4"> <expression clear="yes">(.+)</expression> </RegExp> + <RegExp input="$$1" output="\1" dest="7"> + <expression clear="yes">(.+)</expression> + </RegExp> + <RegExp input="$$1" output="\1" dest="6"> + <expression noclean="1">(.+)(?:%20the$|%20an$|%20a$|%2Cthe$|%2Can$|%2Ca$)</expression> + </RegExp> + <RegExp input="$$6" output="\1" dest="7"> + <expression>(.+)</expression> + </RegExp> <expression noclean="1" /> </RegExp> </CreateSearchUrl> <NfoUrl dest="3"> - <RegExp input="$$1" output="<details><url>https://api.tmdb.org/3/movie/\2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>\2</id></details>" dest="3"> + <RegExp input="$$1" output="<details><url>https://api.themoviedb.org/3/movie/\2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>\2</id></details>" dest="3"> <expression clear="yes" noclean="1">(themoviedb.org/movie/)([0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<details><url cache="tmdb-$INFO[language]-tt\1.json">https://api.tmdb.org/3/movie/tt\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>tt\1</id></details>" dest="3"> + <RegExp input="$$1" output="<details><url cache="tmdb-$INFO[language]-tt\1.json">https://api.themoviedb.org/3/movie/tt\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>tt\1</id></details>" dest="3"> <expression>imdb....?/title/tt([0-9]+)</expression> </RegExp> - <RegExp input="$$1" output="<details><url cache="tmdb-$INFO[language]-tt\1.json">https://api.tmdb.org/3/movie/tt\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>tt\1</id></details>" dest="3"> + <RegExp input="$$1" output="<details><url cache="tmdb-$INFO[language]-tt\1.json">https://api.themoviedb.org/3/movie/tt\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url><id>tt\1</id></details>" dest="3"> <expression>imdb....?/Title\?t{0,2}([0-9]+)</expression> </RegExp> </NfoUrl> <GetSearchResults dest="8"> <RegExp input="$$3" output="<results>\1</results>" dest="8"> - <RegExp input="$$1" output="<entity><title>\3</title><id>\2</id><year>\1</year><url cache="tmdb-$INFO[language]-\2.json">https://api.tmdb.org/3/movie/\2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3"> - <expression repeat="yes">"release_date":"([0-9]+)-.*?"id":([0-9]*),"original_title":"[^"]*","original_language":"[^"]*","title":"([^"]*)"</expression> + <RegExp input="$$1" output="<entity><title>\1</title><id>\4</id><year>\3</year><url cache="tmdb-$INFO[language]-\4.json">https://api.themoviedb.org/3/movie/\4?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"title":"([^"]*)"(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"id":([0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\3</title><id>\2</id><year>\1</year><url cache="tmdb-$INFO[language]-\2.json">https://api.tmdb.org/3/movie/\2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> - <expression repeat="yes">"release_date":"([0-9]+)-.*?"id":([0-9]*),"original_title":"([^"]*)","original_language":"[^"]*"</expression> + <RegExp input="$$1" output="<entity><title>\4</title><id>\3</id><year>\2</year><url cache="tmdb-$INFO[language]-\3.json">https://api.themoviedb.org/3/movie/\3?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"title":"([^"]*)"</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><url cache="tmdb-$INFO[language]-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> - <expression repeat="yes">"release_date":null.*?"id":([0-9]*),"original_title":"([^"]*)","original_language":"[^"]*"</expression> + <RegExp input="$$1" output="<entity><title>\4</title><id>\1</id><year>\3</year><url cache="tmdb-$INFO[language]-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"title":"([^"]*)"</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><year>\3</year><url cache="tmdb-$INFO[language]-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> - <expression repeat="yes">"id":([0-9]*).*?title":"[^"]*".*?original_title":"([^"]*)".*?"release_date":"([0-9]+)-</expression> + <RegExp input="$$1" output="<entity><title>\3</title><id>\4</id><year>\2</year><url cache="tmdb-$INFO[language]-\4.json">https://api.themoviedb.org/3/movie/\4?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"title":"([^"]*)"(?:(?!}).)*"id":([0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><year>\3</year><url cache="tmdb-$INFO[language]-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> - <expression repeat="yes">"id":([0-9]*).*?title":"([^"]*)".*?original_title":"[^"]*".*?"release_date":"([0-9]+)-</expression> + <RegExp input="$$1" output="<entity><title>\1</title><id>\4</id><year>\3</year><url cache="tmdb-$INFO[language]-\4.json">https://api.themoviedb.org/3/movie/\4?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"original_title":"([^"]*)"(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"id":([0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><url cache="tmdb-$INFO[language]-\1.json">https://api.tmdb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> - <expression repeat="yes">"id":([0-9]*).*?title":"([^"]*)".*?original_title":"[^"]*".*?"release_date":null</expression> + <RegExp input="$$1" output="<entity><title>\4</title><id>\3</id><year>\2</year><url cache="tmdb-$INFO[language]-\3.json">https://api.themoviedb.org/3/movie/\3?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"original_title":"([^"]*)"</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\4</title><id>\1</id><year>\3</year><url cache="tmdb-$INFO[language]-\1.json">https://api.themoviedb.org/3/movie/\1?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"original_title":"([^"]*)"</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\3</title><id>\4</id><year>\2</year><url cache="tmdb-$INFO[language]-\4.json">https://api.themoviedb.org/3/movie/\4?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=$INFO[language]</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"release_date":"(([0-9]+)-)?(?:(?!}).)*"original_title":"([^"]*)"(?:(?!}).)*"id":([0-9]*)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -74,7 +89,7 @@ <RegExp input="$$1" output="\1" dest="10"> <expression clear="yes" noclean="1">"runtime":([0-9]+)</expression> </RegExp> - <RegExp input="$$10" output="<url function="ParseFallbackTMDBRuntime" cache="tmdb-en-$$2.json">https://api.tmdb.org/3/movie/$$2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="5+"> + <RegExp input="$$10" output="<url function="ParseFallbackTMDBRuntime" cache="tmdb-en-$$2.json">https://api.themoviedb.org/3/movie/$$2?api_key=f090bb54758cabf231fb605d3e3e0468&amp;language=en</url>" dest="5+"> <expression>^$</expression> </RegExp> <RegExp input="$$10" output="<runtime>\1</runtime>" dest="5+"> @@ -122,6 +137,9 @@ <RegExp conditional="fanart" input="$$2" output="<chain function="GetTMDBFanartByIdChain">$$2::$INFO[language]</chain>" dest="5+"> <expression /> </RegExp> + <RegExp conditional="landscape" input="$$2" output="<chain function="GetTMDBLandscapeByIdChain">$$2::$INFO[language]</chain>" dest="5+"> + <expression /> + </RegExp> <RegExp conditional="trailer" input="$$2" output="<chain function="GetTMDBTrailerByIdChain">$$2::$INFO[language]</chain>" dest="5+"> <expression /> </RegExp> diff --git a/addons/metadata.tvshows.themoviedb.org.python/addon.xml b/addons/metadata.tvshows.themoviedb.org.python/addon.xml index 10e4edd33f..39f0815558 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/addon.xml +++ b/addons/metadata.tvshows.themoviedb.org.python/addon.xml @@ -1,23 +1,16 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.tvshows.themoviedb.org.python" name="TMDb TV Shows" - version="1.3.0" + version="1.3.14" provider-name="Team Kodi"> <requires> <import addon="xbmc.python" version="3.0.0"/> <import addon="xbmc.metadata" version="2.1.0"/> </requires> - <extension point="xbmc.metadata.scraper.tvshows" library="main.py"/> + <extension point="xbmc.metadata.scraper.tvshows" library="main.py" cachepersistence="00:15"/> <extension point="xbmc.addon.metadata"> - <news>1.3.0 -scraper now returns URL references for all possible art so Kodi can decide what to display based on system settings - -1.2.3 -fix for crash if show had no network listed on TMDb - -1.2.2 -change so that scraper returns English data for a show if data is missing in selected language -fixed order of certification preferences in setting + <news>1.3.14 +fix for named seasons in NFO files being ignored </news> <summary lang="en_GB">Fetch TV Show metadata from themoviedb.org</summary> <description lang="en_GB">The Movie Database (TMDb) is a community built movie and TV database. Every piece of data has been added by our amazing community dating back to 2008. TMDb's strong international focus and breadth of data is largely unmatched and something we're incredibly proud of. Put simply, we live and breathe community and that's precisely what makes us different.</description> diff --git a/addons/metadata.tvshows.themoviedb.org.python/changelog.txt b/addons/metadata.tvshows.themoviedb.org.python/changelog.txt index 184f7861c8..8b8f394dec 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/changelog.txt +++ b/addons/metadata.tvshows.themoviedb.org.python/changelog.txt @@ -1,3 +1,29 @@ +1.3.14 +fix for named seasons in NFO files being ignored + +1.3.13 +original title is now saved along with title in selected language +added option (default to true) to separate fanart from landscape art + +1.3.12 +writer credits now include anyone with TMDb department of Writing +changed location of cache files to special://temp/metadata.tvshows.themoviedb.org.python/cache + +1.3.10 +fix for issue with episode group seasons not being numbered correctly +fix for incorrect parsing of episode guide URL from XML scraper +fix for crash in certain circumstances if TMDb returns no results +fix for failed searches if show has extended characters in title +fix for changes in the data delivered by the TMDb API + +1.3.2 +fix for shows/episodes not loading cast correctly +fix for crash when episode has no name + +1.3.1 +scraper returns primary poster as the first poster from TMDb if no posters for the chosen language are available +updated debug logging + 1.3.0 scraper now returns URL references for all possible art so Kodi can decide what to display based on system settings diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/actions.py b/addons/metadata.tvshows.themoviedb.org.python/libs/actions.py index 30409036f2..d50558e007 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/libs/actions.py +++ b/addons/metadata.tvshows.themoviedb.org.python/libs/actions.py @@ -71,10 +71,10 @@ def get_show_id_from_nfo(nfo): if isinstance(nfo, bytes): nfo = nfo.decode('utf-8', 'replace') logger.debug('Parsing NFO file:\n{}'.format(nfo)) - parse_result = data_utils.parse_nfo_url(nfo) + parse_result, named_seasons = data_utils.parse_nfo_url(nfo) if parse_result: if parse_result.provider == 'themoviedb': - show_info = tmdb.load_show_info(parse_result.show_id, ep_grouping=parse_result.ep_grouping) + show_info = tmdb.load_show_info(parse_result.show_id, ep_grouping=parse_result.ep_grouping, named_seasons=named_seasons) else: show_info = None if show_info is not None: @@ -109,10 +109,10 @@ def get_episode_list(show_id): # pylint: disable=missing-docstring # Kodi has a bug: when a show directory contains an XML NFO file with # episodeguide URL, that URL is always passed here regardless of # the actual parsing result in get_show_from_nfo() - parse_result = data_utils.parse_nfo_url(show_id) + parse_result, named_seasons = data_utils.parse_nfo_url(show_id) if not parse_result: return - if parse_result.provider == 'themoviedb': + if parse_result.provider == 'themoviedb' or parse_result.provider == 'tmdb': show_info = tmdb.load_show_info(parse_result.show_id) else: return @@ -121,7 +121,8 @@ def get_episode_list(show_id): # pylint: disable=missing-docstring if show_info is not None: theindex = 0 for episode in show_info['episodes']: - list_item = xbmcgui.ListItem(episode['name'], offscreen=True) + epname = episode.get('name', 'Episode ' + str(episode['episode_number'])) + list_item = xbmcgui.ListItem(epname, offscreen=True) list_item = data_utils.add_episode_info(list_item, episode, full_info=False) encoded_ids = urllib.parse.urlencode( {'show_id': str(show_info['id']), 'episode_id': str(theindex)} @@ -184,16 +185,22 @@ def router(paramstring): params = dict(urllib.parse.parse_qsl(paramstring)) logger.debug('Called addon with params: {}'.format(sys.argv)) if params['action'] == 'find': + logger.debug('performing find action') find_show(params['title'], params.get('year')) elif params['action'].lower() == 'nfourl': + logger.debug('performing nfourl action') get_show_id_from_nfo(params['nfo']) elif params['action'] == 'getdetails': + logger.debug('performing getdetails action') get_details(params['url']) elif params['action'] == 'getepisodelist': + logger.debug('performing getepisodelist action') get_episode_list(params['url']) elif params['action'] == 'getepisodedetails': + logger.debug('performing getepisodedetails action') get_episode_details(params['url']) elif params['action'] == 'getartwork': + logger.debug('performing getartwork action') get_artwork(params.get('id')) else: raise RuntimeError('Invalid addon call: {}'.format(sys.argv)) diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/cache.py b/addons/metadata.tvshows.themoviedb.org.python/libs/cache.py index aec026b38e..a19853b9a8 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/libs/cache.py +++ b/addons/metadata.tvshows.themoviedb.org.python/libs/cache.py @@ -23,7 +23,6 @@ from __future__ import absolute_import, unicode_literals import os, pickle -from datetime import datetime, timedelta import xbmc, xbmcvfs from .utils import ADDON, logger @@ -34,33 +33,20 @@ except ImportError: pass -CACHING_DURATION = timedelta(hours=3) # type: timedelta - def _get_cache_directory(): # pylint: disable=missing-docstring # type: () -> Text - profile_dir = xbmcvfs.translatePath(ADDON.getAddonInfo('profile')) - cache_dir = os.path.join(profile_dir, 'cache') + temp_dir = xbmcvfs.translatePath('special://temp') + cache_dir = os.path.join(temp_dir, 'scrapers', ADDON.getAddonInfo('id')) if not xbmcvfs.exists(cache_dir): xbmcvfs.mkdir(cache_dir) + logger.debug('the cache dir is ' + cache_dir) return cache_dir CACHE_DIR = _get_cache_directory() # type: Text -def clean_cache(): - """ - delete cache items that have expired - """ - dirs, files = xbmcvfs.listdir(CACHE_DIR) - for filename in files: - filepath = os.path.join(CACHE_DIR, filename) - lastmod = datetime.fromtimestamp(xbmcvfs.Stat(filepath).st_mtime()) - if datetime.now() - lastmod > CACHING_DURATION: - xbmcvfs.delete(filepath) - - def cache_show_info(show_info): # type: (Dict[Text, Any]) -> None """ @@ -68,8 +54,7 @@ def cache_show_info(show_info): """ file_name = str(show_info['id']) + '.pickle' cache = { - 'show_info': show_info, - 'timestamp': datetime.now(), + 'show_info': show_info } with open(os.path.join(CACHE_DIR, file_name), 'wb') as fo: pickle.dump(cache, fo, protocol=2) @@ -89,8 +74,6 @@ def load_show_info_from_cache(show_id): load_kwargs = {} load_kwargs['encoding'] = 'bytes' cache = pickle.load(fo, **load_kwargs) - if datetime.now() - cache['timestamp'] > CACHING_DURATION: - return None return cache['show_info'] except (IOError, pickle.PickleError) as exc: logger.debug('Cache message: {} {}'.format(type(exc), exc)) diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/data_utils.py b/addons/metadata.tvshows.themoviedb.org.python/libs/data_utils.py index 9708bc364a..0090837691 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/libs/data_utils.py +++ b/addons/metadata.tvshows.themoviedb.org.python/libs/data_utils.py @@ -41,7 +41,9 @@ SHOW_ID_REGEXPS = ( r'(thetvdb)\.com[\w=&\?/]+id=(\d+)', r'(imdb)\.com/[\w/\-]+/(tt\d+)', r'(themoviedb)\.org/tv/(\d+).*/episode_group/(.*)', - r'(themoviedb)\.org/tv/(\d+)' + r'(themoviedb)\.org/tv/(\d+)', + r'(themoviedb)\.org/./tv/(\d+)', + r'(tmdb)\.org/./tv/(\d+)' ) SUPPORTED_ARTWORK_TYPES = {'poster', 'banner'} IMAGE_SIZES = ('large', 'original', 'medium') @@ -74,7 +76,7 @@ def _set_cast(cast_info, list_item): for item in cast_info: data = { 'name': item['name'], - 'role': item['character'], + 'role': item.get('character', item.get('character_name', '')), 'order': item['order'], } thumb = None @@ -90,13 +92,14 @@ def _set_cast(cast_info, list_item): def _get_credits(show_info): # type: (InfoType) -> List[Text] """Extract show creator(s) and writer(s) from show info""" - credits_ = [] + credits = [] for item in show_info.get('created_by', []): - credits_.append(item['name']) + credits.append(item['name']) for item in show_info.get('credits', {}).get('crew', []): - if item.get('job') == 'Writer' and item.get('name') not in credits_: - credits_.append(item['name']) - return credits_ + isWriter = item.get('job', '').lower() == 'writer' or item.get('department', '').lower() == 'writing' + if isWriter and item.get('name') not in credits: + credits.append(item['name']) + return credits def _get_directors(episode_info): @@ -140,11 +143,8 @@ def _add_season_info(show_info, list_item): # type: (InfoType, ListItem) -> ListItem """Add info for show seasons""" for season in show_info['seasons']: + logger.debug('adding information for season %s to list item' % season['season_number']) list_item.addSeason(season['season_number'], safe_get(season, 'name', '')) -# image = season.get('poster_path', '') -# if image: -# url = settings.IMAGEROOTURL + image -# list_item.addAvailableArtwork(url, 'poster', season=season['season_number']) for image_type, image_list in season.get('images', {}).items(): if image_type == 'posters': destination = 'poster' @@ -161,6 +161,16 @@ def _add_season_info(show_info, list_item): return list_item +def get_image_urls( image ): + if image.get('type') == 'fanarttv': + theurl = image['file_path'] + previewurl = theurl.replace('.fanart.tv/fanart/', '.fanart.tv/preview/') + else: + theurl = settings.IMAGEROOTURL + image['file_path'] + previewurl = settings.PREVIEWROOTURL + image['file_path'] + return theurl, previewurl + + def set_show_artwork(show_info, list_item): # type: (InfoType, ListItem) -> ListItem """Set available images for a show""" @@ -172,7 +182,11 @@ def set_show_artwork(show_info, list_item): theurl = image['file_path'] else: theurl = settings.IMAGEROOTURL + image['file_path'] - fanart_list.append({'image': theurl}) + if image.get('iso_639_1') != None and settings.CATLANDSCAPE: + theurl, previewurl = get_image_urls( image ) + list_item.addAvailableArtwork(theurl, art_type="landscape", preview=previewurl) + else: + fanart_list.append({'image': theurl}) if fanart_list: list_item.setAvailableFanart(fanart_list) else: @@ -181,12 +195,7 @@ def set_show_artwork(show_info, list_item): else: destination = image_type for image in image_list: - if image.get('type') == 'fanarttv': - theurl = image['file_path'] - previewurl = theurl.replace('.fanart.tv/fanart/', '.fanart.tv/preview/') - else: - theurl = settings.IMAGEROOTURL + image['file_path'] - previewurl = settings.PREVIEWROOTURL + image['file_path'] + theurl, previewurl = get_image_urls( image ) list_item.addAvailableArtwork(theurl, art_type=destination, preview=previewurl) return list_item @@ -204,6 +213,7 @@ def add_main_show_info(list_item, show_info, full_info=True): 'plot': plot, 'plotoutline': plot, 'title': showname, + 'originaltitle': original_name, 'tvshowtitle': showname, 'mediatype': 'tvshow', # This property is passed as "url" parameter to getepisodelist call @@ -257,6 +267,7 @@ def add_main_show_info(list_item, show_info, full_info=True): theurl = settings.IMAGEROOTURL + image previewurl = settings.PREVIEWROOTURL + image list_item.addAvailableArtwork(theurl, art_type='poster', preview=previewurl) + logger.debug('adding tv show information for %s to list item' % video['tvshowtitle']) list_item.setInfo('video', video) # This is needed for getting artwork list_item = _set_unique_ids(show_info, list_item) @@ -267,7 +278,7 @@ def add_episode_info(list_item, episode_info, full_info=True): # type: (ListItem, InfoType, bool) -> ListItem """Add episode info to a list item""" video = { - 'title': episode_info['name'], + 'title': episode_info.get('name', 'Episode ' + str(episode_info['episode_number'])), 'season': episode_info['season_number'], 'episode': episode_info['episode_number'], 'mediatype': 'episode', @@ -293,13 +304,18 @@ def add_episode_info(list_item, episode_info, full_info=True): list_item.addAvailableArtwork(theurl, art_type='thumb', preview=previewurl) video['credits'] = video['writer'] = _get_credits(episode_info) video['director'] = _get_directors(episode_info) + logger.debug('adding episode information for S%sE%s - %s to list item' % (video['season'], video['episode'], video['title'])) list_item.setInfo('video', video) return list_item def parse_nfo_url(nfo): # type: (Text) -> Optional[UrlParseResult] - """Extract show ID from NFO file contents""" + """Extract show ID and named seasons from NFO file contents""" + # work around for xbmcgui.ListItem.addSeason overwriting named seasons from NFO files + ns_regex = r'<namedseason number="(.*)">(.*)</namedseason>' + ns_match = re.findall(ns_regex, nfo, re.I) + sid_match = None for regexp in SHOW_ID_REGEXPS: logger.debug('trying regex to match service from parsing nfo:') logger.debug(regexp) @@ -315,8 +331,9 @@ def parse_nfo_url(nfo): logger.debug('match group 3: ' + ep_grouping) else: logger.debug('match group 3: None') - return UrlParseResult(show_id_match.group(1), show_id_match.group(2), ep_grouping) - return None + sid_match = UrlParseResult(show_id_match.group(1), show_id_match.group(2), ep_grouping) + break + return sid_match, ns_match def parse_media_id(title): diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/settings.py b/addons/metadata.tvshows.themoviedb.org.python/libs/settings.py index e6bba54a90..21c4e5b329 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/libs/settings.py +++ b/addons/metadata.tvshows.themoviedb.org.python/libs/settings.py @@ -18,8 +18,7 @@ import json, sys, urllib.parse from .utils import logger -from . import api_utils, cache -from pprint import pformat +from . import api_utils from xbmcaddon import Addon from datetime import datetime, timedelta @@ -39,7 +38,6 @@ def _load_base_urls(): last_updated = ADDON.getSettingString('lastUpdated') if not image_root_url or not preview_root_url or not last_updated or \ float(last_updated) < _get_date_numeric(datetime.now() - timedelta(days=30)): - cache.clean_cache() conf = _get_configuration() if conf: image_root_url = conf['images']['secure_base_url'] + 'original' @@ -74,9 +72,9 @@ try: except IndexError: source_params = {} source_settings = json.loads(source_params.get('pathSettings', {})) -logger.debug('the source settings are:\n{}'.format(pformat(source_settings))) KEEPTITLE =source_settings.get('keeporiginaltitle', ADDON.getSettingBool('keeporiginaltitle')) +CATLANDSCAPE = source_settings.get('cat_landscape', True) VERBOSELOG = source_settings.get('verboselog', ADDON.getSettingBool('verboselog')) LANG = source_settings.get('language', ADDON.getSettingString('language')) CERT_COUNTRY = source_settings.get('tmdbcertcountry', ADDON.getSettingString('tmdbcertcountry')).lower() diff --git a/addons/metadata.tvshows.themoviedb.org.python/libs/tmdb.py b/addons/metadata.tvshows.themoviedb.org.python/libs/tmdb.py index 8f4a136927..07211db568 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/libs/tmdb.py +++ b/addons/metadata.tvshows.themoviedb.org.python/libs/tmdb.py @@ -20,6 +20,7 @@ from __future__ import absolute_import, unicode_literals +import unicodedata from math import floor from pprint import pformat from . import cache, data_utils, api_utils, settings, imdbratings, traktratings @@ -72,7 +73,7 @@ def search_show(title, year=None): else: logger.debug('using title of %s to find show' % title) search_url = SEARCH_URL - params['query'] = title + params['query'] = unicodedata.normalize('NFKC', title) if year: params['first_air_date_year'] = str(year) resp = api_utils.load_info(search_url, params=params, verboselog=settings.VERBOSELOG) @@ -100,24 +101,20 @@ def load_episode_list(show_info, season_map, ep_grouping): custom_order = api_utils.load_info(episode_group_url, params=TMDB_PARAMS, verboselog=settings.VERBOSELOG) if custom_order is not None: show_info['seasons'] = [] - season_num = 1 for custom_season in custom_order.get('groups', []): - ep_num = 1 season_episodes = [] current_season = season_map.get(str(custom_season['episodes'][0]['season_number']), {}).copy() current_season['name'] = custom_season['name'] - current_season['season_number'] = season_num + current_season['season_number'] = custom_season['order'] for episode in custom_season['episodes']: episode['org_seasonnum'] = episode['season_number'] episode['org_epnum'] = episode['episode_number'] - episode['season_number'] = season_num - episode['episode_number'] = ep_num + episode['season_number'] = custom_season['order'] + episode['episode_number'] = episode['order'] + 1 season_episodes.append(episode) episode_list.append(episode) - ep_num = ep_num + 1 current_season['episodes'] = season_episodes show_info['seasons'].append(current_season) - season_num = season_num + 1 else: logger.debug('Getting episodes from standard season list') show_info['seasons'] = [] @@ -132,7 +129,7 @@ def load_episode_list(show_info, season_map, ep_grouping): return show_info -def load_show_info(show_id, ep_grouping=None): +def load_show_info(show_id, ep_grouping=None, named_seasons=None): # type: (Text) -> Optional[InfoType] """ Get full info for a single show @@ -140,6 +137,8 @@ def load_show_info(show_id, ep_grouping=None): :param show_id: themoviedb.org show ID :return: show info or None """ + if named_seasons == None: + named_seasons = [] show_info = cache.load_show_info_from_cache(show_id) if show_info is None: logger.debug('no cache file found, loading from scratch') @@ -148,14 +147,15 @@ def load_show_info(show_id, ep_grouping=None): params['append_to_response'] = 'credits,content_ratings,external_ids,images' params['include_image_language'] = '%s,en,null' % settings.LANG[0:2] show_info = api_utils.load_info(show_url, params=params, verboselog=settings.VERBOSELOG) + if show_info is None: + return None if show_info['overview'] == '' and settings.LANG != 'en-US': params['language'] = 'en-US' del params['append_to_response'] show_info_backup = api_utils.load_info(show_url, params=params, verboselog=settings.VERBOSELOG) + if show_info_backup is not None: + show_info['overview'] = show_info_backup.get('overview', '') params['language'] = settings.LANG - show_info['overview'] = show_info_backup['overview'] - if show_info is None: - return None season_map = {} params['append_to_response'] = 'credits,images' for season in show_info.get('seasons', []): @@ -169,6 +169,13 @@ def load_show_info(show_id, ep_grouping=None): season_info['overview'] = season_info_backup['overview'] if season_info['name'].lower().startswith('season'): season_info['name'] = season_info_backup['name'] + # this is part of a work around for xbmcgui.ListItem.addSeasons() not respecting NFO file information + for named_season in named_seasons: + if str(named_season[0]) == str(season['season_number']): + logger.debug('adding season name of %s from named seasons in NFO for season %s' % (named_season[1], season['season_number'])) + season_info['name'] = named_season[1] + break + # end work around season_info['images'] = _sort_image_types(season_info.get('images', {})) season_map[str(season['season_number'])] = season_info show_info = load_episode_list(show_info, season_map, ep_grouping) @@ -214,16 +221,27 @@ def load_episode_info(show_id, episode_id): params['append_to_response'] = 'credits,external_ids,images' params['include_image_language'] = '%s,en,null' % settings.LANG[0:2] ep_return = api_utils.load_info(ep_url, params=params, verboselog=settings.VERBOSELOG) - if (ep_return['overview'] == '' or ep_return['name'].lower().startswith('episode')) and settings.LANG != 'en-US': + if ep_return is None: + return None + bad_return_name = False + bad_return_overview = False + check_name = ep_return.get('name') + if check_name == None: + bad_return_name = True + ep_return['name'] = 'Episode ' + str(episode_info['episode_number']) + elif check_name.lower().startswith('episode') or check_name == '': + bad_return_name = True + if ep_return.get('overview', '') == '': + bad_return_overview = True + if (bad_return_overview or bad_return_name) and settings.LANG != 'en-US': params['language'] = 'en-US' del params['append_to_response'] ep_return_backup = api_utils.load_info(ep_url, params=params, verboselog=settings.VERBOSELOG) - if ep_return['overview'] == '': - ep_return['overview'] = ep_return_backup['overview'] - if ep_return['name'].lower().startswith('episode'): - ep_return['name'] = ep_return_backup['name'] - if ep_return is None: - return None + if ep_return_backup is not None: + if bad_return_overview: + ep_return['overview'] = ep_return_backup.get('overview', '') + if bad_return_name: + ep_return['name'] = ep_return_backup.get('name', 'Episode ' + str(episode_info['episode_number'])) ep_return['images'] = _sort_image_types(ep_return.get('images', {})) ep_return['season_number'] = episode_info['season_number'] ep_return['episode_number'] = episode_info['episode_number'] @@ -257,7 +275,6 @@ def load_ratings(the_info, show_imdb_id=''): trakt_rating = resp.get('ratings') if trakt_rating: ratings.update(trakt_rating) - logger.debug('returning ratings of\n{}'.format(pformat(ratings))) return ratings @@ -294,7 +311,7 @@ def load_fanarttv_art(show_info): if not show_info['seasons'][s].get('images'): show_info['seasons'][s]['images'] = {} if not show_info['seasons'][s]['images'].get(image_type): - show_info['seasons'][s]['images'][image_type] = [] + show_info['seasons'][s]['images'][image_type] = [] if artseason == '' or artseason == str(season_num): show_info['seasons'][s]['images'][image_type].append({'file_path':filepath, 'type':'fanarttv', 'iso_639_1': lang}) else: @@ -364,11 +381,11 @@ def trim_artwork(show_info): def _sort_image_types(imagelist): for image_type, images in imagelist.items(): - imagelist[image_type] = _image_sort(images) + imagelist[image_type] = _image_sort(images, image_type) return imagelist -def _image_sort(images): +def _image_sort(images, image_type): lang_pref = [] lang_null = [] lang_en = [] @@ -376,7 +393,7 @@ def _image_sort(images): for image in images: image_lang = image.get('iso_639_1') if image_lang == settings.LANG[0:2]: - lang_pref.append(image) + lang_pref.append(image) elif image_lang == 'en': lang_en.append(image) else: @@ -385,4 +402,7 @@ def _image_sort(images): else: lang_null.append(image) firstimage = False - return lang_pref + lang_null + lang_en + if image_type == 'posters': + return lang_pref + lang_en + lang_null + else: + return lang_pref + lang_null + lang_en diff --git a/addons/metadata.tvshows.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po b/addons/metadata.tvshows.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po index e28ec38903..b3153b254f 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po +++ b/addons/metadata.tvshows.themoviedb.org.python/resources/language/resource.language.en_gb/strings.po @@ -36,7 +36,11 @@ msgctxt "#30004" msgid "Keep original title" msgstr "" -# empty strings from 30007 to 30099 +msgctxt "#30005" +msgid "Categorize fanart with text as landscape art" +msgstr "" + +# empty strings from 30006 to 30099 msgctxt "#30100" msgid "Fanart.tv" diff --git a/addons/metadata.tvshows.themoviedb.org.python/resources/settings.xml b/addons/metadata.tvshows.themoviedb.org.python/resources/settings.xml index b18667d97a..626e01bead 100644 --- a/addons/metadata.tvshows.themoviedb.org.python/resources/settings.xml +++ b/addons/metadata.tvshows.themoviedb.org.python/resources/settings.xml @@ -141,6 +141,11 @@ <default>false</default> <control type="toggle"/> </setting> + <setting id="cat_landscape" type="boolean" label="30005" help=""> + <level>0</level> + <default>true</default> + <control type="toggle"/> + </setting> </group> </category> <category id="ratings" label="30300" help=""> diff --git a/addons/metadata.tvshows.themoviedb.org/addon.xml b/addons/metadata.tvshows.themoviedb.org/addon.xml index b4c646599e..47afde1616 100644 --- a/addons/metadata.tvshows.themoviedb.org/addon.xml +++ b/addons/metadata.tvshows.themoviedb.org/addon.xml @@ -1,95 +1,97 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="metadata.tvshows.themoviedb.org" name="The Movie Database" - version="3.1.0" + version="3.5.12" provider-name="Team Kodi"> <requires> <import addon="xbmc.metadata" version="2.1.0"/> <import addon="metadata.common.fanart.tv" version="3.1.0"/> + <import addon="metadata.common.imdb.com" version="2.9.2"/> </requires> <extension point="xbmc.metadata.scraper.tvshows" language="en" library="tmdb.xml" cachepersistence="00:15"/> <extension point="xbmc.addon.metadata"> - <summary lang="bg">Сваля инф. за ТВ Сериали от TMDB</summary> - <summary lang="cs">TMDb zdroj dat k seriálům </summary> - <summary lang="de">TMDB Fernsehserien Scraper</summary> - <summary lang="el">Scraper Τηλ. Σειρών του TMDb</summary> - <summary lang="en">TMDB TV show Scraper</summary> + <summary lang="bg_BG">Сваля инф. за ТВ Сериали от TMDB</summary> + <summary lang="cs_CZ">Stahovač informací k seriálům z TMDB</summary> + <summary lang="de_DE">TMDB Fernsehserien Scraper</summary> + <summary lang="el_GR">Scraper Τηλ. Σειρών του TMDb</summary> + <summary lang="en_GB">TMDB TV show Scraper</summary> <summary lang="en_US">TMDB TV show Scraper</summary> - <summary lang="es">Scraper de series TMDB</summary> + <summary lang="es_ES">Scraper de series TMDB</summary> <summary lang="fr_CA">Extracteur de d'émissions télé TMDb</summary> - <summary lang="gl">Scraper serie de TV TMDB</summary> - <summary lang="he">סקרייפר סדרות TMDB</summary> - <summary lang="hr">TMDB sakupljač TV serija</summary> - <summary lang="hu">TMDB TV show Letöltő</summary> - <summary lang="id">Pengais Serial TV TMDB</summary> - <summary lang="is">TMDB TV skafa fyrir sjónvarpsefni</summary> - <summary lang="ko">TMDB TV 쇼 정보수집기</summary> - <summary lang="lt">TMDB TV laidų skreperis</summary> - <summary lang="nl">TMDB TV-serie scraper</summary> - <summary lang="pl">Ekstraktor serialowy TMDB</summary> - <summary lang="pt">Colector de filmes TMDb</summary> + <summary lang="gl_ES">Scraper serie de TV TMDB</summary> + <summary lang="he_IL">סקרייפר סדרות TMDB</summary> + <summary lang="hr_HR">TMDB sakupljač TV serija</summary> + <summary lang="hu_HU">TMDB TV show Letöltő</summary> + <summary lang="id_ID">Pengais Serial TV TMDB</summary> + <summary lang="is_IS">TMDB TV skafa fyrir sjónvarpsefni</summary> + <summary lang="ko_KR">TMDB TV 쇼 정보수집기</summary> + <summary lang="lt_LT">TMDB TV laidų skreperis</summary> + <summary lang="nl_NL">TMDB TV-serie scraper</summary> + <summary lang="pl_PL">Ekstraktor serialowy TMDB</summary> + <summary lang="pt_PT">Colector de filmes TMDb</summary> <summary lang="pt_BR">Scraper de Seriados TMDb</summary> - <summary lang="ru">TMDB ТВ шоу инфоресурс</summary> - <summary lang="sv">TMDB TV-serie skrapa</summary> - <summary lang="zh">TMDB 剧集刮削器</summary> - <description lang="af">themoviedb.org is 'n verniet en oop fliek databasis. Dit is totaal gebruiker gedryf deur mense soos jy. TMDB word huidiglik deur miljoene mense elke maand gebruik, en met hulle kragtige API word dit ook deur baie gewilde media sentrums soos Kodi gebruik om Fliek Metadata, Plakkate en Ondersteunerkuns te onttrek om die gebruiker se ondervinding te verryk.</description> - <description lang="be">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> - <description lang="bg">themoviedb.org е безплатна и отворена филмова база данни. Задвижва се изцяло от потребителите си, от хора като вас. Милиони хора по света всеки месец ползват TMDb. Благодарение на многофункционално API може да се ползва от най-различни и популярни медийни центрове като Kodi, които извличат метаданни, постери и фанарт за филмите с цел за красивото оформяне на интерфейса.</description> - <description lang="ca">themoviedb.org és una base de dades oberta i lliure. Es manté completament per usuaris, per gent com tu. TMDb s'utilitza actualment per milions de persones cada mes i amb la seva potent API també és utilitzada per molts centre media populas com l'Kodi per obtenir les meta-dades de pel·lícules, pósters i fanart per enriquir l'experiència d'usuari.</description> - <description lang="cs">themoviedb.org je otevřená a svobodná databáze filmů. Je řízena uživateli, tedy lidmi jako vy. TMDB je každý měsíc používána milióny lidí a se svým výborným API je také používano mnoha populárními mediálními centry jako je Kodi, k získávání metadat, plagátů a fanartu filmů pro obohacení uživatelského zážitku.</description> - <description lang="cy">Mae themoviedb.org yn gronfa ddata ffilmiau rhydd ac agored. Mae'n cael ei yrru gan ddefnyddwyr fel chi. Mae TMDb yn cael ei ddefnyddio gan filiynau o bobl bob mis a gyda'i API pwerus, mae'n cael ei ddefnyddio gan lawer o'r canolfannau cyfrwng fel Kodi i estyn metadata ffilmiau, posteri a chelf er mwyn cyfoethogi profiad defnyddwyr.</description> - <description lang="da">themoviedb.org er en fri og åben filmdatabase. Den er helt og aldeles brugerdrevet af folk som dig. TMDb bruges i dag af millioner af mennesker hver måned, og med deres kraftfulde API er den også brugt af mange populære mediecentre såsom Kodi til at hente metadata, plakater og fankunst til film, for at berige brugerens oplevelse.</description> - <description lang="de">TheMovieDB.org ist eine freie und offene Filmdatenbank. Sie wird von Benutzern wie dir angetrieben. TheMovieDB wird zur Zeit von millionen Nutzern jeden Monat genutzt und dank ihrer mächtigen API ist sie auch von vielen Media-Center, wie z.B. Kodi, implementiert, um Film-Metadaten, -Poster und -Fanarts zu beziehen, die das Benutzererlebnis verbessern.</description> - <description lang="el">Το themoviedb.org είναι μία δωρεάν και ανοικτή βάση δεδομένων ταινιών. Διαχειρίζεται πλήρως από ανθρώπους σαν και εσάς. Το TMDb χρησιμοποιείται από εκατομμύρια ανθρώπους κάθε μήνα, και με το πανίσχυρο API τους, χρησιμοποιείται και από πολλά δημοφιλή κέντρα πολυμέσων όπως το Kodi για να λαμβάνουν μετα-δεδομένα Ταινιών, Αφίσες και Fanart για εμπλουτισμό της εμπειρίας του χρήστη.</description> - <description lang="en">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> + <summary lang="ru_RU">TMDB ТВ шоу инфоресурс</summary> + <summary lang="sv_SE">TMDB TV-serie skrapa</summary> + <summary lang="zh_CN">TMDB 剧集刮削器</summary> + <description lang="af_ZA">themoviedb.org is 'n verniet en oop fliek databasis. Dit is totaal gebruiker gedryf deur mense soos jy. TMDB word huidiglik deur miljoene mense elke maand gebruik, en met hulle kragtige API word dit ook deur baie gewilde media sentrums soos Kodi gebruik om Fliek Metadata, Plakkate en Ondersteunerkuns te onttrek om die gebruiker se ondervinding te verryk.</description> + <description lang="be_BY">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> + <description lang="bg_BG">themoviedb.org е безплатна и отворена филмова база данни. Задвижва се изцяло от потребителите си, от хора като вас. Милиони хора по света всеки месец ползват TMDb. Благодарение на многофункционално API може да се ползва от най-различни и популярни медийни центрове като Kodi, които извличат метаданни, постери и фанарт за филмите с цел за красивото оформяне на интерфейса.</description> + <description lang="ca_ES">themoviedb.org és una base de dades oberta i lliure. Es manté completament per usuaris, per gent com tu. TMDb s'utilitza actualment per milions de persones cada mes i amb la seva potent API també és utilitzada per molts centre media populas com l'Kodi per obtenir les meta-dades de pel·lícules, pósters i fanart per enriquir l'experiència d'usuari.</description> + <description lang="cs_CZ">themoviedb.org je bezplatná a otevřená databáze filmů a seriálů. Je celá řízena uživateli, tedy lidmi jako vy. TMDb je aktuálně používána každý měsíc milióny lidí a se svým výborným API je také používána mnoha oblíbenými multimediálními centry, jako je Kodi, k získávání metadat, plakátů a fanartů filmů a seriálů pro obohacení uživatelského zážitku.</description> + <description lang="cy_GB">Mae themoviedb.org yn gronfa ddata ffilmiau rhydd ac agored. Mae'n cael ei yrru gan ddefnyddwyr fel chi. Mae TMDb yn cael ei ddefnyddio gan filiynau o bobl bob mis a gyda'i API pwerus, mae'n cael ei ddefnyddio gan lawer o'r canolfannau cyfrwng fel Kodi i estyn metadata ffilmiau, posteri a chelf er mwyn cyfoethogi profiad defnyddwyr.</description> + <description lang="da_DK">themoviedb.org er en fri og åben filmdatabase. Den er helt og aldeles brugerdrevet af folk som dig. TMDb bruges i dag af millioner af mennesker hver måned, og med deres kraftfulde API er den også brugt af mange populære mediecentre såsom Kodi til at hente metadata, plakater og fankunst til film, for at berige brugerens oplevelse.</description> + <description lang="de_DE">TheMovieDB.org ist eine freie und offene Filmdatenbank. Sie wird von Benutzern wie dir angetrieben. TheMovieDB wird zur Zeit von millionen Nutzern jeden Monat genutzt und dank ihrer mächtigen API ist sie auch von vielen Media-Center, wie z.B. Kodi, implementiert, um Film-Metadaten, -Poster und -Fanarts zu beziehen, die das Benutzererlebnis verbessern.</description> + <description lang="el_GR">Το themoviedb.org είναι μία δωρεάν και ανοικτή βάση δεδομένων ταινιών. Διαχειρίζεται πλήρως από ανθρώπους σαν και εσάς. Το TMDb χρησιμοποιείται από εκατομμύρια ανθρώπους κάθε μήνα, και με το πανίσχυρο API τους, χρησιμοποιείται και από πολλά δημοφιλή κέντρα πολυμέσων όπως το Kodi για να λαμβάνουν μετα-δεδομένα Ταινιών, Αφίσες και Fanart για εμπλουτισμό της εμπειρίας του χρήστη.</description> + <description lang="en_GB">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> <description lang="en_NZ">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> <description lang="en_US">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> - <description lang="es">themovieDB.org es una base de datos de películas gratuita y abierta. Es una página web que se basa en contenido subido por los usuarios. TMDb es usada diariamente por mucha gente gracias a su API, que es usada por más programas aparte de Kodi para descargar información de películas así como Posters o Fanart (Fondos de escritorio basados en películas usados en distintos skins) para enriquecer la experiencia de usar Kodi.</description> + <description lang="es_ES">themovieDB.org es una base de datos de películas gratuita y abierta. Es una página web que se basa en contenido subido por los usuarios. TMDb es usada diariamente por mucha gente gracias a su API, que es usada por más programas aparte de Kodi para descargar información de películas así como Posters o Fanart (Fondos de escritorio basados en películas usados en distintos skins) para enriquecer la experiencia de usar Kodi.</description> <description lang="es_AR">themovieDB.org es una base de datos de películas gratuita y abierta. Está formada con contenido subido por usuarios como vos. TMDb es actualmente utilizada por millones de personas cada mes y, gracias a su poderosa API, es usada por muchos programas populares como Kodi para descargar Información de Películas, Posters y Fanart para enriquecer la experiencia de usar Kodi.</description> <description lang="es_MX">themoviedb.org es una base de datos de películas gratis y abierta. Es completamente manejada por usuarios y personas como tu. Actualmente TMDb es usada por millones de personas cada mes, y dado a su poderosa API, es usada también por varios media centers populares como Kodi para obtener Metada de Películas, Posters y Fanarts, enriqueciendo de esta manera la experiencia del usuario.</description> - <description lang="et">themoviedb.org on tasuta ja vaba juurdepääsuga filmide andmebaas.See on täielikult koostatud sinu sarnaste inimeste poolt. TMDb on hetkel igapäevaselt kasutuses miljonite inimeste poolt ja seda kasutavad paljud populaarsed meediakeskused, nagu ka Kodi, filmiandmete, fännikunsti ja posterite leidmiseks.</description> - <description lang="fi">themoviedb.org on vapaa ja avoin elokuvatietokanta. Se on täysin käyttäjien ylläpitämä. TMDb:a käyttää miljoonat ihmiset joka kuukausi, sitä käytetään käyttäjäkokemuksen rikastuttamiseen monissa muissakin suosituissa Kodi:n kaltaisissa ohjelmissa lataamalla elokuvien tietoja, julisteita ja fanitaidetta.</description> - <description lang="fr">themoviedb.org est une base de données gratuite et libre d'accès de films. Elle est totalement gérée par les utilisateurs. TMDb est actuellement utilisée par des millions de personnes chaque mois et, grâce à ses puissantes fonctions et routines, elle est également utilisée par de nombreux Media Centers populaires comme Kodi aux fins de récupération des Métadonnées, Posters et Fanarts des films en vue d'améliorer l'expérience de l'utilisateur.</description> + <description lang="et_EE">themoviedb.org on tasuta ja vaba juurdepääsuga filmide andmebaas.See on täielikult koostatud sinu sarnaste inimeste poolt. TMDb on hetkel igapäevaselt kasutuses miljonite inimeste poolt ja seda kasutavad paljud populaarsed meediakeskused, nagu ka Kodi, filmiandmete, fännikunsti ja posterite leidmiseks.</description> + <description lang="fi_FI">themoviedb.org on vapaa ja avoin elokuvatietokanta. Se on täysin käyttäjien ylläpitämä. TMDb:a käyttää miljoonat ihmiset joka kuukausi, sitä käytetään käyttäjäkokemuksen rikastuttamiseen monissa muissakin suosituissa Kodi:n kaltaisissa ohjelmissa lataamalla elokuvien tietoja, julisteita ja fanitaidetta.</description> + <description lang="fr_FR">themoviedb.org est une base de données gratuite et libre d'accès de films. Elle est totalement gérée par les utilisateurs. TMDb est actuellement utilisée par des millions de personnes chaque mois et, grâce à ses puissantes fonctions et routines, elle est également utilisée par de nombreux Media Centers populaires comme Kodi aux fins de récupération des Métadonnées, Posters et Fanarts des films en vue d'améliorer l'expérience de l'utilisateur.</description> <description lang="fr_CA">themoviedb.org est une base de données libre et ouverte. Elle est complètement gérée par des gens comme vous. TMDb est actuellement utilisée par des millions de personnes chaque mois et avec son API puissante, elle est également utilisée par de nombreux centres multimédias populaires comme Kodi pour récupérer les métadonnées des films, les affiches et le fanart afin d'enrichir l'expérience de l'utilisateur.</description> - <description lang="gl">themoviedb.org é una base de datos sobre filmes libre e aberta, impulsada por xente coma ti. Na actualidade TMDb é usada por millóns de persoas todos os meses, e grazas ó seu potente API, usado por algúns dos centros multimedia máis populares como Kodi para obter a información dos filmes, Posters e Fanart e así mellorar a experiencia do usuario.</description> - <description lang="he">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> - <description lang="hr">themoviedb.org je besplatna i otvorena baza filmskih podataka. TMDb trenutno koriste milijuni ljudi svaki mjesec uz pomoću njegovog snažnog API-ja, isto tako se koristi u mnogim popularnim medijskim centrima poput Kodija, kako bi mogli sakupljati informacije o filmovima, filmske postere, omote filmova i na kraju obogatili korisničko iskustvo.</description> - <description lang="hu">A themoviedb.org egy ingyenes és nyílt filmadatbázis. Teljes egészében olyan felhasználók töltik fel, mint például Te. A TMDb-t havonta emberek milliói használják és a hatékony API-n keresztül számos népszerű média center is, mint például az Kodi a filmadatok, poszterek, fanartképek letöltésére.</description> - <description lang="id">themoviedb.org adalah database film yang gratis dan terbuka. Ini benar-benar digerakkan oleh orang-orang seperti Anda. TMDb saat ini digunakan oleh jutaan orang setiap bulannya dan dengan APInya yang digdaya, juga digunakan oleh beberapa pusat media seperti Kodi untuk mengambil Metadata Film, Poster dan Fanart untuk menperkaya pengalaman penggunanya.</description> - <description lang="is">themoviedb.org er frír og opinn gagnagrunnur. Hann er algjörlega rekinn af fólki eins og þér. TMBd er notaður af milljónum manna í hverjum mánuði og með öflugum forritaskilum þeirra (API), er hann líka notaður af mörgum vinsælum heimabíókerfum eins og Kodi til að ná í Ítarupplýsingar yfir Kvikmyndir, Veggspjöld og Fanart til að lífga upplifun notandans.</description> - <description lang="it">themoviedb.org è un database libero e aperto. E' gestito da utenti e persone come te. Viene usato correntemente da millioni di persone ogni mese e con le sue potenti API, è anche utilizzato da molti popolari media centers come Kodi per ottenere Metadati, Posters e Fanart di film per arricchire la loro esperienza utente.</description> - <description lang="ja">themoviedb.org は自由でオープンな映画データベースです。その運営は、完全にユーザ主導で行われています。TMDb は現在毎月何百万人もの人に利用されているほか、Kodi のようなメディアセンターも、TMDb のパワフルな API を介して映画メタデータ、ポスター、ファンアートを取得し、使い勝手を向上させるなどして使っています。</description> - <description lang="ko">themoviedb.org 는 전적으로 여러분 같은 이용자가 주도하는 무료 공개 영화 데이터베이스입니다. TMDb 는 현재 매월 수백만의 사람들이 강력한 API와 함께 사용하고 있을 뿐만 아니라 Kodi 같은 많은 미디어 센터가 영화 정보, 포스터, 팬아트를 가져와 풍성한 사용자 경험을 제공하는데 이용되고 있습니다.</description> - <description lang="lt">themoviedb.org yra nemokama ir atvira Filmų duomenų bazė. Jis remiamas ir skaitinamas tokių pat vartotojų kaip ir jūs. TMDb šiuo metu naudoja milijonai žmonių kiekvieną mėnesį, ir turi galingą API (informacinį centrą), taip pat naudojamas daug populiarių žiniasklaidos centrų. Pavyzdžiui Kodi gauti filmo(-ų) metaduomenis, plakatus ir FanArt siekiant praturtinti vartotojo patirtį.</description> - <description lang="mk">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> - <description lang="ml">മൂവി ഡി ബി, എല്ലാവർക്കും കൈവക്കാവുന്ന ഒരു സൗജന്യ വിവരശേഖരമാണ്. ഇതുമൂലം ലോകം മുഴുവനും സിനിമാ പോസ്റ്ററുകൾ എല്ലവരും കാണുന്നു</description> - <description lang="ms">themoviedb.org adalah pangkalan data cakera terbuka. Ia sepenuhnya dipacu oleh individu seperti anda. TMDb buat masa ini diguna oleh berjuta-juta individu setiap bulan dan dengan API hebat mereka, ia juga digunakan oleh banyak pusat media popular seperti Kodi untuk mendapatkan Data Meta, Poster, Seni Peminat Cereka untuk memperkayakan pengalaman pengguna.</description> - <description lang="nl">Themoviedb.org is een vrije en open filmdatabank. Gebruikers zoals jij vormen de motor van deze site. Op dit moment gebruiken elke maand miljoenen mensen TMDb. De krachtige API van de site laat mediacenters zoals Kodi toe om metadata, posters en fanart op te halen en zo de gebruikerservaring te verrijken.</description> - <description lang="no">themoviedb.org er en gratis og åpen filmdatabase. Den drives helt og fullt av mennesker som deg. TMDb brukes av millioner av mennesker hver måned og med sitt gode API, brukes den også av mange popluære mediasenterløsninger som Kodi for å hente metadata for filmer, plakater og fanart for å gi en bedre brukeropplevelse.</description> - <description lang="pl">themoviedb.org jest wolną i otwartą filmową bazą danych, zarządzaną przez osoby takie jak Ty. Obecnie odwiedzają ją miliony osób miesięcznie, a dzięki dostępności interfejsu programistycznego jest używana przez wiele centrów multimedialnych takich jak Kodi, jako źródło informacji o filmach, plakatów i tapet.</description> - <description lang="pt">O themoviedb.org é uma base de dados de filmes livre e aberta. É actualizado inteiramente por pessoas como você e usado por milhões todos os meses. Com o poderoso motor de busca disponível, também se tornou no favorito para muitos programas de centro de média, como o popular Kodi, para obter informação, posters e fanart que enriquecem a experiência do utilizador.</description> + <description lang="gl_ES">themoviedb.org é una base de datos sobre filmes libre e aberta, impulsada por xente coma ti. Na actualidade TMDb é usada por millóns de persoas todos os meses, e grazas ó seu potente API, usado por algúns dos centros multimedia máis populares como Kodi para obter a información dos filmes, Posters e Fanart e así mellorar a experiencia do usuario.</description> + <description lang="he_IL">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> + <description lang="hr_HR">themoviedb.org je besplatna i otvorena baza filmskih podataka. TMDb trenutno koriste milijuni ljudi svaki mjesec uz pomoću njegovog snažnog API-ja, isto tako se koristi u mnogim popularnim medijskim centrima poput Kodija, kako bi mogli sakupljati informacije o filmovima, filmske postere, omote filmova i na kraju obogatili korisničko iskustvo.</description> + <description lang="hu_HU">A themoviedb.org egy ingyenes és nyílt filmadatbázis. Teljes egészében olyan felhasználók töltik fel, mint például Te. A TMDb-t havonta emberek milliói használják és a hatékony API-n keresztül számos népszerű média center is, mint például az Kodi a filmadatok, poszterek, fanartképek letöltésére.</description> + <description lang="id_ID">themoviedb.org adalah database film yang gratis dan terbuka. Ini benar-benar digerakkan oleh orang-orang seperti Anda. TMDb saat ini digunakan oleh jutaan orang setiap bulannya dan dengan APInya yang digdaya, juga digunakan oleh beberapa pusat media seperti Kodi untuk mengambil Metadata Film, Poster dan Fanart untuk menperkaya pengalaman penggunanya.</description> + <description lang="is_IS">themoviedb.org er frír og opinn gagnagrunnur. Hann er algjörlega rekinn af fólki eins og þér. TMBd er notaður af milljónum manna í hverjum mánuði og með öflugum forritaskilum þeirra (API), er hann líka notaður af mörgum vinsælum heimabíókerfum eins og Kodi til að ná í Ítarupplýsingar yfir Kvikmyndir, Veggspjöld og Fanart til að lífga upplifun notandans.</description> + <description lang="it_IT">themoviedb.org è un database libero e aperto. E' gestito da utenti e persone come te. Viene usato correntemente da millioni di persone ogni mese e con le sue potenti API, è anche utilizzato da molti popolari media centers come Kodi per ottenere Metadati, Posters e Fanart di film per arricchire la loro esperienza utente.</description> + <description lang="ja_JP">themoviedb.org は自由でオープンな映画データベースです。その運営は、完全にユーザ主導で行われています。TMDb は現在毎月何百万人もの人に利用されているほか、Kodi のようなメディアセンターも、TMDb のパワフルな API を介して映画メタデータ、ポスター、ファンアートを取得し、使い勝手を向上させるなどして使っています。</description> + <description lang="ko_KR">themoviedb.org 는 전적으로 여러분 같은 이용자가 주도하는 무료 공개 영화 데이터베이스입니다. TMDb 는 현재 매월 수백만의 사람들이 강력한 API와 함께 사용하고 있을 뿐만 아니라 Kodi 같은 많은 미디어 센터가 영화 정보, 포스터, 팬아트를 가져와 풍성한 사용자 경험을 제공하는데 이용되고 있습니다.</description> + <description lang="lt_LT">themoviedb.org yra nemokama ir atvira Filmų duomenų bazė. Jis remiamas ir skaitinamas tokių pat vartotojų kaip ir jūs. TMDb šiuo metu naudoja milijonai žmonių kiekvieną mėnesį, ir turi galingą API (informacinį centrą), taip pat naudojamas daug populiarių žiniasklaidos centrų. Pavyzdžiui Kodi gauti filmo(-ų) metaduomenis, plakatus ir FanArt siekiant praturtinti vartotojo patirtį.</description> + <description lang="mk_MK">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like Kodi to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description> + <description lang="ml_IN">മൂവി ഡി ബി, എല്ലാവർക്കും കൈവക്കാവുന്ന ഒരു സൗജന്യ വിവരശേഖരമാണ്. ഇതുമൂലം ലോകം മുഴുവനും സിനിമാ പോസ്റ്ററുകൾ എല്ലവരും കാണുന്നു</description> + <description lang="ms_MY">themoviedb.org adalah pangkalan data cakera terbuka. Ia sepenuhnya dipacu oleh individu seperti anda. TMDb buat masa ini diguna oleh berjuta-juta individu setiap bulan dan dengan API hebat mereka, ia juga digunakan oleh banyak pusat media popular seperti Kodi untuk mendapatkan Data Meta, Poster, Seni Peminat Cereka untuk memperkayakan pengalaman pengguna.</description> + <description lang="nl_NL">Themoviedb.org is een vrije en open filmdatabank. Gebruikers zoals jij vormen de motor van deze site. Op dit moment gebruiken elke maand miljoenen mensen TMDb. De krachtige API van de site laat mediacenters zoals Kodi toe om metadata, posters en fanart op te halen en zo de gebruikerservaring te verrijken.</description> + <description lang="nb_NO">themoviedb.org er en gratis og åpen filmdatabase. Den drives helt og fullt av mennesker som deg. TMDb brukes av millioner av mennesker hver måned og med sitt gode API, brukes den også av mange popluære mediasenterløsninger som Kodi for å hente metadata for filmer, plakater og fanart for å gi en bedre brukeropplevelse.</description> + <description lang="pl_PL">themoviedb.org jest wolną i otwartą filmową bazą danych, zarządzaną przez osoby takie jak Ty. Obecnie odwiedzają ją miliony osób miesięcznie, a dzięki dostępności interfejsu programistycznego jest używana przez wiele centrów multimedialnych takich jak Kodi, jako źródło informacji o filmach, plakatów i tapet.</description> + <description lang="pt_PT">O themoviedb.org é uma base de dados de filmes livre e aberta. É actualizado inteiramente por pessoas como você e usado por milhões todos os meses. Com o poderoso motor de busca disponível, também se tornou no favorito para muitos programas de centro de média, como o popular Kodi, para obter informação, posters e fanart que enriquecem a experiência do utilizador.</description> <description lang="pt_BR">O themoviedb.org é um banco de dados aberto e gratuito. É completamente operado por pessoas como você. O TMDb é atualmente usado por milhares de pessoas a cada mês e com sua poderosa API, é usado por muitas centrais de mídia populares como o Kodi para buscar metadados, cartazes e fanart de filmes para enriquecer a experiência do usuário.</description> - <description lang="ro">themoviedb.org este o bază de date de filme gratuită și deschisă. Este actualizată de oameni ca și tine. TMDb este curent folosită de milioane de oameni în fiecare lună și datorită API-ului puternic, este de asemena folosită de multe centre media populare ca Kodi pentru a obține informații despre filme, afișe și imagini produse de fani (Fanart) care îmbogățesc experiența utilizatorului.</description> - <description lang="ru">themoviedb.org — это бесплатная и открытая база данных фильмов. Она полностью поддерживается обычными людьми. В данный момент сайт TMDb используют миллионы людей каждый месяц, и благодаря мощному API его могут использовать различные популярные медиацентры, такие как Kodi, чтобы получать метаданные, постеры и фанарт для фильмов с целью красивого оформления интерфейса.</description> + <description lang="ro_RO">themoviedb.org este o bază de date de filme gratuită și deschisă. Este actualizată de oameni ca și tine. TMDb este curent folosită de milioane de oameni în fiecare lună și datorită API-ului puternic, este de asemena folosită de multe centre media populare ca Kodi pentru a obține informații despre filme, afișe și imagini produse de fani (Fanart) care îmbogățesc experiența utilizatorului.</description> + <description lang="ru_RU">themoviedb.org — это бесплатная и открытая база данных фильмов. Она полностью поддерживается обычными людьми. В данный момент сайт TMDb используют миллионы людей каждый месяц, и благодаря мощному API его могут использовать различные популярные медиацентры, такие как Kodi, чтобы получать метаданные, постеры и фанарт для фильмов с целью красивого оформления интерфейса.</description> <description lang="se">themoviedb.org är en fri och öppen filmdatabas. Det drivs helt av människor som dig. TMDb används av miljontals människor varje månad och med deras kraftfulla API, är det också använt av många populära mediacenter som Kodi för att hämta filmmetadata, omslag och fanart för att förgylla användarens upplevelse.</description> - <description lang="sk">themoviedb.org je voľná a otvorená databáza filmov. Je výlučne vedená užívateľmi ako si ty. TMDb je každý mesiac používaná miliónmi ľudí, a vďaka svojmu výkonnému API je veľmi populárna medzi 'media centrami' ako Kodi pre sťahovanie filmových metadát, plagátov a fanartov pre obohatenie zážitkov.</description> - <description lang="sl">themoviedb.org je brezplačna in prosta baza filmov. Je v celoti ustvarjena s strani uporabnikov kot ste vi. TMDB uporablja miljone ljudi in z njihovo močno API, jo lahko uporabljate tudi v multimedijskih centrih kot Kodi, s tem prenesete informacije o filmih, plakate in ozadja ter s tem popestrite uporabniško izkušnjo.</description> - <description lang="sv">themoviedb.org är en gratis och öppen filmdatabas. Den drivs helt av människor som du. TMDb används för närvarande av miljoner människor varje månad och med deras kraftfulla API används den även av många populära mediacenter som t.ex. Kodi för att hämta metadata om filmer, affischer och fanart för att berika användarens upplevelse.</description> + <description lang="sk_SK">themoviedb.org je voľná a otvorená databáza filmov. Je výlučne vedená užívateľmi ako si ty. TMDb je každý mesiac používaná miliónmi ľudí, a vďaka svojmu výkonnému API je veľmi populárna medzi 'media centrami' ako Kodi pre sťahovanie filmových metadát, plagátov a fanartov pre obohatenie zážitkov.</description> + <description lang="sl_SI">themoviedb.org je brezplačna in prosta baza filmov. Je v celoti ustvarjena s strani uporabnikov kot ste vi. TMDB uporablja miljone ljudi in z njihovo močno API, jo lahko uporabljate tudi v multimedijskih centrih kot Kodi, s tem prenesete informacije o filmih, plakate in ozadja ter s tem popestrite uporabniško izkušnjo.</description> + <description lang="sv_SE">themoviedb.org är en gratis och öppen filmdatabas. Den drivs helt av människor som du. TMDb används för närvarande av miljoner människor varje månad och med deras kraftfulla API används den även av många populära mediacenter som t.ex. Kodi för att hämta metadata om filmer, affischer och fanart för att berika användarens upplevelse.</description> <description lang="ta_IN">themoviedb.org ஒரு இலவச மற்றும் திறந்த திரைப்பட தரவுத்தளம் ஆகும். இந்த தரவுத்தளம் முற்றிலும் பயனர் மக்களால் இயக்கப்படுகிறது. TMDb அவர்களது சக்திவாய்ந்த API இனால் தற்போது பல இலட்சக்கணக்கான மக்களால் ஒவ்வொரு மாதமும் பயன்படுத்தப்படுகிறது, இது Kodi போன்ற பல பிரபல ஊடக மையங்களில் பயனர் அனுபவத்தை மேம்படுத்த பயன்படுத்தப்படுகிறது.</description> - <description lang="th">themoviedb.org เป็นฐานข้อมูลภาพยนตร์ที่ฟรีและเปิดกว้าง. มันถูกขับเคลื่อนจากผู้ใช้ โดยคนเช่นคุณ. TMDb ปัจจุบันมีการใช้โดยคนนับล้านในแต่ละเดือน และมีประสิทธิภาพด้วย API ของพวกเขา , มันยังถูกใช้โดยหลายศูนย์สื่อที่นิยมเช่น Kodi เพื่อดึง อธิบายข้อมูลภาพยนตร์, โปสเตอร์และ แฟนอาร์ต เพื่อเพิ่มประสบการณ์ของผู้ใช้</description> - <description lang="tr">themoviedb.org ücretsiz ve herkese açık bir film veri tabanıdır. Tamamen kullanıcılar tarafından oluşturulmakta ve yönetilmektedir. TMDb her ay milyonlarca kullanıcı tarafından kullanılmakta ve güçlü API'si sayesinde Kodi gibi bir çok popüler medya merkezi tarafından Film Veritabanı, Poster ve Fanart bilgilerini kullanarak kullanıcı deneyimini zenginleştirmektedir.</description> - <description lang="uk">themoviedb.org - це безкоштовна і відкрита база даних фільмів. Вона повністю підтримується звичайними людьми. В даний момент сайт TMDb використовують мільйони людей кожен місяць, і завдяки потужному API, його можуть використовувати різні популярні медіацентри, такі як Kodi, щоб отримувати метадані, постери і фанарт для фільмів з метою оформлення інтерфейсу.</description> - <description lang="vi">themoviedb.org là cơ sở dữ liệu về phim ảnh mở và miễn phí. Nó hoàn toàn được kiểm soát bởi những người như bạn. TMDb hiện tại đang được sử dụng bởi hàng triệu người dùng hàng tháng và với sự hỗ trợ của bộ API mạnh mẽ nó cũng được sử dụng bởi những thiết bị giải trí cá nhân như Kodi cho việc lấy dữ liệu về Phim ảnh, Poster và Fanart để làm tăng trải nghiệm của người sử dụng</description> - <description lang="zh">themoviedb.org 是一个开放和自由的电影数据库。它完全由象你一样的用户来掌控。TMDb 每月为上百万用户提供服务,并通过强大的 API 界面为许多流行的媒体中心系统如 Kodi 提供电影资料、封面海报和同人画以丰富用户的体验。</description> + <description lang="th_TH">themoviedb.org เป็นฐานข้อมูลภาพยนตร์ที่ฟรีและเปิดกว้าง. มันถูกขับเคลื่อนจากผู้ใช้ โดยคนเช่นคุณ. TMDb ปัจจุบันมีการใช้โดยคนนับล้านในแต่ละเดือน และมีประสิทธิภาพด้วย API ของพวกเขา , มันยังถูกใช้โดยหลายศูนย์สื่อที่นิยมเช่น Kodi เพื่อดึง อธิบายข้อมูลภาพยนตร์, โปสเตอร์และ แฟนอาร์ต เพื่อเพิ่มประสบการณ์ของผู้ใช้</description> + <description lang="tr_TR">themoviedb.org ücretsiz ve herkese açık bir film veri tabanıdır. Tamamen kullanıcılar tarafından oluşturulmakta ve yönetilmektedir. TMDb her ay milyonlarca kullanıcı tarafından kullanılmakta ve güçlü API'si sayesinde Kodi gibi bir çok popüler medya merkezi tarafından Film Veritabanı, Poster ve Fanart bilgilerini kullanarak kullanıcı deneyimini zenginleştirmektedir.</description> + <description lang="uk_UA">themoviedb.org - це безкоштовна і відкрита база даних фільмів. Вона повністю підтримується звичайними людьми. В даний момент сайт TMDb використовують мільйони людей кожен місяць, і завдяки потужному API, його можуть використовувати різні популярні медіацентри, такі як Kodi, щоб отримувати метадані, постери і фанарт для фільмів з метою оформлення інтерфейсу.</description> + <description lang="vi_VN">themoviedb.org là cơ sở dữ liệu về phim ảnh mở và miễn phí. Nó hoàn toàn được kiểm soát bởi những người như bạn. TMDb hiện tại đang được sử dụng bởi hàng triệu người dùng hàng tháng và với sự hỗ trợ của bộ API mạnh mẽ nó cũng được sử dụng bởi những thiết bị giải trí cá nhân như Kodi cho việc lấy dữ liệu về Phim ảnh, Poster và Fanart để làm tăng trải nghiệm của người sử dụng</description> + <description lang="zh_CN">themoviedb.org 是一个开放和自由的电影数据库。它完全由象你一样的用户来掌控。TMDb 每月为上百万用户提供服务,并通过强大的 API 界面为许多流行的媒体中心系统如 Kodi 提供电影资料、封面海报和同人画以丰富用户的体验。</description> <description lang="zh_TW">themoviedb.org是一個免費和開放的電影資料庫。它是完全由與您一樣的廣大使用者來更新資訊。 TMDb目前擁有數以百萬計的使用人次並且有著強大的API,許多受歡迎的媒體中心平台像Kodi藉由TMDb獲取電影的數據資料庫,海報和影片資訊,以豐富使用者體驗。</description> <platform>all</platform> <license>GPL v2.0</license> - <forum>http://forum.xbmc.org/showthread.php?tid=200504</forum> - <website></website> - <email></email> - <source></source> + <forum>https://forum.kodi.tv/showthread.php?tid=200504</forum> + <website>https://www.themoviedb.org/</website> + <assets> + <icon>icon.png</icon> + </assets> </extension> </addon> diff --git a/addons/metadata.tvshows.themoviedb.org/changelog.txt b/addons/metadata.tvshows.themoviedb.org/changelog.txt index 32c6e01a1c..a56f410f80 100644 --- a/addons/metadata.tvshows.themoviedb.org/changelog.txt +++ b/addons/metadata.tvshows.themoviedb.org/changelog.txt @@ -1,3 +1,74 @@ +[B]3.5.12[/B] +- Changed: updated de and zh language codes to match tmdb - these codes needs to be reset by the users + +[B]3.5.10[/B] +- Fixed: Try to workaround search results issue + +[B]3.5.9[/B] +- Fixed: Guest Stars were not scraped in some cases + + +[B]3.5.8[/B] +- Fixed: Some more fixes following tmdb layout changes + +[B]3.5.7[/B] +- Fixed: Episode list for languages what are not available + +[B]3.5.6[/B] +- Fixed: Scraping following TMDB API layout changes + +[B]3.5.5[/B] +- Fixed: Swapped actor name and role for actors without photo + +[B]3.5.4[/B] +- Fixed: Change image URLs from http to https + +[B]3.5.3[/B] +- Fixed: Exclude backdrops with text to be scraped as fanart + +[B]3.5.2[/B] +- Changed: API URLs api.tmdb.org + +[B]3.5.1[/B] +- Added: option to exclude wide banners from thetvdb + +[B]3.5.0[/B] +- Added: Year to search query +- Added: Return results based on the "name" field as well as "original_name" +- Added: Multiple episode thumbs +- Changed: Artwork order, so tmdb artwork is first +- Changed: Reduce the number of files requested from tmdb +- Changed: Update URLs to https +- Fixed: Fetch all series regular actors not just current season + +[B]3.4.2[/B] +- Fixed: Unscraped episodes caused by Square brackets in plot (thanks scudlee) + +[B]3.4.1[/B] +- Fixed: Scraping episodes when no Air Date exists + +[B]3.4.0[/B] +- Added: option to select certification country + +[B]3.3.0[/B] +- Added: scraping of IMDb and TVDB IDs +- Added: option to set certification prefix + +[B]3.2.0[/B] +- Added: Option to scrape IMDb ratings + +[B]3.1.3[/B] +- Fixed: GetSearchResults after some changes on TMDb + +[B]3.1.2[/B] +- Updated: Czech language +- Fixed: Scraping TV Series ratings a votes + +[B]3.1.1[/B] +- Changed: use new language directory structure +- Added: website in addon.xml +- Added: assets tag in addon.xml + [B]3.1.0[/B] - Changed: re-use season files to reduce number of API calls for episode details - Added: small cache persistence diff --git a/addons/metadata.tvshows.themoviedb.org/resources/settings.xml b/addons/metadata.tvshows.themoviedb.org/resources/settings.xml index c6cd65137e..e027b63d95 100644 --- a/addons/metadata.tvshows.themoviedb.org/resources/settings.xml +++ b/addons/metadata.tvshows.themoviedb.org/resources/settings.xml @@ -1,7 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> <settings> - <setting label="30005" type="bool" id="keeporiginaltitle" default="false"/> - <setting label="30006" type="bool" id="tmdbart" default="true"/> - <setting label="30007" type="bool" id="fanarttvart" default="true"/> - <setting label="30002" type="select" values="bg|cs|da|de|ee|el|en|es|fa|fa-ir|fi|fr|fr-ca|he|hr|hu|it|ja|ko|nl|no|pl|pt|pt-br|ru|sl|sr|sv|tr|zh-cn|zh-tw" id="language" default="en"/> -</settings> + <setting label="30005" type="bool" id="keeporiginaltitle" default="false"/> + <setting label="30002" type="select" values="ar-AE|ar-SA|be-BY|bg|bn-BD|ca-ES|ch-GU|cs|da|de-DE|el|en|eo-EO|es|es-MX|et-EE|eu-ES|fa|fa-ir|fi|fr-FR|fr-CA|gl|he|hi-IN|hr|hu|id-ID|it-IT|ja|ka-GE|ko|lt-LT|lv-LV|ml-IN|nb|nl|no|pl|pt|pt-br|ro|ru|sk|sl|sr|sv|ta-IN|th|tr|uk|vi-VN|zh-CN|zh-HK|zh-TW" id="language" default="en"/> + <setting label="30014" type="text" id="titleprefix" default="Episode "/> + <setting label="30015" type="text" id="titlesuffix" default=""/> + <setting type="sep" /> + <setting label="30006" type="bool" id="tmdbart" default="true"/> + <setting label="30007" type="bool" id="fanarttvart" default="true"/> + <setting label="30013" type="bool" id="tvdbwidebanners" default="true"/> + <setting type="sep" /> + <setting type="sep" /> + <setting label="30008" type="labelenum" values="Themoviedb|IMDb" id="RatingS" default="Themoviedb"/> + <setting label="30009" type="bool" id="fallback" subsetting="true" visible="eq(-1,1)" default="true"/> + <setting label="30010" type="bool" id="alsoimdb" subsetting="true" visible="eq(-2,0)" default="false"/> + <setting type="sep" /> + <setting label="30012" type="select" values="au|bg|br|ca|cz|ge|de|dk|ee|es|fi|fr|gb|gr|hr|hu|id|il|in|it|ir|jp|kr|lt|lv|mx|nl|no|pl|pt|ru|se|si|sv|th|tr|ua|us|vn|zh" id="tmdbcertcountry" default="us"/> + <setting label="30011" type="text" id="certprefix" default=""/> +</settings>
\ No newline at end of file diff --git a/addons/metadata.tvshows.themoviedb.org/tmdb.xml b/addons/metadata.tvshows.themoviedb.org/tmdb.xml index 252527f91e..65a6b4bb08 100644 --- a/addons/metadata.tvshows.themoviedb.org/tmdb.xml +++ b/addons/metadata.tvshows.themoviedb.org/tmdb.xml @@ -1,26 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> <scraper framework="1.1" date="2013-10-26"> <CreateSearchUrl dest="3"> - <RegExp input="$$1" output="<url>http://api.themoviedb.org/3/search/tv?api_key=6a5be4999abf74eba1f9a8311294c267&amp;query=\1&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="3"> + <RegExp input="$$1" output="<url cache="tmdb-search-\1$$6-$INFO[language].json">https://api.themoviedb.org/3/search/tv?api_key=6a5be4999abf74eba1f9a8311294c267&amp;query=\1$$5&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="3"> + <RegExp input="$$2" output="&amp;first_air_date_year=\1" dest="5"> + <expression clear="yes">(.+)</expression> + </RegExp> + <RegExp input="$$2" output="-(\1)" dest="6"> + <expression clear="yes">(.+)</expression> + </RegExp> <expression noclean="1" /> </RegExp> </CreateSearchUrl> <NfoUrl dest="3"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$1" output="<url function="GetTMDBId">http://api.themoviedb.org/3/find/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=imdb_id</url>" dest="5"> + <RegExp input="$$1" output="<url function="GetTMDBId">https://api.themoviedb.org/3/find/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=imdb_id</url>" dest="5"> <expression clear="yes" noclean="1">imdb....?/title/(tt[0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<url function="GetTMDBId">http://api.themoviedb.org/3/find/tt\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=imdb_id</url>" dest="5"> + <RegExp input="$$1" output="<url function="GetTMDBId">https://api.themoviedb.org/3/find/tt\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=imdb_id</url>" dest="5"> <expression noclean="1">imdb....?/Title\?([0-9]*)</expression> </RegExp> - <RegExp input="$$1" output="<url function="GetTMDBId">http://api.themoviedb.org/3/find/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=tvdb_id</url>" dest="5"> - <expression noclean="1">http://(?:www\.)?thetvdb\.com/(?:index\.php)?\?tab=series&id=([0-9]+)</expression> + <RegExp input="$$1" output="<url function="GetTMDBId">https://api.themoviedb.org/3/find/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;external_source=tvdb_id</url>" dest="5"> + <expression noclean="1">https?://(?:www\.)?thetvdb\.com/(?:index\.php)?\?tab=series&id=([0-9]+)</expression> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1</id>" dest="5"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1</id>" dest="5"> <expression noclean="1">themoviedb\.org/tv/([0-9]+)</expression> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1|\2</id>" dest="5"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1|\2</id>" dest="5"> <expression noclean="1">themoviedb\.org/tv/([0-9]+)[^\/]*/episode_group/([0-9a-f]+)</expression> </RegExp> <expression noclean="1" /> @@ -28,7 +34,7 @@ </NfoUrl> <GetTMDBId dest="3"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$7" output="<url cache="tmdb-\1-$INFO[language].json">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1</id>" dest="5"> + <RegExp input="$$7" output="<url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\1</id>" dest="5"> <RegExp input="$$1" output="\1" dest="7"> <expression noclean="1">"tv_results":\[([^\]]+)\]</expression> </RegExp> @@ -40,22 +46,34 @@ <GetSearchResults dest="8"> <RegExp input="$$3" output="<results>\1</results>" dest="8"> - <RegExp input="$$1" output="<entity><title>\3</title><id>\1</id><year>\2</year><url cache="tmdb-\1-$INFO[language].json">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3"> - <expression repeat="yes">"id":([0-9]*),.*?"first_air_date":"([0-9]+).*?"original_name":"([^"]*)"</expression> + <RegExp input="$$1" output="<entity><title>\3</title><id>\2</id><year>\1</year><url cache="tmdb-\2-$INFO[language].json">https://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3"> + <expression repeat="yes">{(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"original_name":"([^"]*)"[^}]*</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><year>\3</year><url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"original_name":"([^"]*)"[^}]*(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\3</title><id>\1</id><year>\2</year><url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"(?:(?!}).)*"original_name":"([^"]*)"[^}]*</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><url cache="tmdb-\1-$INFO[language].json">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> - <expression repeat="yes">"id":([0-9]*),.*?"first_air_date":null.*?"original_name":"([^"]*)"</expression> + <RegExp input="$$1" output="<entity><title>\1</title><id>\2</id><year>\3</year><url cache="tmdb-\2-$INFO[language].json">https://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"original_name":"([^"]*)"[^}]*(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\1</title><id>\2</id><year>\3</year><url cache="tmdb-\2-$INFO[language].json">http://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> - <expression repeat="yes">original_name":"([^"]*)","id":([0-9]*),.*?"first_air_date":"([0-9]+).*?"</expression> + <RegExp input="$$1" output="<entity><title>\3</title><id>\2</id><year>\1</year><url cache="tmdb-\2-$INFO[language].json">https://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"name":"([^"]*)"[^}]*</expression> </RegExp> - <RegExp input="$$1" output="<entity><title>\1</title><id>\2</id><url cache="tmdb-\2-$INFO[language].json">http://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> - <expression repeat="yes">original_name":"([^"]*)","id":([0-9]*),.*?"first_air_date":null.*?"</expression> + <RegExp input="$$1" output="<entity><title>\2</title><id>\1</id><year>\3</year><url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"name":"([^"]*)"[^}]*(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\3</title><id>\1</id><year>\2</year><url cache="tmdb-\1-$INFO[language].json">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"(?:(?!}).)*"name":"([^"]*)"[^}]*</expression> + </RegExp> + <RegExp input="$$1" output="<entity><title>\1</title><id>\2</id><year>\3</year><url cache="tmdb-\2-$INFO[language].json">https://api.themoviedb.org/3/tv/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url></entity>" dest="3+"> + <expression repeat="yes">{(?:(?!}).)*"name":"([^"]*)"[^}]*(?:(?!}).)*"id":([0-9]*)(?:(?!}).)*(?:(?!}).)*"first_air_date":"(?:|([0-9]+)[^"]*?)"</expression> </RegExp> <expression noclean="1" /> </RegExp> </GetSearchResults> - + <GetDetails dest="3"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> <RegExp input="$$2" output="\1" dest="10"> @@ -76,6 +94,18 @@ <RegExp input="$$10" output="<id>\1</id><uniqueid type="tmdb" default="true">\1</uniqueid>" dest="5+"> <expression/> </RegExp> + <RegExp input="$$1" output="\1" dest="14"> + <expression>"imdb_id":"(tt\d+)"</expression> + </RegExp> + <RegExp input="$$1" output="\1" dest="19"> + <expression>"tvdb_id":(\d+),</expression> + </RegExp> + <RegExp input="$$14" output="<uniqueid type="imdb" default="false">\1</uniqueid>" dest="5+"> + <expression>(.+)</expression> + </RegExp> + <RegExp input="$$19" output="<uniqueid type="tvdb" default="false">\1</uniqueid>" dest="5+"> + <expression>(.+)</expression> + </RegExp> <RegExp input="$$1" output="<year>\1</year>" dest="5+"> <expression noclean="1">"first_air_date":"([0-9]+)-</expression> </RegExp> @@ -97,20 +127,32 @@ <RegExp input="$$7" output="<credits>\1</credits>" dest="5+"> <expression repeat="yes" fixchars="1">"name":"([^"]*)","job":"Writer"</expression> </RegExp> - <RegExp input="$$7" output="<ratings><rating name="themoviedb" default="true">\1</rating></ratings>" dest="5+"> + <RegExp input="$$8" output="\1" dest="5+"> <RegExp input="$$1" output="<value>\1</value>" dest="7"> - <expression>"vote_average":([^,]*),</expression> + <expression>"type".+?"vote_average":([^,]*),</expression> </RegExp> <RegExp input="$$1" output="<votes>\1</votes>" dest="7+"> - <expression>"vote_count":([0-9]+)</expression> + <expression>"type".+?"vote_count":([0-9]+)</expression> + </RegExp> + <RegExp input="$INFO[RatingS]" output="default="true"" dest="17"> + <expression>Themoviedb</expression> + </RegExp> + <RegExp input="" output="" dest="8"> + <expression /> + </RegExp> + <RegExp input="$INFO[RatingS]|$INFO[fallback]" output="<ratings><rating name="themoviedb" $$17>$$7</rating></ratings>" dest="8"> + <expression>Themoviedb|true</expression> </RegExp> <expression noclean="1">(.+)</expression> </RegExp> - <RegExp input="$$1" output="<mpaa>\1</mpaa>" dest="5+"> - <expression>"rating":"([^"]*)"</expression> + <RegExp input="$$14|$INFO[RatingS]|default|$INFO[alsoimdb]" output="<chain function="GetIMDBRatingsById">$$14\1</chain>" dest="5+"> + <expression>^tt\d+\|(?:IMDb(\|default)|.*true$)</expression> </RegExp> - <RegExp input="$$10" output="<chain function="GetCast">$$10</chain>" dest="5+"> - <expression /> + <RegExp input="$$1" output="<mpaa>$INFO[certprefix]\1</mpaa>" dest="5+"> + <expression>"$INFO[tmdbcertcountry]","rating":"([^"]*)"</expression> + </RegExp> + <RegExp input="$$1" output="<chain function="GetCast">$$10|\1</chain>" dest="5+"> + <expression repeat="yes">"season_number":([0-9]+)</expression> </RegExp> <RegExp input="$$7" output="<genre>\1</genre>" dest="5+"> <RegExp input="$$1" output="\1" dest="7"> @@ -119,27 +161,18 @@ <expression repeat="yes" fixchars="1">"name":"([^"]*)</expression> </RegExp> <RegExp input="$$1" output="\1" dest="9"> - <expression clear="yes" fixchars="1">original_name":"[^"]*","overview":"(.+?)","popularity"</expression> + <expression clear="yes" fixchars="1">original_name":"[^"]*","overview":"(.*?)","popularity"</expression> </RegExp> <RegExp input="$$9" output="<plot>\1</plot>" dest="5+"> <expression>(.+)</expression> </RegExp> <RegExp input="$$9" output="$$8" dest="5+"> - <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-$$10-en.json">http://api.themoviedb.org/3/tv/$$10?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> + <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-$$10-en.json">https://api.themoviedb.org/3/tv/$$10?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> <expression clear="yes">^(?!en).*</expression> </RegExp> <expression>^$</expression> </RegExp> - <RegExp input="$$1" output="\1" dest="19"> - <expression>"tvdb_id":([^,]*),</expression> - </RegExp> - <RegExp input="$$19" output="<uniqueid type="tvdb" default="false">\1</uniqueid>" dest="5+"> - <expression/> - </RegExp> - <RegExp conditional="fanarttvart" input="$$19" output="<chain function="GetFanartTvArt">\1</chain>" dest="5+"> - <expression /> - </RegExp> - <RegExp conditional="tmdbart" input="$$10" output="<chain function="GetArt">$$10</chain>" dest="5+"> + <RegExp input="$$10" output="<chain function="GetArt">$$10</chain>" dest="5+"> <expression /> </RegExp> <RegExp input="$$1" output="<namedseason number="\2">\1</namedseason>" dest="5+"> @@ -147,18 +180,18 @@ </RegExp> <RegExp input="$$8" output="\1" dest="5+"> <RegExp input="$$1" output="<namedseason number="\2">\1</namedseason>" dest="8"> - <expression repeat="yes" fixchars="1">"name":"([^}]+)","overview":[^}]*?"season_number":(?!0})([0-9]+)}</expression> + <expression repeat="yes" fixchars="1">"id":[0-9]+,"name":"([^}]+)","overview":[^}]*?"season_number":(?!0})([0-9]+)}</expression> </RegExp> - <RegExp input="$$2" output="<url function="GetEpisodeGroupSeasonNames" cache="tmdb-$$10-$INFO[language]-episode_group-\1.json">http://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="8"> + <RegExp input="$$2" output="<url function="GetEpisodeGroupSeasonNames" cache="tmdb-$$10-$INFO[language]-episode_group-\1.json">https://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="8"> <expression>\|([0-9a-f]+)$</expression> </RegExp> <expression noclean="1"/> </RegExp> - <RegExp input="$$2" output="<url cache="tmdb-$$10-$INFO[language]-episode_group-\1.json">http://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="12"> + <RegExp input="$$2" output="<url cache="tmdb-$$10-$INFO[language]-episode_group-\1.json">https://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="12"> <expression clear="yes">\|([0-9a-f]+)$</expression> </RegExp> <RegExp input="$$3" output="<episodeguide><url cache="tmdb-$$10-$INFO[language].json">\1</url>$$12</episodeguide>" dest="5+"> - <expression>(.*)&append</expression> + <expression/> </RegExp> <expression noclean="1" /> </RegExp> @@ -170,22 +203,22 @@ <expression repeat="yes" fixchars="1">"name":"([^[\]]*?)","order":([0-9]+),"episodes"</expression> </RegExp> <expression noclean="1"/> - </RegExp> + </RegExp> </GetEpisodeGroupSeasonNames> - + <GetEpisodeList clearbuffers="no" dest="3"> <RegExp input="$$4" output="<episodeguide>\1</episodeguide>" dest="3"> <RegExp input="$$1" output="\1" dest="5"> <expression>"id":([0-9]+),"in_production"</expression> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-$$5-$INFO[language]-season-\1.json" function="GetSeasonEpisodeList">http://api.themoviedb.org/3/tv/$$5/season/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="4"> + <RegExp input="$$1" output="<url cache="tmdb-$$5-$INFO[language]-season-\1.json" function="GetSeasonEpisodeList">https://api.themoviedb.org/3/tv/$$5/season/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="4"> <expression clear="yes">"season_number":(0)}</expression> </RegExp> <RegExp input="$$9" output="\1" dest="4+"> - <RegExp input="$$1" output="<url cache="tmdb-$$5-$INFO[language]-season-\1.json" function="GetSeasonEpisodeList">http://api.themoviedb.org/3/tv/$$5/season/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="9"> - <expression repeat="yes">"season_number":(?!0})([0-9]+)</expression> + <RegExp input="$$1" output="<url cache="tmdb-$$5-$INFO[language]-season-\1.json" function="GetSeasonEpisodeList">https://api.themoviedb.org/3/tv/$$5/season/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="9"> + <expression repeat="yes">"season_number":(?!0})([0-9]+)}</expression> </RegExp> - <RegExp input="$$2" output="<url function="GetEpisodeGroupList" cache="tmdb-$$5-$INFO[language]-episode_group-\1.json">http://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="9"> + <RegExp input="$$2" output="<url function="GetEpisodeGroupList" cache="tmdb-$$5-$INFO[language]-episode_group-\1.json">https://api.themoviedb.org/3/tv/episode_group/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]</url>" dest="9"> <expression>"id":"([0-9a-f]+)","name":"[^}]*","network"</expression> </RegExp> <expression noclean="1"/> @@ -198,8 +231,8 @@ <RegExp input="$$1" output="\1" dest="6"> <expression clear="yes">"season_number":([0-9]+)</expression> </RegExp> - <RegExp input="$$1" output="<episode><title>\4</title><aired>\2</aired><epnum>\3</epnum><season>$$6</season><url cache="tmdb-$$5-$INFO[language]-season-$$6.json">http://api.themoviedb.org/3/tv/$$5/season/$$6?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>$$5|$$6|\3</id></episode>" dest="4"> - <expression repeat="yes" clear="yes">"air_date":("([^"]+)"|null),"episode_number":([0-9]+),"id":[0-9]+,"name":"((?:[^"]|(?<=\\)")*)",</expression> + <RegExp input="$$1" output="<episode><title>\4</title><aired>\2</aired><epnum>\3</epnum><season>$$6</season><url cache="tmdb-$$5-$INFO[language]-season-$$6.json">https://api.themoviedb.org/3/tv/$$5/season/$$6?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>$$5|$$6|\3</id></episode>" dest="4"> + <expression repeat="yes" clear="yes">"air_date":("([^"]*)"|null),"episode_number":([0-9]+)</expression> </RegExp> <expression noclean="1"/> </RegExp> @@ -211,7 +244,7 @@ </RegExp> <RegExp input="$$1" output="\1" dest="18"> <expression noclean="1"/> - </RegExp> + </RegExp> <expression noclean="1"/> </RegExp> </GetEpisodeGroupList> @@ -219,19 +252,19 @@ <RegExp input="$$15" output="\1" dest="3"> <RegExp input="$$18" output="<!-- Group name: \1 -->" dest="4"> <expression>"name":"([^[\]{]+)","network":</expression> - </RegExp> + </RegExp> <RegExp input="$$18" output="<!-- Season name: \1 -->" dest="4+"> <expression>"name":"([^[\]{]+)","order":$$1</expression> </RegExp> <RegExp input="$$18" output="\1" dest="6"> - <expression>"order":$$1,"episodes":([^]]+)\]</expression> - </RegExp> - <RegExp input="$$6" output="<episode><title>\4</title><aired>\2</aired><epnum>\7</epnum><season>$$1</season><url cache="tmdb-\6-$INFO[language]-season-\5.json">http://api.themoviedb.org/3/tv/\6/season/\5?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\6|\5|\3</id></episode>" dest="4+"> - <expression repeat="yes">{"air_date":("([^"]+)"|null),"episode_number":([0-9]+),"id":[0-9]+,"name":"((?:[^"]|(?<=\\)")*)",[^}]+"season_number":([0-9]+),"show_id":([0-9]+),[^}]+"order":([0-9]+)</expression> - </RegExp> + <expression>"order":$$1,"episodes":(.*?)\](?:,"locked"|\})</expression> + </RegExp> + <RegExp input="$$6" output="<episode><title>\4</title><aired>\2</aired><epnum>\7</epnum><season>$$1</season><url cache="tmdb-\6-$INFO[language]-season-\5.json">https://api.themoviedb.org/3/tv/\6/season/\5?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url><id>\6|\5|\3</id></episode>" dest="4+"> + <expression repeat="yes">{"air_date":("([^"]+)"|null),.*?"episode_number":([0-9]+),.*?"id":[0-9]+,"name":"((?:[^"]|(?<=\\)")*)",[^}]+"season_number":([0-9]+),"show_id":([0-9]+),[^}]+"order":([0-9]+)</expression> + </RegExp> <RegExp input="" output="" dest="15"> <expression/> - </RegExp> + </RegExp> <XSLT input="<episodeguide>$$4</episodeguide>" output="\1" dest="15"> <xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> @@ -247,7 +280,7 @@ </xsl:template> <xsl:template match="id"> <id><xsl:value-of select="."/>|<xsl:value-of select="../season"/>|<xsl:value-of select="../epnum+1"/></id> - </xsl:template> + </xsl:template> </xsl:stylesheet> </XSLT> <expression noclean="1"/> @@ -260,7 +293,7 @@ <RegExp input="$$2" output="\1" dest="7"> <expression>^[0-9]+\|[0-9]+\|([0-9]+)</expression> </RegExp> - <expression>({"air_date":"[^"]*","episode_number":$$7,"id":\d+,.+)</expression> + <expression>({"air_date":(?:"[^"]*"|null),"episode_number":$$7,.*?vote_count":(?:[^\}]*|nul))</expression> </RegExp> <RegExp input="$$2" output="\1" dest="6"> <expression>^([0-9]+)\|</expression> @@ -272,13 +305,16 @@ <expression>"episode_number":([0-9]+)</expression> </RegExp> <RegExp input="$$1" output="\1" dest="9"> - <expression fixchars="1" clear="yes">"name":"([^\}]*?)","overview"</expression> + <expression fixchars="1" clear="yes">"id":[0-9]+,"name":"([^\}]*?)","overview"</expression> + </RegExp> + <RegExp input="$$9" output="<title>$INFO[titleprefix]$$7$INFO[titlesuffix]</title>" dest="5"> + <expression>^$</expression> </RegExp> <RegExp input="$$9" output="<title>\1</title>" dest="5"> <expression>(.+)</expression> </RegExp> <RegExp input="$$9" output="$$8" dest="5+"> - <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBEpisodeTitle" cache="tmdb-$$6-en-episode-s$$10e$$11.json">http://api.themoviedb.org/3/tv/$$6/season/$$10/episode/$$11?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> + <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBEpisodeTitle" cache="tmdb-$$6-en-episode-s$$10e$$11.json">https://api.themoviedb.org/3/tv/$$6/season/$$10/episode/$$11?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> <expression clear="yes">^(?!en).*</expression> </RegExp> <expression>^$</expression> @@ -292,15 +328,27 @@ <RegExp input="$$1" output="<uniqueid type="tmdb" default="true">\1</uniqueid>" dest="5+"> <expression>"id":([0-9]+),"name"</expression> </RegExp> - <RegExp input="$$7" output="<ratings><rating name="tmdb" default="true">\1</rating></ratings>" dest="5+"> + <RegExp input="$$8" output="\1" dest="5+"> <RegExp input="$$1" output="<value>\1</value>" dest="7"> - <expression>"vote_average":([^"]*)</expression> + <expression>"vote_average":([^,]*),</expression> </RegExp> <RegExp input="$$1" output="<votes>\1</votes>" dest="7+"> - <expression>"vote_count":([0-9]+)</expression> + <expression>"vote_count":([0-9]+)</expression> + </RegExp> + <RegExp input="$INFO[RatingS]" output="default="true"" dest="16"> + <expression>Themoviedb</expression> + </RegExp> + <RegExp input="" output="" dest="8"> + <expression /> + </RegExp> + <RegExp input="$INFO[RatingS]|$INFO[fallback]" output="<ratings><rating name="themoviedb" $$16>$$7</rating></ratings>" dest="8"> + <expression>Themoviedb|true</expression> </RegExp> <expression noclean="1">(.+)</expression> </RegExp> + <RegExp input="$INFO[RatingS]|$INFO[alsoimdb]" output="<chain function="GetEpisodeExtraDetails">$$6|$$10|$$11|ParseEpisodeIMDBRatingsById</chain>" dest="5+"> + <expression>IMDb|true</expression> + </RegExp> <RegExp input="$$1" output="\1" dest="9"> <expression clear="yes" fixchars="1">"overview":"([^\{]*?)","production_code"</expression> </RegExp> @@ -308,7 +356,7 @@ <expression>(.+)</expression> </RegExp> <RegExp input="$$9" output="$$8" dest="5+"> - <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-$$6-en-episode-s$$10e$$11.json">http://api.themoviedb.org/3/tv/$$6/season/$$10/episode/$$11?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> + <RegExp input="$INFO[language]" output="<url function="ParseFallbackTMDBPlot" cache="tmdb-$$6-en-episode-s$$10e$$11.json">https://api.themoviedb.org/3/tv/$$6/season/$$10/episode/$$11?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=en</url>" dest="8"> <expression clear="yes">^(?!en).*</expression> </RegExp> <expression>^$</expression> @@ -317,15 +365,18 @@ <expression clear="yes" noclean="1">"crew":\[([^\]]*)</expression> </RegExp> <RegExp input="$$7" output="<director>\1</director>" dest="5+"> - <expression repeat="yes" fixchars="1">"name":"([^"]*)","department":"Directing"</expression> + <expression repeat="yes" fixchars="1">"department":"Directing".*?"name":"([^"]*)"</expression> </RegExp> <RegExp input="$$7" output="<credits>\1</credits>" dest="5+"> - <expression repeat="yes" fixchars="1">"name":"([^"]*)","department":"Writing"</expression> + <expression repeat="yes" fixchars="1">"department":"Writing".*?"name":"([^"]*)"</expression> </RegExp> <RegExp input="" output="<chain function="GetCast">$$6|$$10|$$11</chain>" dest="5+"> <expression /> </RegExp> - <RegExp input="" output="<chain function="GetEpisodeArt">$$6|$$10|$$11</chain>" dest="5+"> + <RegExp input="" output="<chain function="GetEpisodeExtraDetails">$$6|$$10|$$11|ParseEpisodeExternalIds</chain>" dest="5+"> + <expression /> + </RegExp> + <RegExp input="" output="<chain function="GetEpisodeExtraDetails">$$6|$$10|$$11|ParseEpisodeArt</chain>" dest="5+"> <expression /> </RegExp> <expression noclean="1"/> @@ -353,7 +404,7 @@ <ParseTMDBBaseImageURL clearbuffers="no" dest="4"> <RegExp input="$$5" output="<details>$$20</details>" dest="4"> <RegExp input="$$1" output="\1" dest="20"> - <expression>"images":\{"base_url":"([^"]*)"</expression> + <expression>"images":\{.*?"secure_base_url":"([^"]*)"</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -361,13 +412,16 @@ <GetCast dest="3" clearbuffers="no"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">http://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json" function="ParseCast">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits</url>" dest="5+"> - <expression>^([0-9]+)$</expression> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseCast">https://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> + <RegExp input="-1" output="\1" dest="11"> + <expression/> + </RegExp> + <expression>^([0-9]+)\|([0-9]+)$</expression> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseCast">http://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseCast">https://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> <RegExp input="$$1" output="\1" dest="11"> <expression>^[0-9]+\|[0-9]+\|([0-9]+)$</expression> </RegExp> @@ -381,34 +435,108 @@ <RegExp input="$$1" output="\1" dest="7"> <expression clear="yes" noclean="1">"cast":\[([^\]]+)\]</expression> </RegExp> - <RegExp input="$$7" output="<actor><name>\2</name><role>\1</role><order>\4</order><thumb>$$20original\3</thumb></actor>" dest="5"> - <expression clear="yes" repeat="yes" fixchars="1,2">"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","id":[0-9]*,"name":"([^"]*)","gender":[^,]*,"profile_path":"([^"]*)","order":([0-9]*)</expression> - </RegExp> - <RegExp input="$$7" output="<actor><name>\2</name><role>\1</role><order>\3</order></actor>" dest="5+"> - <expression repeat="yes" fixchars="1,2">"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","id":[0-9]*,"name":"([^"]*)","gender":[^,]*,"profile_path":null,"order":([0-9]*)</expression> + <RegExp input="$$7" output="<actor><name>\1</name><role>\3</role><order>\4</order><thumb>$$20original\2</thumb></actor>" dest="5"> + <expression clear="yes" repeat="yes" fixchars="1,2">Acting","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":"([^"]*)","character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*)}</expression> </RegExp> <RegExp input="$$1" output="\1" dest="1"> - <expression clear="yes">({"air_date":"[^"]*","episode_number":$$11,"id":\d+,.+)</expression> + <expression clear="yes">({"air_date":(?:"[^"]*"|null),"episode_number":$$11,.*?vote_count":(?:[^\}]*|nul))</expression> </RegExp> <RegExp input="$$1" output="\1" dest="7"> <expression clear="yes" noclean="1">"guest_stars":\[([^\]]+)\]</expression> </RegExp> - <RegExp input="$$7" output="<actor><name>\1</name><role>\2</role><order>\3</order><thumb>$$20original\4</thumb></actor>" dest="5+"> - <expression repeat="yes" fixchars="1,2">"name":"([^"]*)","credit_id":"[^"]*","character":"((?:[^"]|(?<=\\)")*)","order":([0-9]*),"gender":[0-9]*,"profile_path":"([^"]*)"</expression> + <RegExp input="$$7" output="<actor><name>\3</name><role>\2</role><order>\1</order><thumb>$$20original\4</thumb></actor>" dest="5"> + <expression repeat="yes" fixchars="1,2">"credit_id":"[^"]*","order":([0-9]*),"character":"((?:[^"]|(?<=\\)")*)","adult"[^"]*"gender"[^"]*"id[^"]*"[^"]*"known_for_department"[^"]*"Acting","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":"([^"]*)"</expression> + </RegExp> + <RegExp input="$$7" output="<actor><name>\3</name><role>\1</role><order>\2</order><thumb>$$20original\4</thumb></actor>" dest="5+"> + <expression repeat="yes" fixchars="1,2">"character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*),"adult"[^"]*"gender"[^"]*"id[^"]*"[^"]*"known_for_department"[^"]*"Acting","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":"([^"]*)"</expression> </RegExp> - <RegExp input="$$7" output="<actor><name>\2</name><role>\1</role><order>\3</order></actor>" dest="5+"> - <expression repeat="yes" fixchars="1,2">"name":"([^"]*)","credit_id":"[^"]*","character":"((?:[^"]|(?<=\\)")*)","order":([0-9]*),"gender":[0-9]*,"profile_path":null</expression> + <RegExp input="$$7" output="<actor><name>\3</name><role>\2</role><order>\1</order></actor>" dest="5+"> + <expression repeat="yes" fixchars="1,2">"credit_id":"[^"]*","order":([0-9]*),"character":"((?:[^"]|(?<=\\)")*)","adult"[^"]*"gender"[^"]*"id[^"]*"[^"]*"known_for_department"[^"]*"Acting","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":null</expression> + </RegExp> + <RegExp input="$$7" output="<actor><name>\3</name><role>\1</role><order>\2</order></actor>" dest="5+"> + <expression repeat="yes" fixchars="1,2">character":"((?:[^"]|(?<=\\)")*)","credit_id":"[^"]*","order":([0-9]*),"adult"[^"]*"gender"[^"]*"id[^"]*"[^"]*"known_for_department"[^"]*"Acting","name":"([^"]*)","original_name":"[^"]*","popularity":[^"]*"profile_path":null</expression> </RegExp> <expression noclean="1" /> </RegExp> </ParseCast> + <GetEpisodeExtraDetails dest="3" clearbuffers="no"> + <RegExp input="$$5" output="<details>\1</details>" dest="3"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseEpisodeExtrasList">https://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=images&amp;include_image_language=$INFO[language],en,null</url>" dest="5"> + <RegExp input="$$1" output="\1" dest="11"> + <expression>^[0-9]+\|[0-9]+\|([0-9]+)\|[^|]+$</expression> + </RegExp> + <RegExp input="$$1" output="\1" dest="12"> + <expression>^[0-9]+\|([0-9]+)\|[0-9]+\|[^|]+$</expression> + </RegExp> + <RegExp input="$$1" output="\1" dest="13"> + <expression>^([0-9]+)\|[0-9]+\|[0-9]+\|[^|]+$</expression> + </RegExp> + <RegExp input="$$1" output="\1" dest="14"> + <expression>^[0-9]+\|[0-9]+\|[0-9]+\|([^|]+)$</expression> + </RegExp> + <expression>^([0-9]+)\|([0-9]+)\|[0-9]+\|[^|]+$</expression> + </RegExp> + <expression noclean="1" /> + </RegExp> + </GetEpisodeExtraDetails> + <ParseEpisodeExtrasList dest="4" clearbuffers="no"> + <RegExp input="$$5" output="<details>\1</details>" dest="4"> + <RegExp input="$$11" output="\1" dest="6"> + <expression clear="yes">^(\d*)\d$</expression> + </RegExp> + <RegExp input="$$1" output="episode/\1/images,episode/\1/external_ids," dest="7"> + <expression repeat="yes" clear="yes">"episode_number":($$6\d),</expression> + </RegExp> + <RegExp input="$$14" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> + <expression clear="yes">ParseEpisodeArt</expression> + </RegExp> + <RegExp input="$$7" output="<url cache="tmdb-$$13-$INFO[language]-season-$$12-extra-$$6.json" function="$$14">https://api.themoviedb.org/3/tv/$$13/season/$$12?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=\1&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> + <expression>^(.+)$</expression> + </RegExp> + <expression noclean="1" /> + </RegExp> + </ParseEpisodeExtrasList> + + <ParseEpisodeExternalIds dest="4"> + <RegExp input="$$5" output="<details>\1</details>" dest="4"> + <RegExp input="$$1" output="\1" dest="6"> + <expression clear="yes">"episode/$$11/external_ids":{(.*?)}</expression> + </RegExp> + <RegExp input="$$6" output="<uniqueid type="imdb" default="false">\1</uniqueid>" dest="5"> + <expression clear="yes">"imdb_id":"(tt\d+)",</expression> + </RegExp> + <RegExp input="$$6" output="<uniqueid type="tvdb" default="false">\1</uniqueid>" dest="5+"> + <expression>"tvdb_id":(\d+),</expression> + </RegExp> + <RegExp input="$$6" output="<uniqueid type="tvrage" default="false">\1</uniqueid>" dest="5+"> + <expression>"tvrage_id":(\d+)</expression> + </RegExp> + <expression noclean="1" /> + </RegExp> + </ParseEpisodeExternalIds> + + <ParseEpisodeIMDBRatingsById dest="4"> + <RegExp input="$$5" output="<details>\1</details>" dest="4"> + <RegExp input="$$14|$INFO[RatingS]|default|$INFO[alsoimdb]" output="<chain function="GetIMDBRatingsById">$$14\1</chain>" dest="5"> + <RegExp input="$$6" output="\1" dest="14"> + <RegExp input="$$1" output="\1" dest="6"> + <expression clear="yes">"episode/$$11/external_ids":{(.*?)}</expression> + </RegExp> + <expression clear="yes">"imdb_id":"(tt\d+)",</expression> + </RegExp> + <expression clear="yes">^tt\d+\|(?:IMDb(\|default)|.*true$)</expression> + </RegExp> + <expression noclean="1" /> + </RegExp> + </ParseEpisodeIMDBRatingsById> + <GetArt dest="3"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">http://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> <expression /> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json" function="ParseArt">http://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language].json" function="ParseArt">https://api.themoviedb.org/3/tv/\1?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=content_ratings,credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> <expression /> </RegExp> <expression noclean="1" /> @@ -416,7 +544,7 @@ </GetArt> <ParseArt clearbuffers="no" dest="4"> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="\1" dest="7"> + <RegExp conditional="tmdbart" input="$$1" output="\1" dest="7"> <expression>"posters":\[([^\]]*)\]</expression> </RegExp> <RegExp input="$$7" output="<thumb aspect="poster">$$20original\1</thumb>" dest="5"> @@ -425,12 +553,12 @@ <RegExp input="$$7" output="<thumb aspect="poster">$$20original\1</thumb>" dest="5+"> <expression repeat="yes">"file_path":"([^"]*)","height":[0-9]+,"iso_639_1":(?!"$INFO[language]")</expression> </RegExp> - <RegExp input="$$8" output="<fanart url="$$20" >\1</fanart>" dest="5+"> + <RegExp conditional="tmdbart" input="$$8" output="<fanart url="$$20" >\1</fanart>" dest="5+"> <RegExp input="$$7" output="<thumb dim="\3x\2" preview="w780\1">original\1</thumb>" dest="8"> <RegExp input="$$1" output="\1" dest="7"> <expression>"backdrops":\[([^\]]*)\]</expression> </RegExp> - <expression repeat="yes">"file_path":"([^"]*)","height":([0-9]+)[^\}]*"width":([0-9]+)</expression> + <expression repeat="yes">"file_path":"([^"]*)","height":([0-9]+),"[^"]*":null[^\}]*"width":([0-9]+)</expression> </RegExp> <expression noclean="1" /> </RegExp> @@ -440,7 +568,10 @@ <RegExp input="$$1" output="<chain function="GetSeasonArt">$$8|\1</chain>" dest="5+"> <expression repeat="yes">"season_number":([0-9]+)</expression> </RegExp> - <RegExp input="$$1" output="<chain function="GetTVDBWideBanners">\1</chain>" dest="5+"> + <RegExp conditional="tvdbwidebanners" input="$$1" output="<chain function="GetTVDBWideBanners">\1</chain>" dest="5+"> + <expression>"tvdb_id":([0-9]+)</expression> + </RegExp> + <RegExp conditional="fanarttvart" input="$$1" output="<chain function="GetFanartTvArt">\1</chain>" dest="5+"> <expression>"tvdb_id":([0-9]+)</expression> </RegExp> <expression noclean="1" /> @@ -448,13 +579,13 @@ </ParseArt> <GetSeasonArt clearbuffers="no" dest="3"> <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">http://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> + <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">https://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> <expression>^([0-9]+)\|</expression> </RegExp> <RegExp input="$$1" output="\1" dest="10"> <expression>\|([0-9]+)$</expression> </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseSeasonArt">http://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> + <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseSeasonArt">https://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=credits,external_ids,images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> <expression>^([0-9]+)\|([0-9]+)$</expression> </RegExp> <expression noclean="1" /> @@ -472,29 +603,21 @@ <expression repeat="yes">"file_path":"([^"]*)","height":[0-9]+,"iso_639_1":(?!"$INFO[language]")</expression> </RegExp> <expression noclean="1" /> - </RegExp> - </ParseSeasonArt> - <GetEpisodeArt dest="3" clearbuffers="no"> - <RegExp input="$$5" output="<details>\1</details>" dest="3"> - <RegExp input="$$1" output="<url function="ParseTMDBBaseImageURL" cache="tmdb-config.json">http://api.themoviedb.org/3/configuration?api_key=6a5be4999abf74eba1f9a8311294c267</url>" dest="5"> - <expression>^([0-9]+)\|</expression> - </RegExp> - <RegExp input="$$1" output="<url cache="tmdb-\1-$INFO[language]-season-\2.json" function="ParseEpisodeArt">http://api.themoviedb.org/3/tv/\1/season/\2?api_key=6a5be4999abf74eba1f9a8311294c267&amp;language=$INFO[language]&amp;append_to_response=images&amp;include_image_language=$INFO[language],en,null</url>" dest="5+"> - <RegExp input="$$1" output="\1" dest="11"> - <expression>^[0-9]+\|[0-9]+\|([0-9]+)$</expression> - </RegExp> - <expression>^([0-9]+)\|([0-9]+)\|[0-9]+$</expression> - </RegExp> - <expression noclean="1" /> </RegExp> - </GetEpisodeArt> + </ParseSeasonArt> <ParseEpisodeArt dest="4"> <RegExp input="$$5" output="<details>\1</details>" dest="4"> - <RegExp input="$$1" output="<thumb>$$20original\1</thumb>" dest="5"> - <expression clear="yes">"episode_number":$$11,[^[]+,"still_path":"([^"]*)"</expression> + <RegExp input="$$7" output="<thumb>$$20original\1</thumb>" dest="5"> + <RegExp input="$$6" output="\1" dest="7"> + <RegExp input="$$1" output="\1" dest="6"> + <expression clear="yes">"episode/$$11/images":(.*)</expression> + </RegExp> + <expression clear="yes">"stills":\[([^\]]*)\]</expression> + </RegExp> + <expression repeat="yes">"file_path":"([^"]*)"</expression> </RegExp> <expression noclean="1" /> - </RegExp> + </RegExp> </ParseEpisodeArt> <GetTVDBWideBanners dest="3"> @@ -571,4 +694,4 @@ </RegExp> </GetFanartTvArt> -</scraper> +</scraper>
\ No newline at end of file diff --git a/system/addon-manifest.xml b/system/addon-manifest.xml index d31205dfb7..e6de83fb02 100644 --- a/system/addon-manifest.xml +++ b/system/addon-manifest.xml @@ -57,4 +57,5 @@ <addon>xbmc.python</addon> <addon>xbmc.webinterface</addon> <addon optional="true">peripheral.joystick</addon> + <addon optional="true">inputstream.adaptive</addon> </addons> diff --git a/xbmc/dbwrappers/mysqldataset.cpp b/xbmc/dbwrappers/mysqldataset.cpp index 0198b73c09..02a02fa5b5 100644 --- a/xbmc/dbwrappers/mysqldataset.cpp +++ b/xbmc/dbwrappers/mysqldataset.cpp @@ -147,7 +147,7 @@ int MysqlDatabase::connect(bool create_new) { return DB_CONNECTION_NONE; std::string resolvedHost; - if (CDNSNameCache::Lookup(host, resolvedHost)) + if (!StringUtils::EqualsNoCase(host,"localhost") && CDNSNameCache::Lookup(host, resolvedHost)) { CLog::Log(LOGDEBUG, "{} replacing configured host {} with resolved host {}", __FUNCTION__, host, resolvedHost); diff --git a/xbmc/interfaces/json-rpc/schema/version.txt b/xbmc/interfaces/json-rpc/schema/version.txt index 0df0e570bd..3621bebdad 100644 --- a/xbmc/interfaces/json-rpc/schema/version.txt +++ b/xbmc/interfaces/json-rpc/schema/version.txt @@ -1 +1 @@ -JSONRPC_VERSION 12.2.0 +JSONRPC_VERSION 12.2.1 diff --git a/xbmc/video/VideoDatabase.cpp b/xbmc/video/VideoDatabase.cpp index 0356c15049..098da33a01 100644 --- a/xbmc/video/VideoDatabase.cpp +++ b/xbmc/video/VideoDatabase.cpp @@ -4867,7 +4867,7 @@ std::vector<CScraperUrl::SUrlEntry> GetBasicItemAvailableArt( if (artType.empty() || artType == "fanart") { tag.m_fanart.Unpack(); - for (unsigned int i = 1; i < tag.m_fanart.GetNumFanarts(); i++) + for (unsigned int i = 0; i < tag.m_fanart.GetNumFanarts(); i++) { CScraperUrl::SUrlEntry url(tag.m_fanart.GetImageURL(i)); url.m_preview = tag.m_fanart.GetPreviewURL(i); diff --git a/xbmc/windowing/Resolution.cpp b/xbmc/windowing/Resolution.cpp index c2ea3c7ee4..21a4fb25c7 100644 --- a/xbmc/windowing/Resolution.cpp +++ b/xbmc/windowing/Resolution.cpp @@ -192,6 +192,8 @@ void CResolutionUtils::FindResolutionFromWhitelist(float fps, int width, int hei CLog::Log(LOGDEBUG, "[WHITELIST] No match for an exact resolution with double the refresh rate"); } + else if (found) + return; if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool( SETTING_VIDEOSCREEN_WHITELIST_PULLDOWN)) |