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.
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