p3-eztv 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/p3-eztv.rb +25 -15
  3. data/p3-eztv.gemspec +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ab92a3ca25bec774bd2a32f97959abcb970c134
4
- data.tar.gz: f12a355129da5d3f8a09c077103190bf71704c12
3
+ metadata.gz: e4480264b0c1597a37559516c5ba634eceb20bba
4
+ data.tar.gz: 331827992168075c378fbd13dba768ac844927a7
5
5
  SHA512:
6
- metadata.gz: eaad6c86a40a0c63d484a3da0fabd2a54a6c1ece7915d399ccd7484a7593b372f8fcb6af32682347ae084fdd0df4d3d5da7e5e48b0e6124ba99adfa5e00408cd
7
- data.tar.gz: 61f1fa16b72a608c19d0f460840e98a9ce824470498b256fe4339b8eb7d469920d97328d4c4867c8c217548deef8f6d0d2ae05505c8e8919058ba4b266d9ac9d
6
+ metadata.gz: 3b8ac22816c14befd05e688a159d96ba6324be571677605163c7cd66475a188c981fac1607686de0761d3d1d4f21608425623b30f3fe641a9c1dd2ca70a0fd1b
7
+ data.tar.gz: acad7f0d02c396969362e68d9163a740351c86cc67926d5bc38f85eab8c971806b827face6da94fe4ebdcb74a89a1ccd76f6f1f5ec863a26dff52cf8f7e653ee
@@ -4,33 +4,39 @@ require 'uri'
4
4
 
5
5
  module P3
6
6
  module Eztv
7
- SE_FORMAT = /S(\d{1,2})E(\d{1,2})/
8
- X_FORMAT = /(\d{1,2})x(\d{1,2})/
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.name}' on https://eztv.ag."
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 = URI::escape( name )
25
+ @name = name
26
+ @high_def = false
26
27
  end
27
28
 
28
29
  def high_def!
29
- @name = "#{@name}%20720p"
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/#{name}")
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( episodes_array )
84
+ def self.create( name, episodes_node_array )
79
85
  episodes = []
80
- episodes_array.reverse.collect do |episode|
86
+ episodes_node_array.reverse.collect do |episode_node|
81
87
  begin
82
- # Episode will throw if it can't parse
83
- episodes << Episode.new( episode )
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
@@ -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"
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.7
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-02-24 00:00:00.000000000 Z
12
+ date: 2017-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri