<?xml version="1.0" encoding="UTF-8"?> <!-- should be self-explanatory --> <scraper framework="1.1" date="2013-04-04"> <NfoUrl dest="3"> <RegExp input="$$1" output="<url cache="\1-$INFO[language].xml">http://thetvdb.com/api/1D62F2F90030C444/series/\1/all/$INFO[language].zip</url><id>\1</id>" dest="3"> <expression>http://(?:www\.)?thetvdb.com/(?:index\.php)?\?tab=series&id=([0-9]+)</expression> </RegExp> <RegExp input="$$1" output="<details><url cache="tt\1.xml" function="GetTVDBId">http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=tt\1&amp;language=$INFO[language]</url></details>" dest="3+"> <expression>imdb....?/title/tt([0-9]*)</expression> </RegExp> <RegExp input="$$1" output="<details><url cache="tt\1.xml" function="GetTVDBId">http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=tt\1&amp;language=$INFO[language]</url></details>" dest="3+"> <expression>imdb....?/Title\?([0-9]*)</expression> </RegExp> </NfoUrl> <GetTVDBId dest="3"> <RegExp input="$$1" output="<details><url cache="\1-$INFO[language].xml">http://thetvdb.com/api/1D62F2F90030C444/series/\1/all/$INFO[language].zip</url><id>\1</id></details>" dest="3"> <expression><seriesid>([0-9]*)</seriesid></expression> </RegExp> </GetTVDBId> <EpisodeGuideUrl dest="3"> <RegExp input="$$1" output="\1" dest="3"> <expression>(.*?http://www.thetvdb.com.*)</expression> </RegExp> <RegExp input="$$1" output="\1" dest="3"> <expression>(.*?http://thetvdb.com.*)</expression> </RegExp> </EpisodeGuideUrl> <!-- input: $1=query string --> <!-- returns: the url we should use to do the search --> <CreateSearchUrl dest="3"> <RegExp input="$$1" output="<url cache="cache-\1$$4-$INFO[language].xml">http://thetvdb.com/api/GetSeries.php?seriesname=\1$$4&amp;language=$INFO[language]</url>" dest="3"> <RegExp input="$$2" output="%20(\1)" dest="4"> <expression clear="yes">(.+)</expression> </RegExp> <expression/> </RegExp> </CreateSearchUrl> <!-- input: $1=html $2=search query --> <!-- returns: results in xml format <results><movie><title>*</title><url>*</url>*#urls<extra>*</extra></movie>*</results> --> <GetSearchResults dest="1"> <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><results>\1</results>" dest="1"> <RegExp input="$$1" output="<entity><title>\3</title><language>\2</language><url cache="\1-$INFO[language].xml">http://thetvdb.com/api/1D62F2F90030C444/series/\1/all/$INFO[language].zip</url><id>\1</id></entity>" dest="4"> <expression repeat="yes"><seriesid>([0-9]*)</seriesid>[^<]*<language>([^<]*)</language>[^<]*<SeriesName>([^<]*)</SeriesName></expression> </RegExp> <expression noclean="1"/> </RegExp> </GetSearchResults> <!-- input: $1..#urls=html --> <!-- input: $(#urls+1): extra !--> <!-- returns: results in xml format <details><plot>*</plot><director>*</director><premiered>*</premiered><episodeguide>*</episodeguide></details> --> <GetDetails dest="7"> <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><details>\1</details>" dest="7"> <RegExp input="$$1" output="\1" dest="5"> <expression noclean="1"><Series>.*?<id>$$2</id>(.*)</expression> </RegExp> <RegExp input="$$5" output="<plot>\1</plot>" dest="4"> <expression noclean="1"><Overview>([^<]*)</Overview></expression> </RegExp> <RegExp input="$$2" output="<id>\1</id>" dest="4+"> <expression/> </RegExp> <RegExp input="$$1" output="<mpaa>\1</mpaa>" dest="4+"> <expression><ContentRating>([^<]*)</ContentRating></expression> </RegExp> <RegExp input="$$5" output="<premiered>\1</premiered>" dest="4+"> <expression><FirstAired>([^<]*)</FirstAired></expression> </RegExp> <RegExp input="$INFO[RatingS]" output="$$12" dest="4+"> <RegExp input="$$5" output="<rating>\1</rating>" dest="12+"> <expression><Rating>([^<]+)</Rating></expression> </RegExp> <RegExp input="$$5" output="<votes>\1</votes>" dest="12+"> <expression><RatingCount>([^<]+)</RatingCount></expression> </RegExp> <expression>TheTVDB</expression> </RegExp> <RegExp input="$INFO[RatingS]" output="$$13" dest="4+"> <RegExp input="$$5" output="\1" dest="11"> <expression clear="yes"><IMDB_ID>([^<]+)</IMDB_ID></expression> </RegExp> <RegExp input="$$11"> <RegExp conditional="fallback" input="$$5" output="<rating>\1</rating>" dest="13+"> <expression><Rating>([^<]+)</Rating></expression> </RegExp> <RegExp conditional="fallback" input="$$5" output="<votes>\1</votes>" dest="13+"> <expression><RatingCount>([^<]+)</RatingCount></expression> </RegExp> <expression>^$</expression> </RegExp> <RegExp input="$$11" output="<chain function="GetIMDBRatingById">$$11</chain>" dest="13"> <expression>(.+)</expression> </RegExp> <expression>IMDb</expression> </RegExp> <RegExp input="$$5" output="<studio>\1</studio>" dest="4+"> <expression><Network>([^<]*)</Network></expression> </RegExp> <RegExp input="$$5" output="<title>\1</title>" dest="4+"> <expression><SeriesName>([^<]*)</SeriesName></expression> </RegExp> <RegExp input="$$5" output="\1" dest="10"> <expression noclean="1"><Genre>([^<]*)</Genre></expression> </RegExp> <RegExp input="$$10" output="<genre>\1</genre>" dest="4+"> <expression repeat="yes">([^\|]*)\|</expression> </RegExp> <RegExp input="$$10" output="<genre>\1</genre>" dest="4+"> <expression repeat="yes">([^,]*),</expression> </RegExp> <RegExp input="$$10" output="<genre>\1</genre>" dest="4+"> <expression>([^\|,]+)$</expression> </RegExp> <!-- actors with thumbs --> <RegExp input="$$5" output="<actor><name>\2</name><role>\3</role><thumb>http://thetvdb.com/banners/\1</thumb></actor>" dest="4+"> <expression repeat="yes" noclean="1,2,3"><Actor>.*?<Image>([^<]+)</Image>.*?<Name>([^<]*)</Name>.*?<Role>([^<]*)</expression> </RegExp> <!-- actors without thumbs --> <RegExp input="$$5" output="<actor><name>\2</name><role>\3</role></actor>" dest="4+"> <expression repeat="yes" noclean="1,2,3"><Actor>.*?<Image>([^<]*)</Image>.*?<Name>([^<]*)</Name>.*?<Role>([^<]*)</expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>graphical</BannerType2>[^<]*<Language>$INFO[language]</Language></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>graphical</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>text</BannerType2>[^<]*<Language>$INFO[language]</Language></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>text</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>blank</BannerType2>[^<]*<Language></Language></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="\2">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>season</BannerType2>[^<]*<Language>$INFO[language]</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="\3">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>season</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner" type="season" season="\2">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>seasonwide</BannerType2>[^<]*<Language>$INFO[language]</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="banner" type="season" season="\3">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>seasonwide</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="poster">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>poster</BannerType></expression> </RegExp> <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="-1">http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>poster</BannerType></expression> </RegExp> <RegExp conditional="fanart" input="$$7" output="<fanart url="http://thetvdb.com/banners/">\1</fanart>" dest="4+"> <RegExp input="$$5" output="<thumb dim="\2" colors="\3" preview="_cache/\1">\1</thumb>" dest="7+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>fanart</BannerType>[^<]*<BannerType2>([^<]*)</BannerType2>[^<]*<Colors>([^<]*)</Colors>[^<]*<Language>$INFO[language]</Language></expression> </RegExp> <RegExp input="$$5" output="<thumb dim="\2" colors="\3" preview="_cache/\1">\1</thumb>" dest="7+"> <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>fanart</BannerType>[^<]*<BannerType2>([^<]*)</BannerType2>[^<]*<Colors>([^<]*)</Colors>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression> </RegExp> <expression noclean="1"/> </RegExp> <RegExp input="$$3" output="\1" dest="6"> <expression>.*/(.*).zip</expression> </RegExp> <RegExp input="$$3" output="<episodeguide><url cache="$$2-$$6.xml">\1</url></episodeguide>" dest="4+"> <expression/> </RegExp> <expression noclean="1"/> </RegExp> </GetDetails> <!-- input: $1=html !--> <!-- input: $2=series url !--> <!-- returns: results in xml format <episodeguide><episode><title>*</title><url>*</url><season>*</season><epnum>*</epnum><thumb>*</thumb><id>*</id><aired>*</aired></episode>*</episodeguide> !--> <GetEpisodeList dest="3"> <RegExp input="$$4" output="<episodeguide>\1</episodeguide>" dest="3"> <RegExp input="$$2" output="\2-\3" dest="10"> <expression>http://(?:www\.)?thetvdb.com/api/(.+)/series/([0-9]*)/all/(.+).zip</expression> </RegExp> <RegExp conditional="!dvdorder"> <!-- Regular episodes (Absolute order) --> <RegExp conditional="absolutenumber" input="$$1" output="<episode><id>\1</id><title>\2</title><aired>\3</aired><epnum>\4</epnum><season>1</season><url cache="$$10.xml">$$2</url></episode>" dest="4+"> <expression repeat="yes"><Episode>.*?<id>([0-9]*).*?<EpisodeName>([^<]*).*?<FirstAired>([^<]*).*?<absolute_number>([0-9]*).*?</Episode></expression> </RegExp> <!-- Specials (Absolute order) --> <RegExp conditional="absolutenumber" input="$$1" output="<episode><id>\1</id><title>\2</title><aired>\4</aired><epnum>\3</epnum><season>0</season><url cache="$$10.xml">$$2</url></episode>" dest="4+"> <expression repeat="yes"><Episode>.*?<id>([0-9]*).*?<EpisodeName>([^<]*).*?<EpisodeNumber>([0-9]*).*?<FirstAired>([^<]*).*?<SeasonNumber>0</SeasonNumber>.*?</Episode></expression> </RegExp> <!-- Normal episodes --> <RegExp conditional="!absolutenumber" input="$$1" output="<episode><title>\2</title><url cache="$$10.xml">$$2</url><epnum>\3</epnum><season>\5</season><id>\1</id><aired>\4</aired></episode>" dest="4"> <expression repeat="yes"><Episode>.*?<id>([0-9]+).*?<EpisodeName>([^<]*).*?<EpisodeNumber>([0-9]+)[^<]*.*?<FirstAired>([^<]*)</FirstAired>.*?<SeasonNumber>([0-9]+)[^<]*.*?</Episode></expression> </RegExp> </RegExp> <!-- DVD order --> <RegExp conditional="dvdorder" input="$$1" output="<episode><title>\4</title><url cache="$$10.xml">$$2</url><epnum>\2</epnum><season>\3</season><id>\1</id><aired>\5</aired></episode>" dest="4"> <expression repeat="yes"><Episode>.*?<id>([0-9]+).*?<Combined_episodenumber>([^<]*).*?<Combined_season>([^<]*).*?<EpisodeName>([^<]*).*?<FirstAired>([^<]*)</FirstAired>.*?</Episode></expression> </RegExp> <expression noclean="1"/> </RegExp> </GetEpisodeList> <!-- input: $1=html --> <!-- returns: results in xml format <details><writer>*</writer><director>*</director><cast>*</cast><rating>*</rating><rank>*</rank><plot>*</plot> --> <GetEpisodeDetails dest="3"> <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><details>\1</details>" dest="3"> <RegExp input="$$1" output="\1" dest="8"> <expression noclean="1"><Episode>.*?<id>$$2</id>(.*?)</Episode></expression> </RegExp> <RegExp input="$$1" output="<uniqueid>$$2</uniqueid>" dest="4"> <expression/> </RegExp> <RegExp input="$$8" output="<plot>\1</plot>" dest="4+"> <expression><Overview>([^<]*)</Overview></expression> </RegExp> <RegExp input="$$8" output="\1" dest="6"> <expression noclean="1"><Writer>([^<]*)</Writer></expression> </RegExp> <RegExp input="$$6" output="<credits>\1</credits>" dest="4+"> <expression repeat="yes">([^\|]*)\|</expression> </RegExp> <RegExp input="$$6" output="<credits>\1</credits>" dest="4+"> <expression repeat="yes">([^,]*),</expression> </RegExp> <RegExp input="$$6" output="<credits>\1</credits>" dest="4+"> <expression>([^\|,]+)$</expression> </RegExp> <RegExp input="$$8" output="\1" dest="6"> <expression noclean="1"><Director>([^<]*)</Director></expression> </RegExp> <RegExp input="$$6" output="<director>\1</director>" dest="4+"> <expression repeat="yes">([^\|]*)\|</expression> </RegExp> <RegExp input="$$6" output="<director>\1</director>" dest="4+"> <expression repeat="yes">([^,]*),</expression> </RegExp> <RegExp input="$$6" output="<director>\1</director>" dest="4+"> <expression>([^\|,]+)$</expression> </RegExp> <RegExp input="$$8" output="\1" dest="6"> <expression noclean="1"><GuestStars>([^<]*)</GuestStars></expression> </RegExp> <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+"> <expression repeat="yes">([^\|]*)\|</expression> </RegExp> <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+"> <expression repeat="yes">([^,]*),</expression> </RegExp> <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+"> <expression>([^\|,]+)$</expression> </RegExp> <RegExp input="$$8" output="<title>\1</title>" dest="4+"> <expression><EpisodeName>([^<]*)</EpisodeName></expression> </RegExp> <!-- Regular Episodes - Absolute Order --> <RegExp conditional="absolutenumber" input="$$8" output="<season>1</season><episode>\2</episode>" dest="4+"> <expression><SeasonNumber>([1-9]*)</SeasonNumber>.*?<absolute_number>([0-9]*)</absolute_number></expression> </RegExp> <!-- Specials - Absolute Order --> <RegExp conditional="absolutenumber" input="$$8" output="<season>0</season><episode>\1</episode>" dest="4+"> <expression><EpisodeNumber>([0-9]*)</EpisodeNumber>.*?<SeasonNumber>0</SeasonNumber></expression> </RegExp> <!-- Normal Season/Episodes --> <RegExp conditional="!absolutenumber" input="$$9" output="<season>\1</season>" dest="4+"> <RegExp conditional="!dvdorder" input="$$8" output="\1" dest="9"> <expression clear="yes"><SeasonNumber>([^<]*)</SeasonNumber></expression> </RegExp> <RegExp conditional="dvdorder" input="$$8" output="\1" dest="9"> <expression><Combined_season>([^<]*)</Combined_season></expression> </RegExp> <expression/> </RegExp> <RegExp conditional="!absolutenumber" input="$$9" output="<episode>\1</episode>" dest="4+"> <RegExp conditional="!dvdorder" input="$$8" output="\1" dest="9"> <expression clear="yes"><EpisodeNumber>([^<]*)</EpisodeNumber></expression> </RegExp> <RegExp conditional="dvdorder" input="$$8" output="\1" dest="9"> <expression><Combined_episodenumber>([^<]*)</Combined_episodenumber></expression> </RegExp> <expression/> </RegExp> <RegExp input="$$8" output="<thumb>http://thetvdb.com/banners/\1</thumb>" dest="4+"> <expression><filename>([^<]+)</filename></expression> </RegExp> <RegExp input="$$8" output="<aired>\1</aired>" dest="4+"> <expression><FirstAired>([^<]+)</FirstAired></expression> </RegExp> <RegExp input="$$8" output="<displayseason>\1</displayseason>" dest="4+"> <expression><airsbefore_season>([^<]+)</airsbefore_season></expression> </RegExp> <RegExp input="$$8" output="<displayepisode>\1</displayepisode>" dest="4+"> <expression><airsbefore_episode>([^<]+)</airsbefore_episode></expression> </RegExp> <RegExp input="$$8" output="<displayafterseason>\1</displayafterseason>" dest="4+"> <expression><airsafter_season>([^<]+)</airsafter_season></expression> </RegExp> <RegExp input="$INFO[RatingS]" output="$$12" dest="4+"> <RegExp input="$$8" output="<rating>\1</rating>" dest="12+"> <expression><Rating>([^<]+)</Rating></expression> </RegExp> <RegExp input="$$8" output="<votes>\1</votes>" dest="12+"> <expression><RatingCount>([^<]+)</RatingCount></expression> </RegExp> <expression>TheTVDB</expression> </RegExp> <RegExp input="$INFO[RatingS]" output="$$13" dest="4+"> <RegExp input="$$8" output="\1" dest="11"> <expression clear="yes"><IMDB_ID>([^<]+)</IMDB_ID></expression> </RegExp> <RegExp input="$$11"> <RegExp conditional="fallback" input="$$8" output="<rating>\1</rating>" dest="13+"> <expression><Rating>([^<]+)</Rating></expression> </RegExp> <RegExp conditional="fallback" input="$$8" output="<votes>\1</votes>" dest="13+"> <expression><RatingCount>([^<]+)</RatingCount></expression> </RegExp> <expression>^$</expression> </RegExp> <RegExp input="$$11" output="<chain function="GetIMDBRatingById">$$11</chain>" dest="13"> <expression>(.+)</expression> </RegExp> <expression>IMDb</expression> </RegExp> <RegExp input="$$1" output="<runtime>\1</runtime>" dest="4+"> <expression><Runtime>([^<]+)</Runtime></expression> </RegExp> <expression noclean="1"/> </RegExp> </GetEpisodeDetails> </scraper>