1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- should be self-explanatory -->
3 <scraper framework="1.1" date="2013-04-04">
5 <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">
6 <expression>http://(?:www\.)?thetvdb.com/(?:index\.php)?\?tab=series&id=([0-9]+)</expression>
8 <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+">
9 <expression>imdb....?/title/tt([0-9]*)</expression>
11 <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+">
12 <expression>imdb....?/Title\?([0-9]*)</expression>
17 <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">
18 <expression><seriesid>([0-9]*)</seriesid></expression>
22 <EpisodeGuideUrl dest="3">
23 <RegExp input="$$1" output="\1" dest="3">
24 <expression>(.*?http://www.thetvdb.com.*)</expression>
26 <RegExp input="$$1" output="\1" dest="3">
27 <expression>(.*?http://thetvdb.com.*)</expression>
31 <!-- input: $1=query string -->
32 <!-- returns: the url we should use to do the search -->
33 <CreateSearchUrl dest="3">
34 <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">
35 <RegExp input="$$2" output="%20(\1)" dest="4">
36 <expression clear="yes">(.+)</expression>
42 <!-- input: $1=html $2=search query -->
43 <!-- returns: results in xml format <results><movie><title>*</title><url>*</url>*#urls<extra>*</extra></movie>*</results> -->
44 <GetSearchResults dest="1">
45 <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><results>\1</results>" dest="1">
46 <RegExp input="$$1" output="<entity><title>\3</title><language>\2</language><url cache="\1-\2.xml">http://thetvdb.com/api/1D62F2F90030C444/series/\1/all/\2.zip</url><id>\1</id></entity>" dest="4">
47 <expression repeat="yes"><seriesid>([0-9]*)</seriesid>[^<]*<language>([^<]*)</language>[^<]*<SeriesName>([^<]*)</SeriesName></expression>
49 <expression noclean="1"/>
53 <!-- input: $1..#urls=html -->
54 <!-- input: $(#urls+1): extra !-->
55 <!-- returns: results in xml format <details><plot>*</plot><director>*</director><premiered>*</premiered><episodeguide>*</episodeguide></details> -->
57 <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><details>\1</details>" dest="7">
58 <RegExp input="$$1" output="\1" dest="5">
59 <expression noclean="1"><Series>.*?<id>$$2</id>(.*)</expression>
61 <RegExp input="$$5" output="<plot>\1</plot>" dest="4">
62 <expression noclean="1"><Overview>([^<]*)</Overview></expression>
64 <RegExp input="$$2" output="<id>\1</id>" dest="4+">
67 <RegExp input="$$1" output="<mpaa>\1</mpaa>" dest="4+">
68 <expression><ContentRating>([^<]*)</ContentRating></expression>
70 <RegExp input="$$5" output="<premiered>\1</premiered>" dest="4+">
71 <expression><FirstAired>([^<]*)</FirstAired></expression>
73 <RegExp input="$$5" output="<rating>\1</rating>" dest="4+">
74 <expression><Rating>([^<]*)</Rating></expression>
76 <RegExp input="$$5" output="<studio>\1</studio>" dest="4+">
77 <expression><Network>([^<]*)</Network></expression>
79 <RegExp input="$$5" output="<title>\1</title>" dest="4+">
80 <expression><SeriesName>([^<]*)</SeriesName></expression>
82 <RegExp input="$$5" output="\1" dest="10">
83 <expression noclean="1"><Genre>([^<]*)</Genre></expression>
85 <RegExp input="$$10" output="<genre>\1</genre>" dest="4+">
86 <expression repeat="yes">([^\|]*)\|</expression>
88 <RegExp input="$$10" output="<genre>\1</genre>" dest="4+">
89 <expression repeat="yes">([^,]*),</expression>
91 <RegExp input="$$10" output="<genre>\1</genre>" dest="4+">
92 <expression>([^\|,]+)$</expression>
94 <!-- actors with thumbs -->
95 <RegExp input="$$5" output="<actor><name>\2</name><role>\3</role><thumb>http://thetvdb.com/banners/\1</thumb></actor>" dest="4+">
96 <expression repeat="yes" noclean="1,2,3"><Actor>.*?<Image>([^<]+)</Image>.*?<Name>([^<]*)</Name>.*?<Role>([^<]*)</expression>
98 <!-- actors without thumbs -->
99 <RegExp input="$$5" output="<actor><name>\2</name><role>\3</role></actor>" dest="4+">
100 <expression repeat="yes" noclean="1,2,3"><Actor>.*?<Image>([^<]*)</Image>.*?<Name>([^<]*)</Name>.*?<Role>([^<]*)</expression>
102 <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+">
103 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>graphical</BannerType2>[^<]*<Language>$INFO[language]</Language></expression>
105 <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+">
106 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>graphical</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression>
108 <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+">
109 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>text</BannerType2>[^<]*<Language>$INFO[language]</Language></expression>
111 <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+">
112 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>text</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression>
114 <RegExp input="$$5" output="<thumb aspect="banner">http://thetvdb.com/banners/\1</thumb>" dest="4+">
115 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>series</BannerType>[^<]*<BannerType2>blank</BannerType2>[^<]*<Language></Language></expression>
117 <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="\2">http://thetvdb.com/banners/\1</thumb>" dest="4+">
118 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>season</BannerType2>[^<]*<Language>$INFO[language]</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression>
120 <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="\3">http://thetvdb.com/banners/\1</thumb>" dest="4+">
121 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>season</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression>
123 <RegExp input="$$5" output="<thumb aspect="banner" type="season" season="\2">http://thetvdb.com/banners/\1</thumb>" dest="4+">
124 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>seasonwide</BannerType2>[^<]*<Language>$INFO[language]</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression>
126 <RegExp input="$$5" output="<thumb aspect="banner" type="season" season="\3">http://thetvdb.com/banners/\1</thumb>" dest="4+">
127 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>season</BannerType>[^<]*<BannerType2>seasonwide</BannerType2>[^<]*<Language>((?!$INFO[language])[a-z])*</Language>[^<]*[^S]*Season>([0-9]+)</Season></expression>
129 <RegExp input="$$5" output="<thumb aspect="poster">http://thetvdb.com/banners/\1</thumb>" dest="4+">
130 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>poster</BannerType></expression>
132 <RegExp input="$$5" output="<thumb aspect="poster" type="season" season="-1">http://thetvdb.com/banners/\1</thumb>" dest="4+">
133 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>poster</BannerType></expression>
135 <RegExp conditional="fanart" input="$$7" output="<fanart url="http://thetvdb.com/banners/">\1</fanart>" dest="4+">
136 <RegExp input="$$5" output="<thumb dim="\2" colors="\3" preview="_cache/\1">\1</thumb>" dest="7+">
137 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>fanart</BannerType>[^<]*<BannerType2>([^<]*)</BannerType2>[^<]*<Colors>([^<]*)</Colors>[^<]*<Language>$INFO[language]</Language></expression>
139 <RegExp input="$$5" output="<thumb dim="\2" colors="\3" preview="_cache/\1">\1</thumb>" dest="7+">
140 <expression repeat="yes"><BannerPath>([^<]*)</BannerPath>[^<]*<BannerType>fanart</BannerType>[^<]*<BannerType2>([^<]*)</BannerType2>[^<]*<Colors>([^<]*)</Colors>[^<]*<Language>((?!$INFO[language])[a-z])*</Language></expression>
142 <expression noclean="1"/>
144 <RegExp input="$$3" output="\1" dest="6">
145 <expression>.*/(.*).zip</expression>
147 <RegExp input="$$3" output="<episodeguide><url cache="$$2-$$6.xml">\1</url></episodeguide>" dest="4+">
150 <expression noclean="1"/>
154 <!-- input: $1=html !-->
155 <!-- input: $2=series url !-->
156 <!-- returns: results in xml format <episodeguide><episode><title>*</title><url>*</url><season>*</season><epnum>*</epnum><thumb>*</thumb><id>*</id><aired>*</aired></episode>*</episodeguide> !-->
157 <GetEpisodeList dest="3">
158 <RegExp input="$$4" output="<episodeguide>\1</episodeguide>" dest="3">
159 <RegExp input="$$2" output="\2-\3" dest="10">
160 <expression>http://(?:www\.)?thetvdb.com/api/(.+)/series/([0-9]*)/all/(.+).zip</expression>
162 <RegExp conditional="!dvdorder">
163 <!-- Regular episodes (Absolute order) -->
164 <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+">
165 <expression repeat="yes"><Episode>.*?<id>([0-9]*).*?<EpisodeName>([^<]*).*?<FirstAired>([^<]*).*?<absolute_number>([0-9]*).*?</Episode></expression>
167 <!-- Specials (Absolute order) -->
168 <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+">
169 <expression repeat="yes"><Episode>.*?<id>([0-9]*).*?<EpisodeName>([^<]*).*?<EpisodeNumber>([0-9]*).*?<FirstAired>([^<]*).*?<SeasonNumber>0</SeasonNumber>.*?</Episode></expression>
171 <!-- Normal episodes -->
172 <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">
173 <expression repeat="yes"><Episode>.*?<id>([0-9]+).*?<EpisodeName>([^<]*).*?<EpisodeNumber>([0-9]+)[^<]*.*?<FirstAired>([^<]*)</FirstAired>.*?<SeasonNumber>([0-9]+)[^<]*.*?</Episode></expression>
177 <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">
178 <expression repeat="yes"><Episode>.*?<id>([0-9]+).*?<Combined_episodenumber>([^<]*).*?<Combined_season>([^<]*).*?<EpisodeName>([^<]*).*?<FirstAired>([^<]*)</FirstAired>.*?</Episode></expression>
180 <expression noclean="1"/>
184 <!-- input: $1=html -->
185 <!-- returns: results in xml format <details><writer>*</writer><director>*</director><cast>*</cast><rating>*</rating><rank>*</rank><plot>*</plot> -->
186 <GetEpisodeDetails dest="3">
187 <RegExp input="$$4" output="<?xml version="1.0" encoding="utf-8" standalone="yes"?><details>\1</details>" dest="3">
188 <RegExp input="$$1" output="\1" dest="8">
189 <expression noclean="1"><Episode>.*?<id>$$2</id>(.*?)</Episode></expression>
191 <RegExp input="$$1" output="<uniqueid>$$2</uniqueid>" dest="4">
194 <RegExp input="$$8" output="<plot>\1</plot>" dest="4+">
195 <expression><Overview>([^<]*)</Overview></expression>
197 <RegExp input="$$8" output="\1" dest="6">
198 <expression noclean="1"><Writer>([^<]*)</Writer></expression>
200 <RegExp input="$$6" output="<credits>\1</credits>" dest="4+">
201 <expression repeat="yes">([^\|]*)\|</expression>
203 <RegExp input="$$6" output="<credits>\1</credits>" dest="4+">
204 <expression repeat="yes">([^,]*),</expression>
206 <RegExp input="$$6" output="<credits>\1</credits>" dest="4+">
207 <expression>([^\|,]+)$</expression>
209 <RegExp input="$$8" output="\1" dest="6">
210 <expression noclean="1"><Director>([^<]*)</Director></expression>
212 <RegExp input="$$6" output="<director>\1</director>" dest="4+">
213 <expression repeat="yes">([^\|]*)\|</expression>
215 <RegExp input="$$6" output="<director>\1</director>" dest="4+">
216 <expression repeat="yes">([^,]*),</expression>
218 <RegExp input="$$6" output="<director>\1</director>" dest="4+">
219 <expression>([^\|,]+)$</expression>
221 <RegExp input="$$8" output="\1" dest="6">
222 <expression noclean="1"><GuestStars>([^<]*)</GuestStars></expression>
224 <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+">
225 <expression repeat="yes">([^\|]*)\|</expression>
227 <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+">
228 <expression repeat="yes">([^,]*),</expression>
230 <RegExp input="$$6" output="<actor><name>\1</name></actor>" dest="4+">
231 <expression>([^\|,]+)$</expression>
233 <RegExp input="$$8" output="<title>\1</title>" dest="4+">
234 <expression><EpisodeName>([^<]*)</EpisodeName></expression>
236 <!-- Regular Episodes - Absolute Order -->
237 <RegExp conditional="absolutenumber" input="$$8" output="<season>1</season><episode>\2</episode>" dest="4+">
238 <expression><SeasonNumber>([1-9]*)</SeasonNumber>.*?<absolute_number>([0-9]*)</absolute_number></expression>
240 <!-- Specials - Absolute Order -->
241 <RegExp conditional="absolutenumber" input="$$8" output="<season>0</season><episode>\1</episode>" dest="4+">
242 <expression><EpisodeNumber>([0-9]*)</EpisodeNumber>.*?<SeasonNumber>0</SeasonNumber></expression>
244 <!-- Normal Season/Episodes -->
245 <RegExp conditional="!absolutenumber" input="$$9" output="<season>\1</season>" dest="4+">
246 <RegExp conditional="!dvdorder" input="$$8" output="\1" dest="9">
247 <expression clear="yes"><SeasonNumber>([^<]*)</SeasonNumber></expression>
249 <RegExp conditional="dvdorder" input="$$8" output="\1" dest="9">
250 <expression><Combined_season>([^<]*)</Combined_season></expression>
254 <RegExp conditional="!absolutenumber" input="$$9" output="<episode>\1</episode>" dest="4+">
255 <RegExp conditional="!dvdorder" input="$$8" output="\1" dest="9">
256 <expression clear="yes"><EpisodeNumber>([^<]*)</EpisodeNumber></expression>
258 <RegExp conditional="dvdorder" input="$$8" output="\1" dest="9">
259 <expression><Combined_episodenumber>([^<]*)</Combined_episodenumber></expression>
263 <RegExp input="$$8" output="<thumb>http://thetvdb.com/banners/\1</thumb>" dest="4+">
264 <expression><filename>([^<]+)</filename></expression>
266 <RegExp input="$$8" output="<aired>\1</aired>" dest="4+">
267 <expression><FirstAired>([^<]+)</FirstAired></expression>
269 <RegExp input="$$8" output="<displayseason>\1</displayseason>" dest="4+">
270 <expression><airsbefore_season>([^<]+)</airsbefore_season></expression>
272 <RegExp input="$$8" output="<displayepisode>\1</displayepisode>" dest="4+">
273 <expression><airsbefore_episode>([^<]+)</airsbefore_episode></expression>
275 <RegExp input="$$8" output="<displayafterseason>\1</displayafterseason>" dest="4+">
276 <expression><airsafter_season>([^<]+)</airsafter_season></expression>
278 <RegExp input="$$8" output="<rating>\1</rating>" dest="4+">
279 <expression><Rating>([^<]+)</Rating></expression>
281 <RegExp input="$$1" output="<runtime>\1</runtime>" dest="4+">
282 <expression><Runtime>([^<]+)</Runtime></expression>
284 <expression noclean="1"/>