subtitulos_downloader 0.6.2 → 0.7.0
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.
@@ -1,5 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require '
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'uri'
|
4
|
+
require 'net/http'
|
5
|
+
require 'ensure/encoding'
|
3
6
|
|
4
7
|
module SubtitulosDownloader
|
5
8
|
|
@@ -57,59 +60,57 @@ module SubtitulosDownloader
|
|
57
60
|
protected
|
58
61
|
|
59
62
|
def get_translators(show_sub)
|
60
|
-
open(@provider_link,
|
63
|
+
ep_doc = Nokogiri::HTML(open(@provider_link,
|
61
64
|
"User-Agent" => @user_agent,
|
62
|
-
"Referer" => "#{@base_uri}/show/#{show_sub[:id_show]}" )
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
translated = green.next_sibling.next_sibling.next_sibling
|
73
|
-
@translators = translated.search('a').count
|
74
|
-
return @translators
|
75
|
-
|
76
|
-
end
|
77
|
-
# title = (episode_table/"tr/td[@colspan='5']/a").inner_html.force_encoding('utf-8')
|
78
|
-
# episode_str = "%02d" % show_episode.episode
|
79
|
-
# episode_number = "#{show_episode.season}x#{episode_str}"
|
80
|
-
# if title =~ /#{episode_number}/i
|
81
|
-
# ep_t = episode_table
|
82
|
-
# break
|
83
|
-
# end
|
65
|
+
"Referer" => "#{@base_uri}/show/#{show_sub[:id_show]}" ), nil, 'UTF-8')
|
66
|
+
ep_doc.encoding = 'utf-8'
|
67
|
+
split = @direct_link.split('/')
|
68
|
+
sub_id = [split.pop, split.pop].reverse.join('/')
|
69
|
+
ep_doc.css('span.descargar').each do |green|
|
70
|
+
a = green.css('a').first
|
71
|
+
if a and a['href'] == @direct_link
|
72
|
+
translated = green.xpath('following-sibling::span')[2]
|
73
|
+
@translators = translated.css('a').count
|
74
|
+
return @translators
|
84
75
|
end
|
85
|
-
|
86
|
-
|
76
|
+
# title = (episode_table/"tr/td[@colspan='5']/a").inner_html
|
77
|
+
# episode_str = "%02d" % show_episode.episode
|
78
|
+
# episode_number = "#{show_episode.season}x#{episode_str}"
|
79
|
+
# if title =~ /#{episode_number}/i
|
80
|
+
# ep_t = episode_table
|
81
|
+
# break
|
82
|
+
# end
|
83
|
+
end
|
84
|
+
@translators = -1
|
87
85
|
end
|
88
86
|
|
89
87
|
def get_subtitles(language, episode_table, show_sub)
|
90
|
-
@provider_link = (
|
88
|
+
@provider_link = episode_table.css("td.NewsTitle a").first['href']
|
91
89
|
|
92
90
|
translation_unfinished = false
|
93
|
-
(
|
94
|
-
language_sub = lang.
|
91
|
+
episode_table.css("tr td.language").each do |lang|
|
92
|
+
language_sub = lang.text.strip
|
95
93
|
if language_sub =~ /#{language}/i
|
96
|
-
# puts "Language #{language} found"
|
97
|
-
|
94
|
+
# puts "Language #{language} found #{language_sub}"
|
95
|
+
completed = lang.parent.css('td:nth-child(6)')
|
96
|
+
if not completed.text.strip =~ /[0-9]+\.?[0-9]*% Completado/i
|
98
97
|
# puts "Translation for language #{language} completed"
|
99
|
-
subtitle_a = lang.parent.
|
100
|
-
subtitle_url = subtitle_a
|
98
|
+
subtitle_a = lang.parent.css("a").first
|
99
|
+
subtitle_url = subtitle_a['href']
|
101
100
|
# puts "Fetching #{language} subtitle file"
|
102
101
|
@provider_language = language_sub
|
103
102
|
@direct_link = subtitle_url
|
104
103
|
# @provider_link = "#{@base_uri}/show/#{show_sub[:id_show]}"
|
105
|
-
translation_unfinished = false
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
104
|
+
translation_unfinished = false
|
105
|
+
|
106
|
+
uri = URI.parse subtitle_url
|
107
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
108
|
+
req = Net::HTTP::Get.new(uri.path, {"User-Agent" => @user_agent, "Referer" => "#{@base_uri}/show/#{show_sub[:id_show]}"})
|
109
|
+
response = http.request(req)
|
110
|
+
utf8_body = response.body.ensure_encoding('UTF-8', :external_encoding => 'ISO-8859-1', :invalid_characters => :transcode)
|
111
|
+
|
112
|
+
return utf8_body
|
113
|
+
|
113
114
|
else
|
114
115
|
translation_unfinished = true
|
115
116
|
end
|
@@ -131,9 +132,9 @@ module SubtitulosDownloader
|
|
131
132
|
show_episode.show_name = 'The Newsroom' if show_episode.show_name == 'The Newsroom (2012)'
|
132
133
|
show_episode.show_name = 'The Office' if show_episode.show_name == 'The Office (US)' or show_episode.show_name == 'The Office (1995)'
|
133
134
|
show_episode.show_name = 'Spartacus: Blood and Sand' if show_episode.show_name =~ /Spartacus/i
|
134
|
-
@shows_doc.
|
135
|
-
show_name = show_subs.
|
136
|
-
show_url = show_subs
|
135
|
+
@shows_doc.css("#contenido a").each do |show_subs|
|
136
|
+
show_name = show_subs.text
|
137
|
+
show_url = show_subs['href']
|
137
138
|
show = { :show_episode => show_episode, :url => show_url, :id_show => show_url.split('/show/')[1].to_i }
|
138
139
|
if (show_name == show_episode.show_name)
|
139
140
|
shows = []
|
@@ -154,25 +155,21 @@ module SubtitulosDownloader
|
|
154
155
|
|
155
156
|
season_url = "#{@base_uri}/ajax_loadShow.php?show=#{show_sub[:id_show]}&season=#{show_episode.season}"
|
156
157
|
ep_t = nil
|
157
|
-
open(season_url,
|
158
|
+
season_doc = Nokogiri::HTML(open(season_url,
|
158
159
|
"User-Agent" => @user_agent,
|
159
|
-
"Referer" =>"#{@base_uri}" )
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
break
|
173
|
-
end
|
174
|
-
end
|
175
|
-
}
|
160
|
+
"Referer" =>"#{@base_uri}" ), nil, 'UTF-8')
|
161
|
+
season_doc.encoding = 'utf-8'
|
162
|
+
raise SeasonNotFound, "[#{@provider_name}] Season for #{show_episode.full_name} not found" if season_doc.css('table').count == 0
|
163
|
+
|
164
|
+
season_doc.css('table').each do |episode_table|
|
165
|
+
title = episode_table.css("tr td[colspan='5'] a").text
|
166
|
+
episode_str = "%02d" % show_episode.episode
|
167
|
+
episode_number = "#{show_episode.season}x#{episode_str}"
|
168
|
+
if title =~ /#{episode_number}/i
|
169
|
+
ep_t = episode_table
|
170
|
+
break
|
171
|
+
end
|
172
|
+
end
|
176
173
|
|
177
174
|
if ep_t
|
178
175
|
return ep_t
|
@@ -184,12 +181,11 @@ module SubtitulosDownloader
|
|
184
181
|
|
185
182
|
|
186
183
|
def get_shows_page
|
187
|
-
open(
|
184
|
+
@shows_doc = Nokogiri::HTML(open(
|
188
185
|
"#{@base_uri}/series",
|
189
186
|
"User-Agent" => @user_agent,
|
190
|
-
"Referer" =>"#{@base_uri}" )
|
191
|
-
|
192
|
-
}
|
187
|
+
"Referer" =>"#{@base_uri}" ), nil, 'UTF-8')
|
188
|
+
@shows_doc.encoding = 'utf-8'
|
193
189
|
end
|
194
190
|
|
195
191
|
end
|
@@ -21,7 +21,10 @@ Gem::Specification.new do |s|
|
|
21
21
|
# specify any dependencies here; for example:
|
22
22
|
s.add_development_dependency "rake"
|
23
23
|
s.add_development_dependency "rspec", "~>2.0"
|
24
|
+
s.add_development_dependency "awesome_print", ">= 1.1.0"
|
24
25
|
# s.add_runtime_dependency "rest-client"
|
25
26
|
s.add_dependency("tvdb", ">= 0.1.0")
|
27
|
+
s.add_dependency("nokogiri", ">= 1.5.5")
|
26
28
|
s.add_dependency("hpricot", ">= 0.8.4")
|
29
|
+
s.add_dependency("ensure-encoding")
|
27
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: subtitulos_downloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '2.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: awesome_print
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.1.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.0
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: tvdb
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,6 +75,22 @@ dependencies:
|
|
59
75
|
- - ! '>='
|
60
76
|
- !ruby/object:Gem::Version
|
61
77
|
version: 0.1.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: nokogiri
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.5.5
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.5.5
|
62
94
|
- !ruby/object:Gem::Dependency
|
63
95
|
name: hpricot
|
64
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +107,22 @@ dependencies:
|
|
75
107
|
- - ! '>='
|
76
108
|
- !ruby/object:Gem::Version
|
77
109
|
version: 0.8.4
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: ensure-encoding
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
78
126
|
description: Fetch subtitles from different providers and save them to a given path
|
79
127
|
email:
|
80
128
|
- hector@aerstudio.com
|
@@ -115,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
163
|
version: '0'
|
116
164
|
segments:
|
117
165
|
- 0
|
118
|
-
hash: -
|
166
|
+
hash: -93796529028502819
|
119
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
168
|
none: false
|
121
169
|
requirements:
|
@@ -124,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
172
|
version: '0'
|
125
173
|
segments:
|
126
174
|
- 0
|
127
|
-
hash: -
|
175
|
+
hash: -93796529028502819
|
128
176
|
requirements: []
|
129
177
|
rubyforge_project: subtitulos_downloader
|
130
178
|
rubygems_version: 1.8.24
|