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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 763df07003efcec47e65ac5451134be3337b4a67
4
- data.tar.gz: 6177207f17ecfedaa34419b90f5f1e339dda937f
3
+ metadata.gz: 025b9f5f8c137bf257d8c267dc1586c43a2e9851
4
+ data.tar.gz: de457800bc506b8950548f7d7fca1b3b753840ac
5
5
  SHA512:
6
- metadata.gz: ffe7d01d105939fb1db3a3b652c4878a5543d6970f680583a8fb17568365ea34b502d1831535d86e62d0230ec9733b251ecc321fa55eec8309a2b47fdd049961
7
- data.tar.gz: 24bdd00f877774cd8b4f90d0879ab3148dabee61545e87e8fa08d1e237be53063c1057cd4184eb860e60eff51e487e2ec49f128e427c8657968c123a8c0a48f4
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
@@ -8,6 +8,7 @@ require 'podcast'
8
8
 
9
9
  class GetWebRadio < Thor
10
10
  class_option :mp3, type: :boolean, default:true, desc:'convert to mp3 with ffmpeg'
11
+ class_option :path, type: :string, desc:'store path (accept "dropbox://~")'
11
12
 
12
13
  config = nil
13
14
  [
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
- if !File.exist?(src) && !File.exist?(dst)
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
- if File.exist? dst
65
- puts "skipped."
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
- result = Open3.capture3("ffmpeg -i #{src} -ab 64k #{dst}")
68
- if result[2].to_i == 0
69
- File.delete(src) if delete_src
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
- else
121
+ rescue => e
72
122
  puts "failed."
73
- $stderr.puts MediaConvertError.new(result[1])
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 = "http://www.youtube.com#{list[serial]}"
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.1.1"
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.1.1
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