cherrypicker 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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