viddl-rb 1.0.7 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee4284bc6f3bbd221b3bb3c684c378221b1dbcf6
4
- data.tar.gz: 0883656d2e90d010f30c151c3cafa6b68678470e
3
+ metadata.gz: 3d215777e25683d6ac2f60e80fbe24595e53b483
4
+ data.tar.gz: 92a9de5a18af78281c05bebfb2c8788b7683e749
5
5
  SHA512:
6
- metadata.gz: 8418fadf2a248f27d0e5f2bd6ae6cf1cea6215379c11d6028bfdc357f97fb63b98bd90f61ba8b4af9ac0353cd4452a738395a445a2e20c1abf3cf38e608b7b67
7
- data.tar.gz: 1153fe02d664a8e7e67f07d42103afc3ed8b7c0697c5f2c4b0a6836fa4f9071f23e1b92d1bc84172ed191d42312d128bf20157856e94ab5452546d080b7e5e1f
6
+ metadata.gz: f69749d90bb44060158f3dbee3f1cb7da589b85888b3a49bbc1f3b0ed7263523e68a39cff9343eaf102ba13cbc15d2d249bec1d8cc0e70372ac0ffb80b25753f
7
+ data.tar.gz: b83d81a78138fb601d6a2bbcfdf0dc9accffc25878d08527aefa5d1721c9c13be8824b97293a1494589ca21fb90276332bc57c303576fa53df440024c87e0599
data/Gemfile.lock ADDED
@@ -0,0 +1,237 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ viddl-rb (1.0.7)
5
+ multi_json (~> 1.10.0)
6
+ nokogiri (~> 1.6.0)
7
+ progressbar (~> 0.21)
8
+ rest-client
9
+
10
+ GEM
11
+ remote: http://rubygems.org/
12
+ specs:
13
+ ffi2-generators (0.1.1)
14
+ mime-types (2.4.3)
15
+ mini_portile (0.6.1)
16
+ minitest (5.4.3)
17
+ multi_json (1.10.1)
18
+ netrc (0.8.0)
19
+ nokogiri (1.6.4.1)
20
+ mini_portile (~> 0.6.0)
21
+ progressbar (0.21.0)
22
+ racc (1.4.12)
23
+ rake (10.1.1)
24
+ rb-readline (0.5.1)
25
+ rest-client (1.7.2)
26
+ mime-types (>= 1.16, < 3.0)
27
+ netrc (~> 0.7)
28
+ rubysl (2.1.0)
29
+ rubysl-abbrev (~> 2.0)
30
+ rubysl-base64 (~> 2.0)
31
+ rubysl-benchmark (~> 2.0)
32
+ rubysl-bigdecimal (~> 2.0)
33
+ rubysl-cgi (~> 2.0)
34
+ rubysl-cgi-session (~> 2.0)
35
+ rubysl-cmath (~> 2.0)
36
+ rubysl-complex (~> 2.0)
37
+ rubysl-continuation (~> 2.0)
38
+ rubysl-coverage (~> 2.0)
39
+ rubysl-csv (~> 2.0)
40
+ rubysl-curses (~> 2.0)
41
+ rubysl-date (~> 2.0)
42
+ rubysl-delegate (~> 2.0)
43
+ rubysl-digest (~> 2.0)
44
+ rubysl-drb (~> 2.0)
45
+ rubysl-e2mmap (~> 2.0)
46
+ rubysl-english (~> 2.0)
47
+ rubysl-enumerator (~> 2.0)
48
+ rubysl-erb (~> 2.0)
49
+ rubysl-etc (~> 2.0)
50
+ rubysl-expect (~> 2.0)
51
+ rubysl-fcntl (~> 2.0)
52
+ rubysl-fiber (~> 2.0)
53
+ rubysl-fileutils (~> 2.0)
54
+ rubysl-find (~> 2.0)
55
+ rubysl-forwardable (~> 2.0)
56
+ rubysl-getoptlong (~> 2.0)
57
+ rubysl-gserver (~> 2.0)
58
+ rubysl-io-console (~> 2.0)
59
+ rubysl-io-nonblock (~> 2.0)
60
+ rubysl-io-wait (~> 2.0)
61
+ rubysl-ipaddr (~> 2.0)
62
+ rubysl-irb (~> 2.1)
63
+ rubysl-logger (~> 2.0)
64
+ rubysl-mathn (~> 2.0)
65
+ rubysl-matrix (~> 2.0)
66
+ rubysl-mkmf (~> 2.0)
67
+ rubysl-monitor (~> 2.0)
68
+ rubysl-mutex_m (~> 2.0)
69
+ rubysl-net-ftp (~> 2.0)
70
+ rubysl-net-http (~> 2.0)
71
+ rubysl-net-imap (~> 2.0)
72
+ rubysl-net-pop (~> 2.0)
73
+ rubysl-net-protocol (~> 2.0)
74
+ rubysl-net-smtp (~> 2.0)
75
+ rubysl-net-telnet (~> 2.0)
76
+ rubysl-nkf (~> 2.0)
77
+ rubysl-observer (~> 2.0)
78
+ rubysl-open-uri (~> 2.0)
79
+ rubysl-open3 (~> 2.0)
80
+ rubysl-openssl (~> 2.0)
81
+ rubysl-optparse (~> 2.0)
82
+ rubysl-ostruct (~> 2.0)
83
+ rubysl-pathname (~> 2.0)
84
+ rubysl-prettyprint (~> 2.0)
85
+ rubysl-prime (~> 2.0)
86
+ rubysl-profile (~> 2.0)
87
+ rubysl-profiler (~> 2.0)
88
+ rubysl-pstore (~> 2.0)
89
+ rubysl-pty (~> 2.0)
90
+ rubysl-rational (~> 2.0)
91
+ rubysl-resolv (~> 2.0)
92
+ rubysl-rexml (~> 2.0)
93
+ rubysl-rinda (~> 2.0)
94
+ rubysl-rss (~> 2.0)
95
+ rubysl-scanf (~> 2.0)
96
+ rubysl-securerandom (~> 2.0)
97
+ rubysl-set (~> 2.0)
98
+ rubysl-shellwords (~> 2.0)
99
+ rubysl-singleton (~> 2.0)
100
+ rubysl-socket (~> 2.0)
101
+ rubysl-stringio (~> 2.0)
102
+ rubysl-strscan (~> 2.0)
103
+ rubysl-sync (~> 2.0)
104
+ rubysl-syslog (~> 2.0)
105
+ rubysl-tempfile (~> 2.0)
106
+ rubysl-thread (~> 2.0)
107
+ rubysl-thwait (~> 2.0)
108
+ rubysl-time (~> 2.0)
109
+ rubysl-timeout (~> 2.0)
110
+ rubysl-tmpdir (~> 2.0)
111
+ rubysl-tsort (~> 2.0)
112
+ rubysl-un (~> 2.0)
113
+ rubysl-uri (~> 2.0)
114
+ rubysl-weakref (~> 2.0)
115
+ rubysl-webrick (~> 2.0)
116
+ rubysl-xmlrpc (~> 2.0)
117
+ rubysl-yaml (~> 2.0)
118
+ rubysl-zlib (~> 2.0)
119
+ rubysl-abbrev (2.0.4)
120
+ rubysl-base64 (2.0.0)
121
+ rubysl-benchmark (2.0.1)
122
+ rubysl-bigdecimal (2.0.2)
123
+ rubysl-cgi (2.0.1)
124
+ rubysl-cgi-session (2.0.1)
125
+ rubysl-cmath (2.0.0)
126
+ rubysl-complex (2.0.0)
127
+ rubysl-continuation (2.0.0)
128
+ rubysl-coverage (2.0.3)
129
+ rubysl-csv (2.0.2)
130
+ rubysl-english (~> 2.0)
131
+ rubysl-curses (2.0.1)
132
+ rubysl-date (2.0.8)
133
+ rubysl-delegate (2.0.1)
134
+ rubysl-digest (2.0.3)
135
+ rubysl-drb (2.0.1)
136
+ rubysl-e2mmap (2.0.0)
137
+ rubysl-english (2.0.0)
138
+ rubysl-enumerator (2.0.0)
139
+ rubysl-erb (2.0.1)
140
+ rubysl-etc (2.0.3)
141
+ ffi2-generators (~> 0.1)
142
+ rubysl-expect (2.0.0)
143
+ rubysl-fcntl (2.0.4)
144
+ ffi2-generators (~> 0.1)
145
+ rubysl-fiber (2.0.0)
146
+ rubysl-fileutils (2.0.3)
147
+ rubysl-find (2.0.1)
148
+ rubysl-forwardable (2.0.1)
149
+ rubysl-getoptlong (2.0.0)
150
+ rubysl-gserver (2.0.0)
151
+ rubysl-socket (~> 2.0)
152
+ rubysl-thread (~> 2.0)
153
+ rubysl-io-console (2.0.0)
154
+ rubysl-io-nonblock (2.0.0)
155
+ rubysl-io-wait (2.0.0)
156
+ rubysl-ipaddr (2.0.0)
157
+ rubysl-irb (2.1.0)
158
+ rb-readline (~> 0.5)
159
+ rubysl-e2mmap (~> 2.0)
160
+ rubysl-mathn (~> 2.0)
161
+ rubysl-thread (~> 2.0)
162
+ rubysl-logger (2.1.0)
163
+ rubysl-mathn (2.0.0)
164
+ rubysl-matrix (2.1.0)
165
+ rubysl-e2mmap (~> 2.0)
166
+ rubysl-mkmf (2.0.1)
167
+ rubysl-fileutils (~> 2.0)
168
+ rubysl-shellwords (~> 2.0)
169
+ rubysl-monitor (2.0.0)
170
+ rubysl-mutex_m (2.0.0)
171
+ rubysl-net-ftp (2.0.1)
172
+ rubysl-net-http (2.0.4)
173
+ rubysl-cgi (~> 2.0)
174
+ rubysl-erb (~> 2.0)
175
+ rubysl-singleton (~> 2.0)
176
+ rubysl-net-imap (2.0.1)
177
+ rubysl-net-pop (2.0.1)
178
+ rubysl-net-protocol (2.0.1)
179
+ rubysl-net-smtp (2.0.1)
180
+ rubysl-net-telnet (2.0.0)
181
+ rubysl-nkf (2.0.1)
182
+ rubysl-observer (2.0.0)
183
+ rubysl-open-uri (2.0.0)
184
+ rubysl-open3 (2.0.0)
185
+ rubysl-openssl (2.2.1)
186
+ rubysl-optparse (2.0.1)
187
+ rubysl-shellwords (~> 2.0)
188
+ rubysl-ostruct (2.0.4)
189
+ rubysl-pathname (2.1.0)
190
+ rubysl-prettyprint (2.0.3)
191
+ rubysl-prime (2.0.1)
192
+ rubysl-profile (2.0.0)
193
+ rubysl-profiler (2.0.1)
194
+ rubysl-pstore (2.0.0)
195
+ rubysl-pty (2.0.2)
196
+ rubysl-rational (2.0.1)
197
+ rubysl-resolv (2.1.0)
198
+ rubysl-rexml (2.0.4)
199
+ rubysl-rinda (2.0.1)
200
+ rubysl-rss (2.0.0)
201
+ rubysl-scanf (2.0.0)
202
+ rubysl-securerandom (2.0.0)
203
+ rubysl-set (2.0.1)
204
+ rubysl-shellwords (2.0.0)
205
+ rubysl-singleton (2.0.0)
206
+ rubysl-socket (2.0.1)
207
+ rubysl-stringio (2.0.0)
208
+ rubysl-strscan (2.0.0)
209
+ rubysl-sync (2.0.0)
210
+ rubysl-syslog (2.1.0)
211
+ ffi2-generators (~> 0.1)
212
+ rubysl-tempfile (2.0.1)
213
+ rubysl-thread (2.0.2)
214
+ rubysl-thwait (2.0.0)
215
+ rubysl-time (2.0.3)
216
+ rubysl-timeout (2.0.0)
217
+ rubysl-tmpdir (2.0.1)
218
+ rubysl-tsort (2.0.1)
219
+ rubysl-un (2.0.0)
220
+ rubysl-fileutils (~> 2.0)
221
+ rubysl-optparse (~> 2.0)
222
+ rubysl-uri (2.0.0)
223
+ rubysl-weakref (2.0.0)
224
+ rubysl-webrick (2.0.0)
225
+ rubysl-xmlrpc (2.0.0)
226
+ rubysl-yaml (2.0.4)
227
+ rubysl-zlib (2.0.1)
228
+
229
+ PLATFORMS
230
+ ruby
231
+
232
+ DEPENDENCIES
233
+ minitest
234
+ racc
235
+ rake (~> 10.1.0)
236
+ rubysl (~> 2.0)
237
+ viddl-rb!
@@ -39,10 +39,10 @@ class ParameterParser
39
39
  end
40
40
 
41
41
  opts.on("-e", "--extract-audio", "Save video audio to file") do
42
- if ViddlRb::UtilityHelper.os_has?("ffmpeg")
42
+ if ['ffmpeg', 'avconf'].any?{ |name| ViddlRb::UtilityHelper.os_has?(name) }
43
43
  options[:extract_audio] = true
44
44
  else
45
- raise OptionParser::ParseError.new("to extract audio you need to have ffmpeg on your PATH")
45
+ raise OptionParser::ParseError.new("to extract audio you need to have ffmpeg/avconf on your PATH")
46
46
  end
47
47
  end
48
48
 
@@ -94,10 +94,16 @@ class ParameterParser
94
94
  end
95
95
  end
96
96
 
97
- optparse.parse!(args) # removes all options from args
98
- print_help_and_exit(optparse) if args.empty? # exit if no video url
99
- url = args.first # the url is the only element left
100
- validate_url!(url) # raise exception if invalid url
97
+ # removes all options from args
98
+ optparse.parse!(args)
99
+ # exit if no video url
100
+ print_help_and_exit(optparse) if args.empty?
101
+ # the url is the only element left
102
+ url = args.first
103
+ # Seems like some users like to pass non protocol prefixed URIs
104
+ url = "http://#{url}" unless url.start_with?('http')
105
+ # raise exception if invalid url
106
+ validate_url!(url)
101
107
  options[:url] = url
102
108
  options
103
109
  end
@@ -6,9 +6,11 @@ module ViddlRb
6
6
 
7
7
  def self.extract(file_name, save_dir)
8
8
  # capture stderr because ffmpeg expects an output param and will error out
9
+
10
+ ffmpeg_app_name = ['ffmpeg', 'avconv'].find {|name| ViddlRb::UtilityHelper.os_has?(name)}
9
11
  puts "Gathering information about the downloaded file."
10
- escaped_input_file_path = UtilityHelper.make_shellsafe_path(File.join(save_dir, file_name))
11
- file_info = Open3.popen3("ffmpeg -i #{escaped_input_file_path}") {|stdin, stdout, stderr, wait_thr| stderr.read }
12
+ escaped_input_file_path = UtilityHelper.make_shellsafe_path(File.join(save_dir, file_name))
13
+ file_info = Open3.popen3("#{ffmpeg_app_name} -i #{escaped_input_file_path}") {|stdin, stdout, stderr, wait_thr| stderr.read }
12
14
  puts "Done gathering information about the downloaded file."
13
15
 
14
16
  if !file_info.to_s.empty?
@@ -40,7 +42,7 @@ module ViddlRb
40
42
  puts "Audio file seems to exist already, removing it before extraction."
41
43
  File.delete(output_file_path)
42
44
  end
43
- Open3.popen3("ffmpeg -i #{escaped_input_file_path} -vn -acodec copy #{escaped_output_file_path}") { |stdin, stdout, stderr, wait_thr| stdout.read }
45
+ Open3.popen3("#{ffmpeg_app_name} -i #{escaped_input_file_path} -vn -acodec copy #{escaped_output_file_path}") { |stdin, stdout, stderr, wait_thr| stdout.read }
44
46
  puts "Done extracting audio to #{output_file_path}"
45
47
  else
46
48
  raise "ERROR: Error while checking audio track of #{file_path}"
data/lib/viddl-rb.rb CHANGED
@@ -6,7 +6,7 @@ require "net/http"
6
6
  require "nokogiri"
7
7
  require "multi_json"
8
8
  require "cgi"
9
- require "open-uri"
9
+ require "rest-client"
10
10
  require "stringio"
11
11
  require "download-helper.rb"
12
12
  require "plugin-helper.rb"
@@ -11,7 +11,7 @@ class ArtePlusSeven < PluginBase
11
11
  id = self.to_id(url)
12
12
  country = self.extract_country(url)
13
13
  json_url = "http://arte.tv/papi/tvguide/videos/stream/player/#{country}/#{id}_PLUS7-#{country.upcase}/ALL/ALL.json"
14
- doc = MultiJson.load(open(json_url))['videoJsonPlayer']
14
+ doc = MultiJson.load(RestClient.get(json_url))['videoJsonPlayer']
15
15
  # This can be improved a lot,
16
16
  # check the results on http://floriancrouzat.net/arte/
17
17
  first_http_key = doc['VSR'].keys.find{|k| k.start_with?('HTTP')}
data/plugins/bandcamp.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'open-uri'
1
+ require 'rest-client'
2
2
  require 'json'
3
3
 
4
4
  class Bandcamp < PluginBase
@@ -13,7 +13,7 @@ class Bandcamp < PluginBase
13
13
  def self.get_urls_and_filenames(url, options = {})
14
14
  # locate the js object with all the tracks data
15
15
  url_and_files = []
16
- doc = Nokogiri::HTML(open(get_http_url(url)))
16
+ doc = Nokogiri::HTML(RestClient.get(get_http_url(url)))
17
17
  js = doc.at("script:contains('var TralbumData')").text
18
18
  match = /trackinfo\s?:\s?([\s\S]*?\}\])/.match(js)[1]
19
19
 
data/plugins/blip.rb CHANGED
@@ -8,7 +8,7 @@ class Blip < PluginBase
8
8
  def self.get_urls_and_filenames(url, options = {})
9
9
  id = self.to_id(url)
10
10
  xml_url = "http://blip.tv/rss/#{id}"
11
- doc = Nokogiri::XML(open(xml_url))
11
+ doc = Nokogiri::XML(RestClient.get(xml_url))
12
12
  user = doc.at("//channel/item/blip:user").inner_text
13
13
  title = PluginBase.make_filename_safe(doc.at("//channel/item/title").inner_text)
14
14
  download_url = doc.at("//channel/item/media:group/media:content").attributes["url"].value
data/plugins/instagram.rb CHANGED
@@ -6,11 +6,20 @@ class Instagram < PluginBase
6
6
  end
7
7
 
8
8
  def self.get_urls_and_filenames(url, options = {})
9
- video_page = open(url).read
9
+ video_page = RestClient.get(url)
10
10
 
11
- download_url = video_page.scan(/video_url":"(http.*.mp4)/).flatten.first.gsub('\/', '/')
11
+ download_url = video_page[/meta property="og:video" content="(.*\.mp4)/, 1]
12
+ # Fallback
13
+ download_url ||= video_page[/"video_url":"(http[^"]+.mp4)"/, 1]
12
14
 
13
- [{:url => download_url, :name => "#{Time.now.to_i}.mp4"}]
15
+ extracted_caption = video_page[/"caption":"([^"]+)"/, 1]
16
+ if extracted_caption
17
+ caption = PluginBase.make_filename_safe(extracted_caption)
18
+ else
19
+ caption = Time.now.to_i
20
+ end
21
+
22
+ [{:url => download_url, :name => "#{caption}.mp4"}]
14
23
  end
15
24
  end
16
25
 
data/plugins/metacafe.rb CHANGED
@@ -14,7 +14,7 @@ class Metacafe < PluginBase
14
14
  def self.get_urls_and_filenames(url, options = {})
15
15
  video_id = get_video_id(url)
16
16
  info_url = API_BASE + "item/#{video_id}" #use the API to get the full video url
17
- info_doc = Nokogiri::XML(open(info_url))
17
+ info_doc = Nokogiri::XML(RestClient.get(info_url))
18
18
 
19
19
  video_swf_url = get_video_swf_url(info_doc, video_id)
20
20
 
@@ -13,8 +13,9 @@ class Soundcloud < PluginBase
13
13
  def self.get_urls_and_filenames(url, options = {})
14
14
  url_and_files = []
15
15
 
16
- doc = Nokogiri::HTML(open(get_http_url(url)))
17
- js = doc.at("script:contains('_scPreload')").text
16
+ client = RestClient::Resource.new(get_http_url(url), :verify_ssl => OpenSSL::SSL::VERIFY_NONE)
17
+ doc = Nokogiri::HTML(client.get)
18
+ js = doc.at("script:contains('_scPreload')").text
18
19
 
19
20
  track_data = JSON.parse js[/_scPreload\s*?=\s*?([\s\S]*?)$/,1].to_s
20
21
 
data/plugins/veoh.rb CHANGED
@@ -10,7 +10,7 @@ class Veoh < PluginBase
10
10
  def self.get_urls_and_filenames(url, options = {})
11
11
  veoh_id = url[/\/watch\/([\w\d]+)/, 1]
12
12
  info_url = "#{VEOH_API_BASE}findByPermalink?permalink=#{veoh_id}"
13
- info_doc = Nokogiri::XML(open(info_url))
13
+ info_doc = Nokogiri::XML(RestClient.get(info_url))
14
14
 
15
15
  download_url = get_download_url(info_doc)
16
16
  file_name = get_file_name(info_doc, download_url)
data/plugins/vimeo.rb CHANGED
@@ -10,7 +10,7 @@ class Vimeo < PluginBase
10
10
  vimeo_id = url[/\d{7,}/]
11
11
 
12
12
  video_url = "http://player.vimeo.com/video/#{vimeo_id}"
13
- video_page = open(video_url).read
13
+ video_page = RestClient.get(video_url)
14
14
 
15
15
  info_json = find_player_info(video_page)
16
16
  unless info_json
@@ -1,4 +1,4 @@
1
- require 'open-uri'
1
+ require 'rest-client'
2
2
 
3
3
  class CipherGuesser
4
4
  class CipherGuessError < StandardError; end
@@ -15,7 +15,7 @@ class CipherGuesser
15
15
  private
16
16
 
17
17
  def download_player_javascript(cipher_version)
18
- open(JS_URL % cipher_version).read
18
+ RestClient.get(JS_URL % cipher_version)
19
19
  end
20
20
 
21
21
  def extract_decipher_function_body(js)
@@ -1,5 +1,4 @@
1
-
2
- require 'open-uri'
1
+ require 'rest-client'
3
2
  require 'net/http'
4
3
  require 'openssl'
5
4
  require 'yaml'
@@ -58,7 +57,7 @@ class CipherIO
58
57
  end
59
58
 
60
59
  def download_server_ciphers
61
- YAML.load(open(CIPHER_YAML_URL).read)
60
+ YAML.load(RestClient.get(CIPHER_YAML_URL))
62
61
  end
63
62
 
64
63
  def save_local_ciphers(ciphers)
@@ -98,3 +98,4 @@ en_US-vflgd5txb: w26 s1 w15 w3 w62 w54 w22
98
98
  en_US-vflTm330y: w26 s1 w15 w3 w62 w54 w22
99
99
  en_US-vflnwMARr: s3 r w24 s2
100
100
  en_US-vflaTh7jt: w46 r s3 w19 r s2 w15
101
+ ETag: eadad856d36008c8070219115c337a1be535acf5
@@ -42,14 +42,14 @@ class UrlResolver
42
42
  def get_video_urls(feed_url)
43
43
  Youtube.notify "Retrieving videos..."
44
44
  urls_titles = {}
45
- result_feed = Nokogiri::XML(open(feed_url))
45
+ result_feed = Nokogiri::XML(RestClient.get(feed_url))
46
46
  urls_titles.merge!(grab_urls_and_titles(result_feed))
47
47
 
48
48
  #as long as the feed has a next link we follow it and add the resulting video urls
49
49
  loop do
50
50
  next_link = result_feed.search("//feed/link[@rel='next']").first
51
51
  break if next_link.nil?
52
- result_feed = Nokogiri::HTML(open(next_link["href"]))
52
+ result_feed = Nokogiri::HTML(RestClient.get(next_link["href"]))
53
53
  urls_titles.merge!(grab_urls_and_titles(result_feed))
54
54
  end
55
55
 
@@ -1,4 +1,3 @@
1
-
2
1
  class VideoResolver
3
2
 
4
3
  class VideoRemovedError < StandardError; end
@@ -23,7 +22,7 @@ class VideoResolver
23
22
  private
24
23
 
25
24
  def load_json(url)
26
- html = open(url).read
25
+ html = RestClient.get(url)
27
26
  json_data = html[/ytplayer\.config\s*=\s*(\{.+?\});/m, 1]
28
27
  MultiJson.load(json_data)
29
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viddl-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Seeger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
11
+ date: 2014-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.10.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: rest-client
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 10.1.0
62
- type: :development
61
+ version: '0'
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 10.1.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rest-client
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.6.7
75
+ version: 10.1.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.6.7
82
+ version: 10.1.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -103,6 +103,7 @@ extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
105
  - Gemfile
106
+ - Gemfile.lock
106
107
  - README.md
107
108
  - Rakefile
108
109
  - bin/helper/downloader.rb
@@ -152,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  version: 1.3.4
153
154
  requirements: []
154
155
  rubyforge_project: viddl-rb
155
- rubygems_version: 2.2.2
156
+ rubygems_version: 2.4.4
156
157
  signing_key:
157
158
  specification_version: 4
158
159
  summary: An extendable commandline video downloader for flash video sites.