cherrypicker 0.2.2 → 0.2.4
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 -1
- data/lib/cherrypicker/download.rb +13 -12
- data/lib/cherrypicker/hotfile.rb +9 -6
- data/lib/cherrypicker/rapidshare.rb +11 -12
- data/lib/cherrypicker/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -31,9 +31,12 @@ Examples
|
|
31
31
|
"http://rapidshare.com/files/329036215/myfile.rar",
|
32
32
|
"http://rapidshare.com/files/329036764/deadfile.rar"]).status
|
33
33
|
|
34
|
-
test3 = Rapidshare.new("http://rapidshare.com/files/329036215/myfile.rar", "username", "password", "size", "location")
|
34
|
+
test3 = Rapidshare.new("http://rapidshare.com/files/329036215/myfile.rar", "username", "password", "size", "/location/tosave/file/")
|
35
35
|
test3.download
|
36
36
|
|
37
|
+
Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/")
|
38
|
+
Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/", "10485760")
|
39
|
+
|
37
40
|
Contributing
|
38
41
|
------------
|
39
42
|
|
@@ -1,18 +1,18 @@
|
|
1
|
-
# Class that can download files from cyberlockers
|
1
|
+
# Class that can download files from cyberlockers or generic URLs
|
2
2
|
#
|
3
|
-
# Download.new(
|
3
|
+
# Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/")
|
4
|
+
# Download.new("http://download.thinkbroadband.com/10MB.zip", "/location/tosave/file/", "10485760")
|
5
|
+
|
4
6
|
require 'net/http'
|
5
7
|
require 'net/https'
|
6
8
|
require 'progressbar'
|
7
9
|
require 'open-uri'
|
8
10
|
|
9
11
|
class Download
|
10
|
-
attr_accessor :
|
12
|
+
attr_accessor :link, :size, :location, :progress
|
11
13
|
|
12
|
-
def initialize(
|
13
|
-
@
|
14
|
-
@url = url
|
15
|
-
@filename = filename
|
14
|
+
def initialize(link, location = nil, size = nil)
|
15
|
+
@link = link
|
16
16
|
@size = size
|
17
17
|
@location = location
|
18
18
|
@progress = 0
|
@@ -21,17 +21,18 @@ class Download
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def download_file
|
24
|
-
uri = URI.parse(
|
24
|
+
uri = URI.parse(@link.to_s)
|
25
25
|
http = Net::HTTP.new(uri.host, uri.port)
|
26
26
|
http.use_ssl = true if uri.scheme == "https"
|
27
27
|
request = Net::HTTP::Get.new(uri.request_uri)
|
28
28
|
request.initialize_http_header({"User-Agent" => random_agent})
|
29
|
+
@size = http.request_head(URI.escape(uri.path))['content-length'].to_i if @size.nil?
|
29
30
|
http.request(request) do |response|
|
30
|
-
bar = ProgressBar.new(
|
31
|
-
File.open(
|
31
|
+
bar = ProgressBar.new(File.basename(uri.path), @size.to_i)
|
32
|
+
File.open(@location + File.basename(uri.path), "wb") do |file|
|
32
33
|
response.read_body do |segment|
|
33
|
-
|
34
|
-
bar.set(
|
34
|
+
@progress += segment.length
|
35
|
+
bar.set(@progress)
|
35
36
|
file.write(segment)
|
36
37
|
end
|
37
38
|
end
|
data/lib/cherrypicker/hotfile.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
1
3
|
# Class that can sort Hotfile link into sections as specified by Hotfile API
|
2
4
|
#
|
3
5
|
# hotfile = Hotfile.new("http://hotfile.com/dl/110589431/6ad2666/ROT007-WEB-2011.rar.html", "username", "password")
|
@@ -8,6 +10,7 @@ class Hotfile
|
|
8
10
|
attr_accessor :link, :hostname, :filename, :username, :password, :size, :location
|
9
11
|
|
10
12
|
def initialize(link, username, password, size = nil, location = "")
|
13
|
+
uri = URI.parse(link)
|
11
14
|
if link =~ /hotfile.com\/dl\/\d*\/[0-9a-f]*\/.*.*\.html/
|
12
15
|
@link = link[/(.*)\.html/, 1]
|
13
16
|
else
|
@@ -16,24 +19,24 @@ class Hotfile
|
|
16
19
|
@username = username
|
17
20
|
@password = password
|
18
21
|
@hostname = hostname
|
19
|
-
@filename =
|
22
|
+
@filename = File.basename(uri.path)
|
20
23
|
@size = size
|
21
24
|
@location = location
|
22
25
|
end
|
23
26
|
|
24
27
|
def download
|
25
|
-
Download.new(
|
28
|
+
Download.new(@hostname + remote_url, @location, @size)
|
26
29
|
end
|
27
30
|
|
28
31
|
def filename
|
29
|
-
|
32
|
+
@link[/dl\/\d*\/[0-9a-f]*\/(.*)/, 1]
|
30
33
|
end
|
31
34
|
|
32
35
|
def create_url
|
33
36
|
hash_to_url({
|
34
|
-
:link =>
|
35
|
-
:username =>
|
36
|
-
:password =>
|
37
|
+
:link => @link,
|
38
|
+
:username => @username.to_s,
|
39
|
+
:password => @password.to_s
|
37
40
|
})
|
38
41
|
end
|
39
42
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
1
3
|
# Class that can sort Rapidshare link into sections as specified by RapidShare API
|
2
4
|
#
|
3
5
|
# rapid = Rapidshare.new("http://rapidshare.com/files/329036215/The.Matrix.bandaa25.part06.rar", "username", "password")
|
@@ -10,9 +12,10 @@ class Rapidshare
|
|
10
12
|
attr_accessor :link, :fileid, :filename, :hostname, :username, :password, :size, :location
|
11
13
|
|
12
14
|
def initialize(link, username, password, size = nil, location = "")
|
15
|
+
uri = URI.parse(link)
|
13
16
|
@link = link
|
14
17
|
@fileid = fileid
|
15
|
-
@filename =
|
18
|
+
@filename = File.basename(uri.path)
|
16
19
|
@hostname = hostname
|
17
20
|
@username = username
|
18
21
|
@password = password
|
@@ -21,27 +24,23 @@ class Rapidshare
|
|
21
24
|
end
|
22
25
|
|
23
26
|
def download
|
24
|
-
Download.new(
|
27
|
+
Download.new(@hostname + remote_url, @location, @size,)
|
25
28
|
end
|
26
29
|
|
27
30
|
def fileid
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
def filename
|
32
|
-
self.link[/files\/\d*\/(.*)/, 1]
|
31
|
+
@link[/files\/(\d*)\//, 1]
|
33
32
|
end
|
34
|
-
|
33
|
+
|
35
34
|
def remote_url
|
36
35
|
"/cgi-bin/rsapi.cgi?sub=download&" + create_url
|
37
36
|
end
|
38
37
|
|
39
38
|
def create_url
|
40
39
|
hash_to_url({
|
41
|
-
:fileid =>
|
42
|
-
:filename =>
|
43
|
-
:login =>
|
44
|
-
:password =>
|
40
|
+
:fileid => @fileid,
|
41
|
+
:filename => @filename,
|
42
|
+
:login => @username.to_s,
|
43
|
+
:password => @password.to_s
|
45
44
|
})
|
46
45
|
end
|
47
46
|
|
data/lib/cherrypicker/version.rb
CHANGED