cherrypicker 0.2.6 → 0.2.7
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.
- data/README.md +4 -2
- data/lib/cherrypicker/download.rb +20 -8
- data/lib/cherrypicker/{hotfile.rb → plugins/hotfile.rb} +2 -2
- data/lib/cherrypicker/{rapidshare.rb → plugins/rapidshare.rb} +2 -2
- data/lib/cherrypicker/plugins/vimeo.rb +45 -0
- data/lib/cherrypicker/version.rb +1 -1
- data/lib/cherrypicker.rb +4 -3
- metadata +5 -4
data/README.md
CHANGED
@@ -2,9 +2,9 @@ Cherrypicker
|
|
2
2
|
=========
|
3
3
|
|
4
4
|
Cherrypicker was part of my final year project for university it
|
5
|
-
is a Ruby Gem that lets you download from; Rapidshare
|
5
|
+
is a Ruby Gem that lets you download from; Rapidshare, Hotfile and Vimeo
|
6
6
|
You can also utilise the LinkChecker to see if your files are
|
7
|
-
alive on Rapidshare
|
7
|
+
alive on Rapidshare and Hotfile
|
8
8
|
|
9
9
|
Enjoy!
|
10
10
|
|
@@ -34,6 +34,8 @@ Examples
|
|
34
34
|
test3 = Rapidshare.new("http://rapidshare.com/files/329036215/myfile.rar", "username", "password", "size", "/location/tosave/file/")
|
35
35
|
test3.download
|
36
36
|
|
37
|
+
Vimeo.new("http://www.vimeo.com/2119458", "/Volumes/Storage/Desktop/cherrytest/").download
|
38
|
+
|
37
39
|
Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/")
|
38
40
|
Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/", "10485760")
|
39
41
|
|
@@ -27,14 +27,26 @@ class Download
|
|
27
27
|
http.use_ssl = true if uri.scheme == "https"
|
28
28
|
request = Net::HTTP::Get.new(uri.request_uri)
|
29
29
|
request.initialize_http_header({"User-Agent" => random_agent})
|
30
|
-
@size = http.request_head(URI.escape(uri.path))['content-length']
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
@size = http.request_head(URI.escape(uri.path))['content-length'] if @size.nil?
|
31
|
+
#no content-length no progress bar
|
32
|
+
if @size.nil? || uri.host == "av.vimeo.com" #catch vimeo
|
33
|
+
http.request(request) do |response|
|
34
|
+
File.open(@location + (@filename ||= File.basename(uri.path)), "wb") do |file|
|
35
|
+
response.read_body do |segment|
|
36
|
+
@progress += segment.length
|
37
|
+
file.write(segment)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
else
|
42
|
+
http.request(request) do |response|
|
43
|
+
bar = ProgressBar.new((@filename ||= File.basename(uri.path)), @size.to_i)
|
44
|
+
File.open(@location + (@filename ||= File.basename(uri.path)), "wb") do |file|
|
45
|
+
response.read_body do |segment|
|
46
|
+
@progress += segment.length
|
47
|
+
bar.set(@progress)
|
48
|
+
file.write(segment)
|
49
|
+
end
|
38
50
|
end
|
39
51
|
end
|
40
52
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
|
3
1
|
# Class that can sort Hotfile link into sections as specified by Hotfile API
|
4
2
|
#
|
5
3
|
# hotfile = Hotfile.new("http://hotfile.com/dl/110589431/6ad2666/ROT007-WEB-2011.rar.html", "username", "password")
|
6
4
|
# puts hotfile.link
|
7
5
|
# puts hotfile.hostname
|
8
6
|
# hotfile.download
|
7
|
+
require 'open-uri'
|
8
|
+
|
9
9
|
class Hotfile
|
10
10
|
attr_accessor :link, :hostname, :filename, :username, :password, :size, :location
|
11
11
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
|
3
1
|
# Class that can sort Rapidshare link into sections as specified by RapidShare API
|
4
2
|
#
|
5
3
|
# rapid = Rapidshare.new("http://rapidshare.com/files/329036215/The.Matrix.bandaa25.part06.rar", "username", "password")
|
@@ -8,6 +6,8 @@ require 'open-uri'
|
|
8
6
|
# puts rapid.filename
|
9
7
|
# puts rapid.host
|
10
8
|
# rapid.download
|
9
|
+
require 'open-uri'
|
10
|
+
|
11
11
|
class Rapidshare
|
12
12
|
attr_accessor :link, :fileid, :filename, :hostname, :username, :password, :size, :location
|
13
13
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Class that can download from Vimeo
|
2
|
+
# Vimeo.new("http://www.vimeo.com/2119458", "/Volumes/Storage/Desktop/cherrytest/").download
|
3
|
+
|
4
|
+
#<!-- _
|
5
|
+
# __ _|_|_ __ ___ ___ ___
|
6
|
+
# \ \ / / | '_ ' _ \ / _ \/ _ \
|
7
|
+
# \ V /| | | | | | | __/ |_| |
|
8
|
+
# \_/ |_|_| |_| |_|\___|\___/
|
9
|
+
# you know, for videos
|
10
|
+
#-->
|
11
|
+
|
12
|
+
class Vimeo
|
13
|
+
attr_accessor :link, :filename, :location, :download_url
|
14
|
+
|
15
|
+
def initialize(link, location = "")
|
16
|
+
@link = link
|
17
|
+
@filename = ""
|
18
|
+
@location = location
|
19
|
+
@download_url = ""
|
20
|
+
|
21
|
+
hostname = "http://www.vimeo.com/moogaloop/play/clip"
|
22
|
+
|
23
|
+
#the vimeo ID consists of decimal numbers in the URL
|
24
|
+
vimeo_id = @link[/\d+/]
|
25
|
+
response = remote_query("http://www.vimeo.com/moogaloop/load/clip:#{vimeo_id}")
|
26
|
+
title = response.body[/<caption>(.*)<\/caption>/, 1]
|
27
|
+
request_signature = response.body[/<request_signature>(.*)<\/request_signature>/, 1]
|
28
|
+
request_signature_expires = response.body[/<request_signature_expires>(\d+)<\/request_signature_expires>/, 1]
|
29
|
+
hd = response.body[/<isHD>(.*)<\/isHD>/, 1]
|
30
|
+
|
31
|
+
if hd.to_i == 0
|
32
|
+
download_url = ":#{vimeo_id}/#{request_signature}/#{request_signature_expires}"
|
33
|
+
else
|
34
|
+
download_url = ":#{vimeo_id}/#{request_signature}/#{request_signature_expires}/?q=hd"
|
35
|
+
end
|
36
|
+
|
37
|
+
@filename = title.delete("\"'").gsub(/[^0-9A-Za-z]/, '_') + ".flv"
|
38
|
+
reply = remote_query("#{hostname}#{download_url}")
|
39
|
+
@download_url = reply.response['location']
|
40
|
+
end
|
41
|
+
|
42
|
+
def download
|
43
|
+
Download.new(@download_url, @location)
|
44
|
+
end
|
45
|
+
end
|
data/lib/cherrypicker/version.rb
CHANGED
data/lib/cherrypicker.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'cherrypicker/rapidshare'
|
2
|
-
require 'cherrypicker/hotfile'
|
3
1
|
require 'cherrypicker/download'
|
4
2
|
require 'cherrypicker/linkchecker'
|
5
|
-
require 'cherrypicker/functions'
|
3
|
+
require 'cherrypicker/functions'
|
4
|
+
require "cherrypicker/plugins/vimeo"
|
5
|
+
require "cherrypicker/plugins/rapidshare"
|
6
|
+
require "cherrypicker/plugins/hotfile"
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: cherrypicker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Karl Entwistle
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-20 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -42,9 +42,10 @@ files:
|
|
42
42
|
- lib/cherrypicker.rb
|
43
43
|
- lib/cherrypicker/download.rb
|
44
44
|
- lib/cherrypicker/functions.rb
|
45
|
-
- lib/cherrypicker/hotfile.rb
|
46
45
|
- lib/cherrypicker/linkchecker.rb
|
47
|
-
- lib/cherrypicker/
|
46
|
+
- lib/cherrypicker/plugins/hotfile.rb
|
47
|
+
- lib/cherrypicker/plugins/rapidshare.rb
|
48
|
+
- lib/cherrypicker/plugins/vimeo.rb
|
48
49
|
- lib/cherrypicker/version.rb
|
49
50
|
- test/test_helper.rb
|
50
51
|
- test/unit/hostfile_test.rb
|