tvrage_api 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/README.md +38 -8
  4. data/lib/tvrage_api/base.rb +8 -3
  5. data/lib/tvrage_api/client.rb +23 -3
  6. data/lib/tvrage_api/info.rb +19 -0
  7. data/lib/tvrage_api/recap.rb +47 -0
  8. data/lib/tvrage_api/schedule.rb +35 -0
  9. data/lib/tvrage_api/search.rb +30 -4
  10. data/lib/tvrage_api/show.rb +70 -8
  11. data/lib/tvrage_api/update.rb +16 -2
  12. data/lib/tvrage_api/version.rb +1 -1
  13. data/lib/tvrage_api.rb +3 -0
  14. data/spec/fixtures/all_recaps.xml +8 -0
  15. data/spec/fixtures/episode_info.xml +1 -0
  16. data/spec/fixtures/episode_list.xml +21 -0
  17. data/spec/fixtures/full_schedule.xml +60 -0
  18. data/spec/fixtures/full_search.xml +53 -0
  19. data/spec/fixtures/full_show_info.xml +36 -0
  20. data/spec/fixtures/last_recaps.xml +18 -0
  21. data/spec/fixtures/last_updates.xml +6 -0
  22. data/spec/fixtures/quick_info.txt +13 -0
  23. data/spec/fixtures/quick_schedule.txt +1 -0
  24. data/spec/fixtures/search.xml +39 -0
  25. data/spec/fixtures/show_info.xml +21 -0
  26. data/spec/fixtures/show_list.xml +5 -0
  27. data/spec/fixtures/show_recaps.xml +47 -0
  28. data/spec/functionals/info_spec.rb +30 -0
  29. data/spec/functionals/recap_spec.rb +66 -0
  30. data/spec/functionals/schedule_spec.rb +48 -0
  31. data/spec/functionals/search_spec.rb +48 -0
  32. data/spec/functionals/show_spec.rb +102 -0
  33. data/spec/functionals/update_spec.rb +30 -0
  34. data/spec/integrations/info_spec.rb +14 -0
  35. data/spec/integrations/recap_spec.rb +26 -0
  36. data/spec/integrations/schedule_spec.rb +20 -0
  37. data/spec/integrations/search_spec.rb +4 -3
  38. data/spec/integrations/show_spec.rb +12 -5
  39. data/spec/integrations/update_spec.rb +3 -2
  40. data/tvrage_api.gemspec +1 -1
  41. metadata +57 -18
  42. data/spec/integrations/client_spec.rb +0 -55
  43. data/spec/tvrage_api/client_spec.rb +0 -23
  44. data/spec/tvrage_api/search_spec.rb +0 -22
  45. data/spec/tvrage_api/show_spec.rb +0 -38
  46. data/spec/tvrage_api/update_spec.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cc485fd0b5d0192d75bfd365bc26843cd60ef6b
4
- data.tar.gz: 1d30a3840cf19545ab13c8aee5548e84db2115d2
3
+ metadata.gz: 770687502ef4bed24d33cd8f46cdc1899e36d64d
4
+ data.tar.gz: dade9e9f981d4fcc935c94cbb52e94d10e67816d
5
5
  SHA512:
6
- metadata.gz: cfbf9c7afdea409cce8bad1f8fb0fe3a7af818ab4ade2daf379baa20dc339d7d672bf2c1f5cf555fb121c1226eddb077b251cdb33713f9d4edd4f5f7f9d52c17
7
- data.tar.gz: 06e72ebd87168457edbd8629273517495f6902fa23d267cfae7d544d0253792f355949c84df20fbd79dda2b3a67cbfd95578e55cacf8e7a0377173ce1ee8ea60
6
+ metadata.gz: 3f208019294a07196dc7e772624674d36e4a80928132053404ef0e4ddc5c7c3879a4248d347f4ddd20185099f8a48795535f8f54ac5b2cce76910d925216fd4c
7
+ data.tar.gz: 01b54ceb78671945147f352880c8a810491638542f7dbb7f9203f96b035afdbb9eb4027dc3e1a42c4d756a93391a78640496aee411e0df53a21ef317c4644983
data/.travis.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
- script: 'bundle exec rspec spec/tvrage_api'
2
+ script: 'bundle exec rspec spec/functionals'
3
3
  rvm:
4
4
  - 2.0.0
data/README.md CHANGED
@@ -29,25 +29,55 @@ Search show by name:
29
29
 
30
30
  ```ruby
31
31
  client = TvrageApi::Client.new
32
- client.search.by_name('buffy')
33
- client.search.full_by_name('buffy')
32
+ client.search.by_name(show: 'buffy')
33
+ client.search.full_by_name(show: 'buffy')
34
34
  ```
35
35
 
36
36
  Search show by id:
37
37
 
38
38
  ```ruby
39
39
  client = TvrageApi::Client.new
40
- client.show.find('123')
41
- client.show.find_full('123')
42
- client.show.episodes('123') # show with all episodes
43
- client.show.episode('123', season, episode) # show with specific episode
40
+ client.show.find(sid: '123')
41
+ client.show.find_full(sid: '123')
42
+ client.show.episodes(sid: '123') # show with all episodes
43
+ client.show.episode(sid: '123', ep: 'SEASONxEPISODE') # show with specific episode
44
+ client.show.all
44
45
  ```
45
46
 
46
- Search all show ids:
47
+ QuickInfo (it return plain text, not parsed)
47
48
 
48
49
  ```ruby
49
50
  client = TvrageApi::Client.new
50
- client.update.all
51
+ client.info.find(show: 'Alias') # main information
52
+ client.info.find(show: 'Alias', ep: '2x04') # episode information
53
+ client.info.find(show: 'Alias', exact: 1) # exact information
54
+ ```
55
+
56
+ Schedule (quick method return plain text)
57
+
58
+ ```ruby
59
+ client = TvrageApi::Client.new
60
+ client.schedule.quick
61
+ client.schedule.full(country: 'US')
62
+ ```
63
+
64
+ Recaps
65
+
66
+ ```ruby
67
+ client = TvrageApi::Client.new
68
+ client.recap.all
69
+ client.recap.show(show: 5410)
70
+ client.recap.last(days: 100)
71
+ ```
72
+
73
+ Updates:
74
+
75
+ ```ruby
76
+ client = TvrageApi::Client.new
77
+ client.update.last # last 24 hours
78
+ client.update.last(hours: 48) # set timeline (default: 48)
79
+ client.update.last(sort: 'episodes') # only shows where episodes have changed
80
+ client.update.last(since: 1403668430) # updates since last visit
51
81
  ```
52
82
 
53
83
  ## Contributing
@@ -1,6 +1,11 @@
1
- require 'httparty'
1
+ require 'service_api'
2
2
 
3
3
  class TvrageApi::Base
4
- include HTTParty
5
- base_uri 'http://services.tvrage.com/feeds/'
4
+ include ServiceApi::BaseFaraday
5
+
6
+ private
7
+
8
+ def base_url
9
+ 'http://services.tvrage.com/'
10
+ end
6
11
  end
@@ -1,13 +1,33 @@
1
1
  class TvrageApi::Client
2
+ attr_reader :options
3
+
4
+ def initialize(options = {})
5
+ @options = options
6
+
7
+ @options[:adapter] ||= :net_http
8
+ end
9
+
2
10
  def search
3
- @search ||= TvrageApi::Search.new
11
+ @search ||= TvrageApi::Search.new(self)
4
12
  end
5
13
 
6
14
  def show
7
- @show ||= TvrageApi::Show.new
15
+ @show ||= TvrageApi::Show.new(self)
8
16
  end
9
17
 
10
18
  def update
11
- @show ||= TvrageApi::Update.new
19
+ @update ||= TvrageApi::Update.new(self)
20
+ end
21
+
22
+ def info
23
+ @info ||= TvrageApi::Info.new(self)
24
+ end
25
+
26
+ def schedule
27
+ @schedule ||= TvrageApi::Schedule.new(self)
28
+ end
29
+
30
+ def recap
31
+ @recap ||= TvrageApi::Recap.new(self)
12
32
  end
13
33
  end
@@ -0,0 +1,19 @@
1
+ class TvrageApi::Info < TvrageApi::Base
2
+ def find(options = {})
3
+ find_path_with_params(options).get
4
+ end
5
+
6
+ def find_url(options = {})
7
+ find_path_with_params(options).url
8
+ end
9
+
10
+ private
11
+
12
+ def find_path_with_params(options)
13
+ path(find_path).params(options)
14
+ end
15
+
16
+ def find_path
17
+ 'tools/quickinfo.php'
18
+ end
19
+ end
@@ -0,0 +1,47 @@
1
+ class TvrageApi::Recap < TvrageApi::Base
2
+ def all
3
+ path(all_path).get
4
+ end
5
+
6
+ def all_url
7
+ path(all_path).url
8
+ end
9
+
10
+ def show(options = {})
11
+ show_path_with_params(options).get
12
+ end
13
+
14
+ def show_url(options = {})
15
+ show_path_with_params(options).url
16
+ end
17
+
18
+ def last(options = {})
19
+ last_path_with_params(options).get
20
+ end
21
+
22
+ def last_url(options = {})
23
+ last_path_with_params(options).url
24
+ end
25
+
26
+ private
27
+
28
+ def all_path
29
+ 'recaps/all_recaps.php'
30
+ end
31
+
32
+ def show_path_with_params(options)
33
+ path(show_path).params(options)
34
+ end
35
+
36
+ def show_path
37
+ 'recaps/show_recaps.php'
38
+ end
39
+
40
+ def last_path_with_params(options)
41
+ path(last_path).params(options)
42
+ end
43
+
44
+ def last_path
45
+ 'recaps/last_recaps.php'
46
+ end
47
+ end
@@ -0,0 +1,35 @@
1
+ class TvrageApi::Schedule < TvrageApi::Base
2
+ def quick(options = {})
3
+ quick_path_with_params(options).get
4
+ end
5
+
6
+ def quick_url(options = {})
7
+ quick_path_with_params(options).url
8
+ end
9
+
10
+ def full(options = {})
11
+ full_path_with_params(options).get
12
+ end
13
+
14
+ def full_url(options = {})
15
+ full_path_with_params(options).url
16
+ end
17
+
18
+ private
19
+
20
+ def quick_path_with_params(options)
21
+ path(quick_path).params(options)
22
+ end
23
+
24
+ def quick_path
25
+ 'tools/quickschedule.php'
26
+ end
27
+
28
+ def full_path_with_params(options)
29
+ path(full_path).params(options)
30
+ end
31
+
32
+ def full_path
33
+ 'feeds/fullschedule.php'
34
+ end
35
+ end
@@ -1,9 +1,35 @@
1
1
  class TvrageApi::Search < TvrageApi::Base
2
- def by_name(name)
3
- self.class.get('search.php', show: name)
2
+ def by_name(options = {})
3
+ by_name_path_with_params(options).get
4
4
  end
5
5
 
6
- def full_by_name(name)
7
- self.class.get('full_search.php', show: name)
6
+ def by_name_url(options = {})
7
+ by_name_path_with_params(options).url
8
+ end
9
+
10
+ def full_by_name(options = {})
11
+ full_by_name_path_with_params(options).get
12
+ end
13
+
14
+ def full_by_name_url(options = {})
15
+ full_by_name_path_with_params(options).url
16
+ end
17
+
18
+ private
19
+
20
+ def by_name_path_with_params(options)
21
+ path(by_name_path).params(options)
22
+ end
23
+
24
+ def by_name_path
25
+ 'feeds/search.php'
26
+ end
27
+
28
+ def full_by_name_path_with_params(options)
29
+ path(full_by_name_path).params(options)
30
+ end
31
+
32
+ def full_by_name_path
33
+ 'feeds/full_search.php'
8
34
  end
9
35
  end
@@ -1,17 +1,79 @@
1
1
  class TvrageApi::Show < TvrageApi::Base
2
- def find(id)
3
- self.class.get('showinfo.php', sid: id)
2
+ def find(options = {})
3
+ find_path_with_params(options).get
4
4
  end
5
5
 
6
- def find_full(id)
7
- self.class.get('full_show_info.php', sid: id)
6
+ def find_url(options = {})
7
+ find_path_with_params(options).url
8
8
  end
9
9
 
10
- def episodes(show_id)
11
- self.class.get('episode_list.php', sid: show_id)
10
+ def find_full(options = {})
11
+ find_full_path_with_params(options).get
12
12
  end
13
13
 
14
- def episode(series_id, season, episode)
15
- self.class.get('episodeinfo.php', sid: series_id, ep: "#{season}x#{episode}")
14
+ def find_full_url(options = {})
15
+ find_full_path_with_params(options).url
16
+ end
17
+
18
+ def episodes(options = {})
19
+ episodes_path_with_params(options).get
20
+ end
21
+
22
+ def episodes_url(options = {})
23
+ episodes_path_with_params(options).url
24
+ end
25
+
26
+ def episode(options = {})
27
+ episode_path_with_params(options).get
28
+ end
29
+
30
+ def episode_url(options = {})
31
+ episode_path_with_params(options).url
32
+ end
33
+
34
+ def all
35
+ path(all_path).get
36
+ end
37
+
38
+ def all_url
39
+ path(all_path).url
40
+ end
41
+
42
+ private
43
+
44
+ def find_path_with_params(options)
45
+ path(find_path).params(options)
46
+ end
47
+
48
+ def find_path
49
+ 'feeds/showinfo.php'
50
+ end
51
+
52
+ def find_full_path_with_params(options)
53
+ path(find_full_path).params(options)
54
+ end
55
+
56
+ def find_full_path
57
+ 'feeds/full_show_info.php'
58
+ end
59
+
60
+ def episodes_path_with_params(options)
61
+ path(episodes_path).params(options)
62
+ end
63
+
64
+ def episodes_path
65
+ 'feeds/episode_list.php'
66
+ end
67
+
68
+ def episode_path_with_params(options)
69
+ path(episode_path).params(options)
70
+ end
71
+
72
+ def episode_path
73
+ 'feeds/episodeinfo.php'
74
+ end
75
+
76
+ def all_path
77
+ 'feeds/show_list.php'
16
78
  end
17
79
  end
@@ -1,5 +1,19 @@
1
1
  class TvrageApi::Update < TvrageApi::Base
2
- def all
3
- self.class.get('show_list.php')
2
+ def last(options = {})
3
+ last_path_with_params(options).get
4
+ end
5
+
6
+ def last_url(options = {})
7
+ last_path_with_params(options).url
8
+ end
9
+
10
+ private
11
+
12
+ def last_path_with_params(options)
13
+ path(last_path).params(options)
14
+ end
15
+
16
+ def last_path
17
+ 'feeds/last_updates.php'
4
18
  end
5
19
  end
@@ -1,3 +1,3 @@
1
1
  module TvrageApi
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/tvrage_api.rb CHANGED
@@ -8,3 +8,6 @@ require 'tvrage_api/base'
8
8
  require 'tvrage_api/search'
9
9
  require 'tvrage_api/show'
10
10
  require 'tvrage_api/update'
11
+ require 'tvrage_api/info'
12
+ require 'tvrage_api/schedule'
13
+ require 'tvrage_api/recap'
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+ <recaps found='800' >
4
+ <show><id>3256</id><recaps>144</recaps><last>2H, 51M</last></show>
5
+ <show><id>10408</id><recaps>100</recaps><last>26H, 40M</last></show>
6
+ <show><id>5923</id><recaps>4</recaps></show>
7
+ <show><id>6406</id><recaps>3</recaps></show>
8
+ </recaps>
@@ -0,0 +1 @@
1
+ <show id='2930'><name>Buffy the Vampire Slayer</name><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer</link><started>1997-03-10</started><ended>2003-05-20</ended><country>USA</country><status>Ended</status><classification>Scripted</classification><genres><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Mystery</genre><genre>Sci-Fi</genre></genres><airtime>Tuesday at 08:00 pm</airtime><runtime>60</runtime><episode><number>02x04</number><title>Inca Mummy Girl</title><airdate>1997-10-06</airdate><url>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28092</url></episode><latestepisode><number>07x22</number><title>Chosen</title><airdate>2003-05-20</airdate></latestepisode></show>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+
4
+ <Show>
5
+ <name>Buffy the Vampire Slayer</name>
6
+ <totalseasons>7</totalseasons>
7
+ <Episodelist>
8
+
9
+ <Season no="1">
10
+ <episode><epnum>1</epnum><seasonnum>01</seasonnum><prodnum>4V01</prodnum><airdate>1997-03-10</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28077</link><title>Welcome to the Hellmouth (1)</title></episode>
11
+ <episode><epnum>2</epnum><seasonnum>02</seasonnum><prodnum>4V02</prodnum><airdate>1997-03-10</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28078</link><title>The Harvest (2)</title></episode>
12
+ </Season>
13
+
14
+ <Season no="2">
15
+ <episode><epnum>13</epnum><seasonnum>01</seasonnum><prodnum>5V01</prodnum><airdate>1997-09-15</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28089</link><title>When She Was Bad</title></episode>
16
+ <episode><epnum>14</epnum><seasonnum>02</seasonnum><prodnum>5V02</prodnum><airdate>1997-09-22</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28090</link><title>Some Assembly Required</title></episode>
17
+ </Season>
18
+
19
+ </Episodelist>
20
+
21
+ </Show>
@@ -0,0 +1,60 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <schedule>
3
+ <DAY attr="2014-6-24">
4
+ <time attr="05:00 am">
5
+ <show name="ECW Hardcore TV">
6
+ <sid>1598</sid>
7
+ <network>WWE Network</network>
8
+ <title>
9
+ ECW World Champion Shane Douglas defends his title against Ron Simmons
10
+ </title>
11
+ <ep>07x44</ep>
12
+ <link>
13
+ http://www.tvrage.com/shows/id-1598/episodes/1065591078
14
+ </link>
15
+ </show>
16
+ <show name="Early Start">
17
+ <sid>40446</sid>
18
+ <network>CNN</network>
19
+ <title>Season 3, Episode 122</title>
20
+ <ep>03x122</ep>
21
+ <link>
22
+ http://www.tvrage.com/shows/id-40446/episodes/1065573066
23
+ </link>
24
+ </show>
25
+ </time>
26
+ <time attr="05:30 am">
27
+ <show name="Way Too Early">
28
+ <sid>35766</sid>
29
+ <network>msnbc</network>
30
+ <title>Season 5, Episode 222</title>
31
+ <ep>05x222</ep>
32
+ <link>
33
+ http://www.tvrage.com/shows/id-35766/episodes/1065574118
34
+ </link>
35
+ </show>
36
+ <show name="Wake Up With Al">
37
+ <sid>40464</sid>
38
+ <network>Weather Channel</network>
39
+ <title>Season 5, Episode 222</title>
40
+ <ep>05x222</ep>
41
+ <link>
42
+ http://www.tvrage.com/shows/id-40464/episodes/1065574431
43
+ </link>
44
+ </show>
45
+ </time>
46
+ </DAY>
47
+ <DAY attr="2016-9-7">
48
+ <time attr="08:00 pm">
49
+ <show name="The 2016 Summer Paralympics">
50
+ <sid>37733</sid>
51
+ <network>NBC</network>
52
+ <title>Opening ceremonies</title>
53
+ <ep>01x01</ep>
54
+ <link>
55
+ http://www.tvrage.com/shows/id-37733/episodes/1065386277
56
+ </link>
57
+ </show>
58
+ </time>
59
+ </DAY>
60
+ </schedule>
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+ <Results>
4
+ <show>
5
+ <showid>2930</showid>
6
+ <name>Buffy the Vampire Slayer</name>
7
+ <link>http://www.tvrage.com/Buffy_The_Vampire_Slayer</link>
8
+ <country>US</country>
9
+ <started>Mar/10/1997</started>
10
+ <ended>May/20/2003</ended>
11
+ <seasons>7</seasons>
12
+ <status>Ended</status>
13
+ <runtime>60</runtime>
14
+ <classification>Scripted</classification>
15
+ <genres><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Mystery</genre><genre>Sci-Fi</genre></genres>
16
+ <network country="US">UPN</network>
17
+ <airtime>20:00</airtime>
18
+ <airday>Tuesday</airday>
19
+ <akas><aka country="SE">Buffy &amp; vampyrerna</aka><aka country="DE">Buffy - Im Bann der Dämonen</aka><aka country="NO">Buffy - Vampyrenes skrekk</aka><aka country="HU">Buffy a vámpírok réme</aka><aka country="FR">Buffy Contre les Vampires</aka><aka country="IT">Buffy l'Ammazza Vampiri</aka><aka country="PL">Buffy postrach wampirów</aka><aka country="BR">Buffy, a Caça-Vampiros</aka><aka country="PT">Buffy, a Caçadora de Vampiros</aka><aka country="ES">Buffy, Cazavampiros</aka><aka country="HR">Buffy, ubojica vampira</aka><aka country="FI">Buffy, vampyyrintappaja</aka><aka country="EE">Vampiiritapja Buffy</aka><aka country="IS">Vampírubaninn Buffy</aka><aka country="RU">Баффи – истребительница вампиров</aka></akas>
20
+ </show>
21
+ <show>
22
+ <showid>31192</showid>
23
+ <name>Buffy the Vampire Slayer - Season Eight: Motion comics</name>
24
+ <link>http://www.tvrage.com/shows/id-31192</link>
25
+ <country>US</country>
26
+ <started>Jul/19/2010</started>
27
+ <ended>Nov/22/2010</ended>
28
+ <seasons>1</seasons>
29
+ <status>Canceled/Ended</status>
30
+ <runtime>15</runtime>
31
+ <classification>Animation</classification>
32
+ <genres><genre>Animation General</genre><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Sci-Fi</genre></genres>
33
+ <network country="US">iTunes</network>
34
+ <airtime>12:00</airtime>
35
+ <airday>Tuesday</airday>
36
+ </show>
37
+ <show>
38
+ <showid>2931</showid>
39
+ <name>Buffy the Animated Series</name>
40
+ <link>http://www.tvrage.com/Buffy_the_Animated_Series</link>
41
+ <country>US</country>
42
+ <started>2002</started>
43
+ <ended></ended>
44
+ <seasons>1</seasons>
45
+ <status>Pilot Rejected</status>
46
+ <runtime>4</runtime>
47
+ <classification>Animation</classification>
48
+ <genres><genre>Animation General</genre><genre>Action</genre><genre>Adventure</genre><genre>Horror/Supernatural</genre></genres>
49
+ <network country="US">FOX</network>
50
+ <airtime>12:00</airtime>
51
+ <airday>Tuesday</airday>
52
+ </show>
53
+ </Results>
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+
4
+ <Show>
5
+ <name>Buffy the Vampire Slayer</name>
6
+ <totalseasons>7</totalseasons>
7
+ <showid>2930</showid>
8
+ <showlink>http://tvrage.com/Buffy_The_Vampire_Slayer</showlink>
9
+ <started>Mar/10/1997</started>
10
+ <ended>May/20/2003</ended>
11
+ <image>http://images.tvrage.com/shows/3/2930.jpg</image>
12
+ <origin_country>US</origin_country>
13
+ <status>Ended</status>
14
+ <classification>Scripted</classification>
15
+ <genres><genre>Action</genre><genre>Adventure</genre><genre>Comedy</genre><genre>Drama</genre><genre>Horror/Supernatural</genre><genre>Mystery</genre><genre>Sci-Fi</genre></genres>
16
+ <runtime>60</runtime>
17
+ <network country="US">UPN</network>
18
+ <airtime>20:00</airtime>
19
+ <airday>Tuesday</airday>
20
+ <timezone>GMT-5 +DST</timezone>
21
+ <akas><aka country="SE">Buffy &amp; vampyrerna</aka><aka country="DE">Buffy - Im Bann der Dämonen</aka><aka country="NO">Buffy - Vampyrenes skrekk</aka><aka country="HU">Buffy a vámpírok réme</aka><aka country="FR">Buffy Contre les Vampires</aka><aka country="IT">Buffy l'Ammazza Vampiri</aka><aka country="PL">Buffy postrach wampirów</aka><aka country="BR">Buffy, a Caça-Vampiros</aka><aka country="PT">Buffy, a Caçadora de Vampiros</aka><aka country="ES">Buffy, Cazavampiros</aka><aka country="HR">Buffy, ubojica vampira</aka><aka country="FI">Buffy, vampyyrintappaja</aka><aka country="EE">Vampiiritapja Buffy</aka><aka country="IS">Vampírubaninn Buffy</aka><aka country="RU">Баффи – истребительница вампиров</aka></akas>
22
+ <Episodelist>
23
+
24
+ <Season no="1">
25
+ <episode><epnum>1</epnum><seasonnum>01</seasonnum><prodnum>4V01</prodnum><airdate>1997-03-10</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28077</link><title>Welcome to the Hellmouth (1)</title><screencap>http://images.tvrage.com/screencaps/15/2930/28077.png</screencap></episode>
26
+ <episode><epnum>2</epnum><seasonnum>02</seasonnum><prodnum>4V02</prodnum><airdate>1997-03-10</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28078</link><title>The Harvest (2)</title><screencap>http://images.tvrage.com/screencaps/15/2930/28078.png</screencap></episode>
27
+ </Season>
28
+
29
+ <Season no="2">
30
+ <episode><epnum>13</epnum><seasonnum>01</seasonnum><prodnum>5V01</prodnum><airdate>1997-09-15</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28089</link><title>When She Was Bad</title><screencap>http://images.tvrage.com/screencaps/15/2930/28089.png</screencap></episode>
31
+ <episode><epnum>14</epnum><seasonnum>02</seasonnum><prodnum>5V02</prodnum><airdate>1997-09-22</airdate><link>http://www.tvrage.com/Buffy_The_Vampire_Slayer/episodes/28090</link><title>Some Assembly Required</title><screencap>http://images.tvrage.com/screencaps/15/2930/28090.png</screencap></episode>
32
+ </Season>
33
+
34
+ </Episodelist>
35
+
36
+ </Show>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+ <recaps found='19' >
4
+ <show>
5
+ <id>10408</id>
6
+ <episode_id>1065590202</episode_id>
7
+ <episode_url>http://www.tvrage.com/Americas_Got_Talent/episodes/1065590202</episode_url>
8
+ <recap_url>http://www.tvrage.com/Americas_Got_Talent/episodes/1065590202/recap</recap_url>
9
+ <recap></recap>
10
+ </show>
11
+ <show>
12
+ <id>10408</id>
13
+ <episode_id>1065579369</episode_id>
14
+ <episode_url>http://www.tvrage.com/Americas_Got_Talent/episodes/1065579369</episode_url>
15
+ <recap_url>http://www.tvrage.com/Americas_Got_Talent/episodes/1065579369/recap</recap_url>
16
+ <recap></recap>
17
+ </show>
18
+ </recaps>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
3
+ <updates at='1403725287' found='417' sorting='latest_updates' showing='Last 24H'>
4
+ <show><id>42055</id><last>-27927</last><lastepisode>-27927</lastepisode></show>
5
+ <show><id>1817</id><last>-27712</last><lastepisode>-27053</lastepisode></show>
6
+ </updates>
@@ -0,0 +1,13 @@
1
+ <pre>Show ID@2537
2
+ Show Name@Alias
3
+ Show URL@http://www.tvrage.com/Alias
4
+ Premiered@2001
5
+ Started@Sep/30/2001
6
+ Ended@May/22/2006
7
+ Latest Episode@05x17^All the Time in the World^May/22/2006
8
+ Country@USA
9
+ Status@Canceled/Ended
10
+ Classification@Scripted
11
+ Genres@Action | Adventure | Drama
12
+ Network@ABC
13
+ Runtime@60
@@ -0,0 +1 @@
1
+ [DAY]Wednesday, 25 Jun 2014[/DAY] [TIME]05:00 pm[/TIME] [SHOW]CNN^The Situation Room^09x213^http://www.tvrage.com/The_Situation_Room[/SHOW] [SHOW]Al Jazeera America^Inside Story (US)^01x222^http://www.tvrage.com/shows/id-37215[/SHOW] [TIME]06:00 pm[/TIME] [SHOW]BET^106 and Park^14x180^http://www.tvrage.com/106_and_Park[/SHOW]