p3-eztv 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/p3-eztv.rb +25 -15
- data/p3-eztv.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4480264b0c1597a37559516c5ba634eceb20bba
|
4
|
+
data.tar.gz: 331827992168075c378fbd13dba768ac844927a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b8ac22816c14befd05e688a159d96ba6324be571677605163c7cd66475a188c981fac1607686de0761d3d1d4f21608425623b30f3fe641a9c1dd2ca70a0fd1b
|
7
|
+
data.tar.gz: acad7f0d02c396969362e68d9163a740351c86cc67926d5bc38f85eab8c971806b827face6da94fe4ebdcb74a89a1ccd76f6f1f5ec863a26dff52cf8f7e653ee
|
data/lib/p3-eztv.rb
CHANGED
@@ -4,33 +4,39 @@ require 'uri'
|
|
4
4
|
|
5
5
|
module P3
|
6
6
|
module Eztv
|
7
|
-
SE_FORMAT =
|
8
|
-
X_FORMAT =
|
7
|
+
SE_FORMAT = "S(\\d{1,2})E(\\d{1,2})"
|
8
|
+
X_FORMAT = "(\\d{1,2})x(\\d{1,2})"
|
9
9
|
|
10
10
|
class SeriesNotFoundError < StandardError
|
11
11
|
def initialize(series)
|
12
|
-
msg = "Unable to find '#{series.
|
12
|
+
msg = "Unable to find '#{series.search_string()}' on https://eztv.ag."
|
13
13
|
super(msg)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
class Series
|
18
18
|
include HTTParty
|
19
|
-
attr_reader :name
|
19
|
+
attr_reader :name, :high_def
|
20
20
|
EPISODES_XPATH = '//*[@id="header_holder"]/table[5]'
|
21
21
|
|
22
22
|
base_uri 'http://eztv.ag'
|
23
23
|
|
24
24
|
def initialize(name)
|
25
|
-
@name =
|
25
|
+
@name = name
|
26
|
+
@high_def = false
|
26
27
|
end
|
27
28
|
|
28
29
|
def high_def!
|
29
|
-
@
|
30
|
+
@high_def = true
|
31
|
+
end
|
32
|
+
|
33
|
+
def search_string
|
34
|
+
search = @high_def ? "#{@name} 720p" : @name
|
35
|
+
return URI::escape( search )
|
30
36
|
end
|
31
37
|
|
32
38
|
def episodes
|
33
|
-
@episodes ||= EpisodeFactory.create( fetch_episodes() )
|
39
|
+
@episodes ||= EpisodeFactory.create( name, fetch_episodes() )
|
34
40
|
end
|
35
41
|
|
36
42
|
def episode(season, episode_number)
|
@@ -40,7 +46,7 @@ module P3
|
|
40
46
|
end
|
41
47
|
|
42
48
|
def get(s01e01_format)
|
43
|
-
season_episode_match_data = s01e01_format.match( SE_FORMAT )
|
49
|
+
season_episode_match_data = s01e01_format.match( /#{SE_FORMAT}/ )
|
44
50
|
season = season_episode_match_data[1].to_i
|
45
51
|
episode_number = season_episode_match_data[2].to_i
|
46
52
|
return episode(season, episode_number)
|
@@ -59,7 +65,7 @@ module P3
|
|
59
65
|
def fetch_episodes
|
60
66
|
|
61
67
|
# 'get' method comes from httparty
|
62
|
-
result = Series::get("/search/#{
|
68
|
+
result = Series::get("/search/#{self.search_string()}")
|
63
69
|
|
64
70
|
document = Nokogiri::HTML(result)
|
65
71
|
|
@@ -75,12 +81,16 @@ module P3
|
|
75
81
|
end
|
76
82
|
|
77
83
|
module EpisodeFactory
|
78
|
-
def self.create(
|
84
|
+
def self.create( name, episodes_node_array )
|
79
85
|
episodes = []
|
80
|
-
|
86
|
+
episodes_node_array.reverse.collect do |episode_node|
|
81
87
|
begin
|
82
|
-
|
83
|
-
|
88
|
+
e = Episode.new( episode_node )
|
89
|
+
|
90
|
+
if( ( e.raw_title.match( /#{name} #{SE_FORMAT}/i ) ) or ( e.raw_title.match( /#{name} #{X_FORMAT}/i ) ) )
|
91
|
+
# Episode will throw if it can't parse
|
92
|
+
episodes << e
|
93
|
+
end
|
84
94
|
rescue
|
85
95
|
end
|
86
96
|
end
|
@@ -112,8 +122,8 @@ module P3
|
|
112
122
|
|
113
123
|
def set_season_and_episode_number(episode_node)
|
114
124
|
@raw_title = episode_node.css('td.forum_thread_post a.epinfo').first.inner_text
|
115
|
-
season_episode_match_data = @raw_title.match( SE_FORMAT ) || @raw_title.match( X_FORMAT )
|
116
|
-
raise unless season_episode_match_data
|
125
|
+
season_episode_match_data = @raw_title.match( /#{SE_FORMAT}/ ) || @raw_title.match( /#{X_FORMAT}/ )
|
126
|
+
raise "no match" unless season_episode_match_data
|
117
127
|
@season = season_episode_match_data[1].to_i
|
118
128
|
@episode_number = season_episode_match_data[2].to_i
|
119
129
|
end
|
data/p3-eztv.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "p3-eztv"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.8"
|
8
8
|
spec.authors = ["Damir Svrtan", "Poul Hornsleth"]
|
9
9
|
spec.email = ["poulh@umich.edu"]
|
10
10
|
spec.summary = "EZTV Search API"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: p3-eztv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Svrtan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|