cherrypicker 0.3.9 → 0.3.10
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 +1 -1
- data/bin/cherrypick +36 -13
- data/lib/cherrypicker.rb +1 -0
- data/lib/cherrypicker/download.rb +1 -1
- data/lib/cherrypicker/plugins/rghost.rb +39 -0
- data/lib/cherrypicker/plugins/youtube.rb +9 -2
- data/lib/cherrypicker/version.rb +1 -1
- data/test/unit/rghost_test.rb +33 -0
- data/uml.png +0 -0
- metadata +6 -2
data/README.md
CHANGED
@@ -2,7 +2,7 @@ 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, Hotfile,
|
5
|
+
is a Ruby Gem that lets you download from; Rapidshare, Hotfile, rghost, Youtube, Vimeo & Megavideo
|
6
6
|
You can also utilise the LinkChecker to see if your files are alive on Rapidshare and Hotfile
|
7
7
|
|
8
8
|
Enjoy!
|
data/bin/cherrypick
CHANGED
@@ -5,7 +5,7 @@ require 'getoptlong'
|
|
5
5
|
require 'pathname'
|
6
6
|
|
7
7
|
def usage()
|
8
|
-
puts "Cherrypicker lets you download from; Rapidshare, Hotfile, Youtube, Vimeo & Megavideo"
|
8
|
+
puts "Cherrypicker lets you download from; Rapidshare, Hotfile, rhost, Youtube, Vimeo & Megavideo"
|
9
9
|
puts "Usage: cherrypick link [--directory|-d] [--username|-u] [--password|-p]"
|
10
10
|
puts
|
11
11
|
puts "example: cherrypick http://www.youtube.com/watch?v=I5DCwN28y8o -d \"~/Movies\""
|
@@ -17,24 +17,47 @@ if not ARGV[0]
|
|
17
17
|
exit
|
18
18
|
end
|
19
19
|
|
20
|
-
#refactored by Hamac credit http://is.gd/sbxAwG
|
21
|
-
options = {username: nil, password: nil, directory: nil}
|
22
|
-
|
23
20
|
parser = GetoptLong.new
|
24
|
-
parser.set_options(
|
21
|
+
parser.set_options(
|
22
|
+
["-d", "--directory", GetoptLong::REQUIRED_ARGUMENT],
|
23
|
+
["-u", "--username", GetoptLong::REQUIRED_ARGUMENT],
|
24
|
+
["-p", "--password", GetoptLong::REQUIRED_ARGUMENT]
|
25
25
|
)
|
26
26
|
|
27
|
-
|
27
|
+
username = ""
|
28
|
+
password = ""
|
29
|
+
directory = ""
|
30
|
+
|
31
|
+
loop do
|
32
|
+
opt, arg = parser.get
|
33
|
+
break if not opt
|
34
|
+
|
35
|
+
case opt
|
36
|
+
when "-u"
|
37
|
+
username = arg
|
38
|
+
when "-p"
|
39
|
+
password = arg
|
40
|
+
when "-d"
|
41
|
+
directory = arg
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
unless directory == "" || nil?
|
46
|
+
p path = Pathname.new(directory)
|
28
47
|
|
29
|
-
if
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
48
|
+
if not path.directory?
|
49
|
+
puts "Directory not found " + path.to_s
|
50
|
+
usage
|
51
|
+
exit
|
52
|
+
end
|
34
53
|
end
|
35
54
|
|
55
|
+
username = nil unless username != ""
|
56
|
+
password = nil unless password != ""
|
57
|
+
directory = nil unless directory != ""
|
58
|
+
|
36
59
|
if ARGV[0].include?("rapidshare.com/files/") or ARGV[0].include?("hotfile.com/dl/")
|
37
|
-
unless
|
60
|
+
unless username and password != nil?
|
38
61
|
puts "Host required username / password"
|
39
62
|
puts
|
40
63
|
usage
|
@@ -42,4 +65,4 @@ if ARGV[0].include?("rapidshare.com/files/") or ARGV[0].include?("hotfile.com/dl
|
|
42
65
|
end
|
43
66
|
end
|
44
67
|
|
45
|
-
Cherrypicker::Cherrypick.new(ARGV[0], :location =>
|
68
|
+
Cherrypicker::Cherrypick.new(ARGV[0], :location => directory, :username => username, :password => password)
|
data/lib/cherrypicker.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Class that can download from rghost
|
2
|
+
# Rghost.new("http://rghost.net/5420316", :location => "/Volumes/Storage/Desktop/cherrytest/").download
|
3
|
+
require 'open-uri'
|
4
|
+
|
5
|
+
module Cherrypicker
|
6
|
+
class Rghost
|
7
|
+
attr_accessor :link, :filename, :location, :download_url
|
8
|
+
|
9
|
+
def initialize(link, opts={})
|
10
|
+
|
11
|
+
o = {
|
12
|
+
:location => nil,
|
13
|
+
}.merge(opts)
|
14
|
+
|
15
|
+
@link = link
|
16
|
+
@filename = ""
|
17
|
+
@location = o[:location]
|
18
|
+
@download_url = ""
|
19
|
+
|
20
|
+
#the rghost ID consists of decimal numbers in the URL
|
21
|
+
rghost_id = @link[/\d+/]
|
22
|
+
response = Cherrypicker::remote_query("http://rghost.net/#{rghost_id}")
|
23
|
+
|
24
|
+
@filename = response.body[/<title>(.*\.[a-zA-Z]*).*RGhost/, 1]
|
25
|
+
download_url = URI.encode(response.body[/<a href="(.*)" class=\"(file_link|download_link)\"/, 1])
|
26
|
+
|
27
|
+
reply = Cherrypicker::remote_query("#{download_url}")
|
28
|
+
if reply.response['location']
|
29
|
+
@download_url = reply.response['location']
|
30
|
+
else
|
31
|
+
@download_url = download_url
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def download
|
36
|
+
Download.new(@download_url, :location => @location)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -57,8 +57,15 @@ module Cherrypicker
|
|
57
57
|
format_ext["17"] = ["3gp", "3gp"]
|
58
58
|
format_ext["5"] = ["flv", "old default?"]
|
59
59
|
|
60
|
-
|
61
|
-
@filename = video_info_hash["title"].delete("\"'").gsub(/[^0-9A-Za-z]/, '_') + "." + format_ext[formats.first].first
|
60
|
+
download_url = video_info_hash["fmt_url_map"][formats.first]
|
61
|
+
@filename = video_info_hash["title"].delete("\"'").gsub(/[^0-9A-Za-z]/, '_') + "." + format_ext[formats.first].first
|
62
|
+
|
63
|
+
reply = Cherrypicker::remote_query("#{download_url}")
|
64
|
+
if reply.response['location']
|
65
|
+
@download_url = reply.response['location']
|
66
|
+
else
|
67
|
+
@download_url = download_url
|
68
|
+
end
|
62
69
|
end
|
63
70
|
|
64
71
|
def download
|
data/lib/cherrypicker/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
module Cherrypicker
|
4
|
+
class RghostTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context "Information request" do
|
7
|
+
|
8
|
+
should "Standard download test" do
|
9
|
+
response = Rghost.new("http://rghost.net/5420316")
|
10
|
+
assert response.link =~ /\d*/
|
11
|
+
assert response.filename.length > 0
|
12
|
+
assert response.filename == "cherrypicker2.png"
|
13
|
+
assert UrlAvailable?(response.download_url)
|
14
|
+
end
|
15
|
+
|
16
|
+
should "Standard download test" do
|
17
|
+
response = Rghost.new("http://rghost.net/5420928")
|
18
|
+
assert response.link =~ /\d*/
|
19
|
+
assert response.filename.length > 0
|
20
|
+
assert response.filename == "aimqpad.rar"
|
21
|
+
assert UrlAvailable?(response.download_url)
|
22
|
+
end
|
23
|
+
|
24
|
+
should "Standard download test" do
|
25
|
+
response = Rghost.new("http://rghost.net/5421019")
|
26
|
+
assert response.link =~ /\d*/
|
27
|
+
assert response.filename.length > 0
|
28
|
+
assert response.filename == "saw.ogg"
|
29
|
+
assert UrlAvailable?(response.download_url)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/uml.png
ADDED
Binary file
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: cherrypicker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.10
|
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-
|
13
|
+
date: 2011-05-01 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/cherrypicker/plugins/hotfile.rb
|
49
49
|
- lib/cherrypicker/plugins/megavideo.rb
|
50
50
|
- lib/cherrypicker/plugins/rapidshare.rb
|
51
|
+
- lib/cherrypicker/plugins/rghost.rb
|
51
52
|
- lib/cherrypicker/plugins/vimeo.rb
|
52
53
|
- lib/cherrypicker/plugins/youtube.rb
|
53
54
|
- lib/cherrypicker/version.rb
|
@@ -55,8 +56,10 @@ files:
|
|
55
56
|
- test/unit/hotfile_test.rb
|
56
57
|
- test/unit/megavideo_test.rb
|
57
58
|
- test/unit/rapidshare_test.rb
|
59
|
+
- test/unit/rghost_test.rb
|
58
60
|
- test/unit/vimeo_test.rb
|
59
61
|
- test/unit/youtube_test.rb
|
62
|
+
- uml.png
|
60
63
|
has_rdoc: true
|
61
64
|
homepage: http://karl.entwistle.info/
|
62
65
|
licenses: []
|
@@ -90,5 +93,6 @@ test_files:
|
|
90
93
|
- test/unit/hotfile_test.rb
|
91
94
|
- test/unit/megavideo_test.rb
|
92
95
|
- test/unit/rapidshare_test.rb
|
96
|
+
- test/unit/rghost_test.rb
|
93
97
|
- test/unit/vimeo_test.rb
|
94
98
|
- test/unit/youtube_test.rb
|