cherrypicker 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README +25 -0
- data/Rakefile +2 -0
- data/cherrypicker.gemspec +21 -0
- data/lib/cherrypicker/download.rb +25 -0
- data/lib/cherrypicker/hash.rb +21 -0
- data/lib/cherrypicker/hotfile.rb +62 -0
- data/lib/cherrypicker/rapidshare.rb +60 -0
- data/lib/cherrypicker/version.rb +3 -0
- data/lib/cherrypicker.rb +4 -0
- metadata +67 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
= Cherrypicker
|
2
|
+
|
3
|
+
== Description
|
4
|
+
|
5
|
+
Cherrypicker is Ruby Gem it lets you download from; Rapidshare and Hotfile
|
6
|
+
|
7
|
+
== Installation
|
8
|
+
|
9
|
+
gem install cherrypicker
|
10
|
+
|
11
|
+
== Usage
|
12
|
+
|
13
|
+
require 'cherrypicker'
|
14
|
+
|
15
|
+
== Examples
|
16
|
+
|
17
|
+
test = Rapidshare.new("http://rapidshare.com/files/329036215/myfile.rar", "username", "password")
|
18
|
+
test.download
|
19
|
+
|
20
|
+
test2 = Hotfile.new("http://hotfile.com/dl/81103855/ee51a52/myfile.rar", "username", "password")
|
21
|
+
test2.download
|
22
|
+
|
23
|
+
== Limitations
|
24
|
+
|
25
|
+
This is only useful if you're using premium accounts, this will not work without a valid username and password when downloading a file
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "cherrypicker/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "cherrypicker"
|
7
|
+
s.version = Cherrypicker::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Karl Entwistle"]
|
10
|
+
s.email = ["Karl@Entwistle.com"]
|
11
|
+
s.homepage = "http://karl.entwistle.info/"
|
12
|
+
s.summary = %q{Cherrypicker is Ruby Gem it lets you download from; Rapidshare and Hotfile}
|
13
|
+
# s.description = %q{Cherrypicker is a upload/download for sites such as Rapidshare, Hotfile, Fileserv & Filesonic}
|
14
|
+
|
15
|
+
s.rubyforge_project = "cherrypicker"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Class that can download files from cyberlockers
|
2
|
+
#
|
3
|
+
# Download.new(hostname, url, username, password)
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class Download
|
7
|
+
attr_accessor :hostname, :url, :filename
|
8
|
+
|
9
|
+
def initialize(hostname, url, filename)
|
10
|
+
@hostname = hostname
|
11
|
+
@url = url
|
12
|
+
@filename = filename
|
13
|
+
|
14
|
+
download
|
15
|
+
end
|
16
|
+
|
17
|
+
def download
|
18
|
+
Net::HTTP.start("#{self.hostname}") { |http|
|
19
|
+
resp = http.get("#{self.url}")
|
20
|
+
open("#{self.filename}", "wb") { |file|
|
21
|
+
file.write(resp.body)
|
22
|
+
}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Class that can create URL from hash
|
2
|
+
#
|
3
|
+
# print Hash.new(Hash["a", "b"]).url
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
class Hash
|
7
|
+
attr_accessor :hash, :url
|
8
|
+
|
9
|
+
def initialize(hash)
|
10
|
+
@hash = hash
|
11
|
+
@url = hash_to_url
|
12
|
+
end
|
13
|
+
|
14
|
+
def hash_to_url
|
15
|
+
hash = self.hash
|
16
|
+
hash.keys.inject('') do |query_string, key|
|
17
|
+
query_string << '&' unless key == hash.keys.first
|
18
|
+
query_string << "#{URI.encode(key.to_s)}=#{URI.encode(hash[key])}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Class that can sort Hotfile link into sections as specified by Hotfile API
|
2
|
+
#
|
3
|
+
# hotfile = Hotfile.new("http://hotfile.com/dl/110589431/6ad2666/ROT007-WEB-2011.rar.html", "username", "password")
|
4
|
+
# puts hotfile.link
|
5
|
+
# puts hotfile.hostname
|
6
|
+
require 'open-uri'
|
7
|
+
|
8
|
+
class Hotfile
|
9
|
+
attr_accessor :link, :hostname, :filename, :username, :password, :remote_url
|
10
|
+
|
11
|
+
def initialize(link, username, password)
|
12
|
+
@link = link
|
13
|
+
@username = username
|
14
|
+
@password = password
|
15
|
+
@hostname = hostname
|
16
|
+
@filename = filename
|
17
|
+
end
|
18
|
+
|
19
|
+
def download
|
20
|
+
Download.new(self.hostname, remote_url, self.filename)
|
21
|
+
end
|
22
|
+
|
23
|
+
def filename
|
24
|
+
self.link[/dl\/\d*\/[0-9a-f]*\/(.*)/, 1]
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_url
|
28
|
+
Hash.new({
|
29
|
+
link: self.link,
|
30
|
+
username: self.username.to_s,
|
31
|
+
password: self.password.to_s
|
32
|
+
}).url
|
33
|
+
end
|
34
|
+
|
35
|
+
def hostname
|
36
|
+
query = "http://api.hotfile.com/?action=getdirectdownloadlink&" + create_url
|
37
|
+
begin
|
38
|
+
open(query) do |f|
|
39
|
+
f.each do |line|
|
40
|
+
return "#{line[/http:\/\/(.*).hotfile.com/, 1]}" + ".hotfile.com"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
rescue SocketError
|
44
|
+
$stderr.print "IO failed: " + $!
|
45
|
+
raise
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def remote_url
|
50
|
+
query = "http://api.hotfile.com/?action=getdirectdownloadlink&" + create_url
|
51
|
+
begin
|
52
|
+
open(query) do |f|
|
53
|
+
f.each do |line|
|
54
|
+
return "#{line[/http:\/\/.*.hotfile.com(.*)/, 1]}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
rescue SocketError
|
58
|
+
$stderr.print "IO failed: " + $!
|
59
|
+
raise
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Class that can sort Rapidshare link into sections as specified by RapidShare API
|
2
|
+
#
|
3
|
+
# rapid = Rapidshare.new("http://rapidshare.com/files/329036215/The.Matrix.bandaa25.part06.rar", "username", "password")
|
4
|
+
# puts rapid.link
|
5
|
+
# puts rapid.fileid
|
6
|
+
# puts rapid.filename
|
7
|
+
# puts rapid.host
|
8
|
+
require 'open-uri'
|
9
|
+
|
10
|
+
class Rapidshare
|
11
|
+
attr_accessor :link, :fileid, :filename, :hostname, :username, :password
|
12
|
+
|
13
|
+
def initialize(link, username, password)
|
14
|
+
@link = link
|
15
|
+
@fileid = fileid
|
16
|
+
@filename = filename
|
17
|
+
@hostname = hostname
|
18
|
+
@username = username
|
19
|
+
@password = password
|
20
|
+
end
|
21
|
+
|
22
|
+
def download
|
23
|
+
Download.new(self.hostname, remote_url, self.filename)
|
24
|
+
end
|
25
|
+
|
26
|
+
def fileid
|
27
|
+
self.link[/files\/(\d*)\//, 1]
|
28
|
+
end
|
29
|
+
|
30
|
+
def filename
|
31
|
+
self.link[/files\/\d*\/(.*)/, 1]
|
32
|
+
end
|
33
|
+
|
34
|
+
def remote_url
|
35
|
+
"/cgi-bin/rsapi.cgi?sub=download&" + create_url
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_url
|
39
|
+
Hash.new({
|
40
|
+
fileid: self.fileid,
|
41
|
+
filename: self.filename,
|
42
|
+
login: self.username.to_s,
|
43
|
+
password: self.password.to_s
|
44
|
+
}).url
|
45
|
+
end
|
46
|
+
|
47
|
+
def hostname
|
48
|
+
query = "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=download&" + create_url
|
49
|
+
begin
|
50
|
+
open(query) do |f|
|
51
|
+
f.each do |line|
|
52
|
+
return "#{line[/DL:(.*).rapidshare.com/, 1]}" + ".rapidshare.com"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
rescue SocketError
|
56
|
+
$stderr.print "IO failed: " + $!
|
57
|
+
raise
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/cherrypicker.rb
ADDED
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cherrypicker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Karl Entwistle
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-03-17 00:00:00 +00:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description:
|
18
|
+
email:
|
19
|
+
- Karl@Entwistle.com
|
20
|
+
executables: []
|
21
|
+
|
22
|
+
extensions: []
|
23
|
+
|
24
|
+
extra_rdoc_files: []
|
25
|
+
|
26
|
+
files:
|
27
|
+
- .gitignore
|
28
|
+
- Gemfile
|
29
|
+
- README
|
30
|
+
- Rakefile
|
31
|
+
- cherrypicker.gemspec
|
32
|
+
- lib/cherrypicker.rb
|
33
|
+
- lib/cherrypicker/download.rb
|
34
|
+
- lib/cherrypicker/hash.rb
|
35
|
+
- lib/cherrypicker/hotfile.rb
|
36
|
+
- lib/cherrypicker/rapidshare.rb
|
37
|
+
- lib/cherrypicker/version.rb
|
38
|
+
has_rdoc: true
|
39
|
+
homepage: http://karl.entwistle.info/
|
40
|
+
licenses: []
|
41
|
+
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options: []
|
44
|
+
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: "0"
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
requirements: []
|
60
|
+
|
61
|
+
rubyforge_project: cherrypicker
|
62
|
+
rubygems_version: 1.6.1
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: Cherrypicker is Ruby Gem it lets you download from; Rapidshare and Hotfile
|
66
|
+
test_files: []
|
67
|
+
|