rget 2.1.1 → 2.2.0
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.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/bin/rget +1 -0
- data/lib/dropbox.rb +36 -0
- data/lib/webradio.rb +66 -11
- data/lib/youtube.rb +1 -1
- data/rget.gemspec +2 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 025b9f5f8c137bf257d8c267dc1586c43a2e9851
|
4
|
+
data.tar.gz: de457800bc506b8950548f7d7fca1b3b753840ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ac3a4abdbba0cb87003feff1c584aecf87e13aa6eb1b018beb88d29631d634b13db49733febcaa882f06bf9cc74387ca3401a4b5e5fa9fc31c3bbfed2e5b49e
|
7
|
+
data.tar.gz: 31619930129f831a5ab63ec2ec4c8b0ae8b137cc19515e66b9316f79a138a7acd3c1f87f479c729cbceaa6f9f703c391c7aef9f789526317b6a1ddbfb7bce5b9
|
data/README.md
CHANGED
@@ -14,4 +14,7 @@ For customize radio programs, copy `rget.yaml` to `~/.rget` or current work dire
|
|
14
14
|
|
15
15
|
rget imas_cg # download and convert to mp3 THE iDOLM@STER Cinderella Girls Radio
|
16
16
|
rget imastudio --no-mp3 # download imastudio only (saved .m4a file)
|
17
|
-
|
17
|
+
rget trysail --path=/home/hoge/radio
|
18
|
+
# srore mp3 file to specified directory
|
19
|
+
rget suzakinishi --path=dropbpx://radio
|
20
|
+
# store mp3 file to radio folder of Dropbox
|
data/bin/rget
CHANGED
data/lib/dropbox.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require "dropbox-api"
|
2
|
+
require "dropbox-api/tasks"
|
3
|
+
require 'pit'
|
4
|
+
|
5
|
+
module DropboxAuth
|
6
|
+
def self.client
|
7
|
+
token = Pit::get('rget-dropbox')
|
8
|
+
unless token[:api_key]
|
9
|
+
print "Enter dropbox app key: "
|
10
|
+
token[:api_key] = $stdin.gets.chomp
|
11
|
+
print "Enter dropbox app secret: "
|
12
|
+
token[:api_secret] = $stdin.gets.chomp
|
13
|
+
Pit::set('rget-dropbox', data: token)
|
14
|
+
end
|
15
|
+
Dropbox::API::Config.app_key = token[:api_key]
|
16
|
+
Dropbox::API::Config.app_secret = token[:api_secret]
|
17
|
+
Dropbox::API::Config.mode = 'dropbox'
|
18
|
+
|
19
|
+
unless token[:access_token]
|
20
|
+
consumer = Dropbox::API::OAuth.consumer(:authorize)
|
21
|
+
request_token = consumer.get_request_token
|
22
|
+
puts "\nGo to this url and click 'Authorize' to get the token:"
|
23
|
+
puts request_token.authorize_url
|
24
|
+
query = request_token.authorize_url.split('?').last
|
25
|
+
verifier, = CGI.parse(query)['oauth_token']
|
26
|
+
print "\nOnce you authorize the app on Dropbox, press enter... "
|
27
|
+
$stdin.gets
|
28
|
+
access_token = request_token.get_access_token(oauth_verifier: verifier)
|
29
|
+
token[:access_token] = access_token.token
|
30
|
+
token[:access_secret] = access_token.secret
|
31
|
+
Pit::set('rget-dropbox', data: token)
|
32
|
+
end
|
33
|
+
|
34
|
+
Dropbox::API::Client.new(token: token[:access_token], secret: token[:access_secret])
|
35
|
+
end
|
36
|
+
end
|
data/lib/webradio.rb
CHANGED
@@ -35,6 +35,10 @@ class WebRadio
|
|
35
35
|
raise 'do not instanciate directly, use WebRadio method.' if self.class == WebRadio
|
36
36
|
@url = url
|
37
37
|
@options = options
|
38
|
+
if @options.path =~ %r|^dropbox://|
|
39
|
+
require 'dropbox'
|
40
|
+
@dropbox = DropboxAuth.client
|
41
|
+
end
|
38
42
|
end
|
39
43
|
|
40
44
|
def download(name)
|
@@ -43,37 +47,88 @@ class WebRadio
|
|
43
47
|
|
44
48
|
private
|
45
49
|
def mp3ize(src, dst, delete_src = true)
|
50
|
+
if @options.mp3
|
51
|
+
if exist?(dst)
|
52
|
+
puts "#{dst} is existent, skipped."
|
53
|
+
return
|
54
|
+
end
|
55
|
+
else
|
56
|
+
if exist?(src)
|
57
|
+
puts "#{src} is existent, skipped."
|
58
|
+
return
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
|
46
63
|
# download src file
|
47
|
-
|
64
|
+
unless File.exist?(src)
|
48
65
|
print "getting #{src}..."
|
49
66
|
begin
|
50
67
|
yield
|
51
68
|
puts "done."
|
52
69
|
rescue DownloadError => e
|
53
|
-
puts "failed."
|
54
70
|
File.delete(src) if File.exist?(src)
|
71
|
+
puts "failed."
|
55
72
|
$stderr.puts e.message
|
56
73
|
return
|
57
74
|
end
|
58
75
|
end
|
76
|
+
if !@options.mp3 || src == dst
|
77
|
+
move(src) if @options.path
|
78
|
+
return
|
79
|
+
end
|
59
80
|
|
60
81
|
# convert to mp3
|
61
|
-
return self unless @options.mp3
|
62
|
-
|
63
82
|
print "converting to mp3..."
|
64
|
-
|
65
|
-
|
83
|
+
result = Open3.capture3("ffmpeg -i #{src} -ab 64k #{dst}")
|
84
|
+
if result[2].to_i == 0
|
85
|
+
File.delete(src) if delete_src
|
86
|
+
puts "done."
|
66
87
|
else
|
67
|
-
|
68
|
-
|
69
|
-
|
88
|
+
File.delete(dst) if File.exist?(dst)
|
89
|
+
puts "failed."
|
90
|
+
$stderr.puts result[1]
|
91
|
+
return
|
92
|
+
end
|
93
|
+
move(dst) if @options.path
|
94
|
+
end
|
95
|
+
|
96
|
+
def exist?(dst)
|
97
|
+
if @dropbox
|
98
|
+
begin
|
99
|
+
!@dropbox.ls(dropbox_file(dst))[0]['is_deleted']
|
100
|
+
rescue Dropbox::API::Error::NotFound, NoMethodError
|
101
|
+
false
|
102
|
+
end
|
103
|
+
elsif @options.path
|
104
|
+
File.exist?(File.join(@options.path, dst))
|
105
|
+
else
|
106
|
+
File.exist?(dst)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def move(dst)
|
111
|
+
if @options.path
|
112
|
+
print "move to #{@options.path}..."
|
113
|
+
begin
|
114
|
+
if @dropbox
|
115
|
+
@dropbox.chunked_upload(dropbox_file(dst), open(dst))
|
116
|
+
File.delete(dst)
|
117
|
+
elsif @options.path
|
118
|
+
FileUtils.mv(dst, @options.path)
|
119
|
+
end
|
70
120
|
puts "done."
|
71
|
-
|
121
|
+
rescue => e
|
72
122
|
puts "failed."
|
73
|
-
$stderr.puts
|
123
|
+
$stderr.puts e.message
|
74
124
|
end
|
75
125
|
end
|
76
126
|
end
|
127
|
+
|
128
|
+
def dropbox_file(file)
|
129
|
+
path = @options.path.sub(%r|^dropbox://|, '')
|
130
|
+
File.join(path, file)
|
131
|
+
end
|
77
132
|
end
|
78
133
|
|
79
134
|
def WebRadio(url, options)
|
data/lib/youtube.rb
CHANGED
@@ -16,7 +16,7 @@ class YouTube < WebRadio
|
|
16
16
|
@src = "#{name}##{'%02d' % serial}.mp4"
|
17
17
|
@dst = "#{name}##{'%02d' % serial}.mp3"
|
18
18
|
mp3ize(@src, @dst) do
|
19
|
-
player_url = "
|
19
|
+
player_url = "https://www.youtube.com#{list[serial]}".sub(/&.*/, '')
|
20
20
|
result = Open3.capture3("viddl-rb -u -q '*:*:mp4' '#{player_url}'")
|
21
21
|
video_url = result[0].split.last.chomp
|
22
22
|
open(@src, 'wb:ASCII-8BIT') do |o|
|
data/rget.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "rget"
|
7
|
-
spec.version = "2.
|
7
|
+
spec.version = "2.2.0"
|
8
8
|
spec.authors = ["TADA Tadashi"]
|
9
9
|
spec.email = ["t@tdtds.jp"]
|
10
10
|
spec.description = %q{Downloading newest radio programs on the web. Supported radio stations are hibiki, animate, onsen, seaside communications, niconico and youtube.}
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_runtime_dependency "niconico", ">= 1.7.0"
|
23
23
|
spec.add_runtime_dependency "viddl-rb"
|
24
24
|
spec.add_runtime_dependency "pit"
|
25
|
+
spec.add_runtime_dependency "dropbox-api"
|
25
26
|
|
26
27
|
spec.add_development_dependency "bundler", "~> 1.3"
|
27
28
|
spec.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rget
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TADA Tadashi
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: dropbox-api
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,6 +152,7 @@ files:
|
|
138
152
|
- Rakefile
|
139
153
|
- bin/rget
|
140
154
|
- lib/animate.rb
|
155
|
+
- lib/dropbox.rb
|
141
156
|
- lib/hibiki.rb
|
142
157
|
- lib/nicovideo.rb
|
143
158
|
- lib/onsen.rb
|