groove-dl 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e17d5b6175966c9fec3dce394ce8f9141972c7a
4
- data.tar.gz: 932683ebd3c840eb78d383f420f388300ed77008
3
+ metadata.gz: cf2c65506f5ca02c45012c1800aba067cab99c0d
4
+ data.tar.gz: 1235dd8d45c8820147742e2121655f674f76ce3b
5
5
  SHA512:
6
- metadata.gz: 378b74a24deda1ef38d7993ed23d719a0f95d858df48a9d20693bcdca01e6656b3ca35819140d39d84c33bfa68e57448baadf1a8a574fa4cdbfd413f6b95da60
7
- data.tar.gz: 679684a9d0f94125a7c32c3e0c45ce298f188988fc5f782f0c3f6488a3ccde9050bbee6a62dec3264076be6aae5e282db98d574079a9e29e1aa5d7281efdab33
6
+ metadata.gz: b65c4781a2b339e5753d15bb8f066188c3b944d824173532d4337852602c36d6487c08109652ff24737755ab6fbed0114a72f94ec29811f2f7d043bde58a3a2b
7
+ data.tar.gz: ea2ee4a79b2ae9d04443f4ae7b90b135dcf19ff72facbe8f958049029a519b42151db56961998be9d5daf3d03182c25bba7eafacd894111ba8a85ffa80629bae
data/MANIFEST CHANGED
@@ -7,7 +7,6 @@ MANIFEST
7
7
  README.md
8
8
  Rakefile
9
9
  bin/groove-dl
10
- bin/groove-dl-cli
11
10
  glade/groove-dl.glade
12
11
  groove-dl.gemspec
13
12
  lib/groove-dl.rb
data/README.md CHANGED
@@ -37,7 +37,7 @@ Run `groove-dl` and a gtk app will be displayed, you can:
37
37
  In CLI mode:
38
38
 
39
39
  ```bash
40
- $ groove-dl-cli --help
40
+ $ groove-dl --help
41
41
  Usage: groove-dl [COMMAND] [OPTIONS]
42
42
 
43
43
  Options:
@@ -57,7 +57,7 @@ See `<command> --help` for more information on a specific command.
57
57
 
58
58
  Search for song:
59
59
  ```bash
60
- $ groove-dl-cli search --help
60
+ $ groove-dl search --help
61
61
  Usage: groove-dl search [OPTIONS]
62
62
 
63
63
  Options:
@@ -3,13 +3,24 @@
3
3
 
4
4
  require File.expand_path('../../lib/groove-dl', __FILE__)
5
5
 
6
- require 'gtk3'
7
- require 'shellwords'
8
- require 'groove-dl/app'
9
- require 'groove-dl/widgets/events'
10
- require 'groove-dl/widgets/search'
11
- require 'groove-dl/widgets/download'
12
-
13
- Gtk.init
14
- GrooveDl::App.new('glade/groove-dl.glade')
15
- Gtk.main
6
+ require 'ruby-progressbar'
7
+ require 'slop'
8
+ require 'terminal-table'
9
+
10
+ require 'groove-dl/cli'
11
+ require 'groove-dl/cli/search'
12
+ require 'groove-dl/displayer'
13
+
14
+ options = GrooveDl::CLI.options
15
+ if options.parse.empty?
16
+ require 'gtk3'
17
+ require 'shellwords'
18
+ require 'groove-dl/app'
19
+ require 'groove-dl/widgets/events'
20
+ require 'groove-dl/widgets/search'
21
+ require 'groove-dl/widgets/download'
22
+
23
+ Gtk.init
24
+ GrooveDl::App.new('glade/groove-dl.glade')
25
+ Gtk.main
26
+ end
@@ -11,19 +11,19 @@ Gem::Specification.new do |s|
11
11
  s.homepage = 'http://github.com/PierreRambaud/groove-dl'
12
12
  s.description = 'Grooveshark downloader allow you to search, choose ' \
13
13
  'playlists and songs and download them.'
14
- s.executables = ['groove-dl', 'groove-dl-cli']
14
+ s.executables = ['groove-dl']
15
15
 
16
16
  s.files = File.read(File.expand_path('../MANIFEST', __FILE__)).split("\n")
17
17
 
18
18
  s.required_ruby_version = '>= 1.9.3'
19
19
 
20
20
  s.add_dependency 'slop', '~>3.6'
21
- s.add_dependency 'grooveshark', '~>0.2.12'
22
- s.add_dependency 'ruby-progressbar', '~>1.7.0'
23
- s.add_dependency 'terminal-table', '~>1.4.5'
21
+ s.add_dependency 'grooveshark', '~> 0.2', '>= 0.2.12'
22
+ s.add_dependency 'ruby-progressbar', '~> 1.7', '>= 1.7.0'
23
+ s.add_dependency 'terminal-table', '~> 1.4', '>= 1.4.5'
24
24
  s.add_dependency 'gtk3', '~>2.2'
25
25
 
26
- s.add_development_dependency 'fakefs', '~>0.6.0'
26
+ s.add_development_dependency 'fakefs', '~> 0.6', '>= 0.6.0'
27
27
  s.add_development_dependency 'rake', '~>10.0'
28
28
  s.add_development_dependency 'rack-test', '~>0.6'
29
29
  s.add_development_dependency 'rspec', '~>3.0'
@@ -40,7 +40,12 @@ module GrooveDl
40
40
 
41
41
  client = Grooveshark::Client.new
42
42
  d = Downloader.new(client, opts)
43
- d.playlist(opts[:p]) if opts[:p]
43
+ if opts[:p]
44
+ GrooveDl.configuration.logger
45
+ .info("Download files into #{d.output_directory}")
46
+ d.playlist(opts[:p])
47
+ end
48
+
44
49
  d.song(opts[:s]) if opts[:s]
45
50
  end
46
51
  end
@@ -3,10 +3,8 @@ module GrooveDl
3
3
  # Downloader Class
4
4
  class Downloader
5
5
  attr_accessor :type
6
- attr_writer :client
7
- attr_writer :download_queue
8
- attr_writer :download_count
9
- attr_writer :download_skip
6
+ attr_writer :client, :download_queue, :download_count, :download_skip
7
+ attr_reader :output_directory, :queue, :count, :skip
10
8
 
11
9
  ##
12
10
  # Initialize download
@@ -83,7 +81,11 @@ module GrooveDl
83
81
  def download_queue
84
82
  return false if @queue.empty?
85
83
  @queue.each do |song|
86
- download(song, build_path(@output_directory, song))
84
+ begin
85
+ download(song, build_path(@output_directory, song))
86
+ rescue StandardError => e
87
+ GrooveDl.configuration.logger.error(e.message)
88
+ end
87
89
  end
88
90
 
89
91
  { skipped: @skip, downloaded: @count }
@@ -124,6 +126,10 @@ module GrooveDl
124
126
  pbar = ProgressBar.create(title: destination.split('/').last,
125
127
  format: '%a |%b>>%i| %p%% %t',
126
128
  total: response['content-length'].to_i)
129
+
130
+ dirname = File.dirname(destination)
131
+ FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
132
+
127
133
  File.open(destination, 'w') do |f|
128
134
  response.read_body do |chunk|
129
135
  f.write(chunk)
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # GrooveDl version
3
3
  module GrooveDl
4
- VERSION = '0.3.1'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -7,6 +7,8 @@ module GrooveDl
7
7
  attr_accessor :search_list, :songs, :downloader
8
8
  attr_accessor :failed, :success, :queue
9
9
 
10
+ attr_reader :queue_store, :failed_store, :success_store
11
+
10
12
  RIGHT_CLICK = 3
11
13
 
12
14
  SUCCESS_COLUMN_PATH,
@@ -69,6 +71,7 @@ module GrooveDl
69
71
  search_list_store.each do |_model, _path, iter|
70
72
  next unless iter[column_checkbox]
71
73
  selected[iter[column_id]] = @search_list.data[iter[column_id]]
74
+ iter[column_checkbox] = false
72
75
  end
73
76
 
74
77
  @queue_store = @app.get_object('download_queue_list_store')
@@ -1,7 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'spec_helper'
3
3
  require 'groove-dl/cli'
4
+ require 'groove-dl/configuration'
4
5
  require 'slop'
6
+ require 'logger'
5
7
 
6
8
  # Groove Dl tests
7
9
  module GrooveDl
@@ -32,9 +34,11 @@ module GrooveDl
32
34
  end
33
35
 
34
36
  it 'should download playlist' do
37
+ allow_any_instance_of(Logger).to receive(:info)
35
38
  allow(Grooveshark::Client).to receive(:new).and_return(true)
36
39
  downloader = double
37
40
  allow(downloader).to receive(:playlist).with(1).and_return(true)
41
+ allow(downloader).to receive(:output_directory).and_return('/tmp')
38
42
  allow(Downloader).to receive(:new).and_return(downloader)
39
43
  expect(CLI.options.parse %w( -p 1)).to eq(['-p', '1'])
40
44
  end
@@ -27,6 +27,14 @@ module GrooveDl
27
27
  expect(@downloader.download_queue).to be_falsy
28
28
  end
29
29
 
30
+ it 'should log error when download failed' do
31
+ @downloader.queue << 'something'
32
+ allow_any_instance_of(Logger).to receive(:error)
33
+ .with("undefined method `artist' for \"something\":String")
34
+ expect(@downloader.download_queue)
35
+ .to eq(skipped: 0, downloaded: 0)
36
+ end
37
+
30
38
  it 'should download playlist' do
31
39
  allow(@client).to receive(:request)
32
40
  .and_return('songs' => [{ 'song_id' => 1,
metadata CHANGED
@@ -1,167 +1,191 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groove-dl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Rambaud
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-10 00:00:00.000000000 Z
11
+ date: 2015-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: grooveshark
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ - - ">="
32
35
  - !ruby/object:Gem::Version
33
36
  version: 0.2.12
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - ~>
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.2'
44
+ - - ">="
39
45
  - !ruby/object:Gem::Version
40
46
  version: 0.2.12
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: ruby-progressbar
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ~>
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.7'
54
+ - - ">="
46
55
  - !ruby/object:Gem::Version
47
56
  version: 1.7.0
48
57
  type: :runtime
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
52
- - - ~>
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.7'
64
+ - - ">="
53
65
  - !ruby/object:Gem::Version
54
66
  version: 1.7.0
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: terminal-table
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
59
- - - ~>
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.4'
74
+ - - ">="
60
75
  - !ruby/object:Gem::Version
61
76
  version: 1.4.5
62
77
  type: :runtime
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - ~>
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.4'
84
+ - - ">="
67
85
  - !ruby/object:Gem::Version
68
86
  version: 1.4.5
69
87
  - !ruby/object:Gem::Dependency
70
88
  name: gtk3
71
89
  requirement: !ruby/object:Gem::Requirement
72
90
  requirements:
73
- - - ~>
91
+ - - "~>"
74
92
  - !ruby/object:Gem::Version
75
93
  version: '2.2'
76
94
  type: :runtime
77
95
  prerelease: false
78
96
  version_requirements: !ruby/object:Gem::Requirement
79
97
  requirements:
80
- - - ~>
98
+ - - "~>"
81
99
  - !ruby/object:Gem::Version
82
100
  version: '2.2'
83
101
  - !ruby/object:Gem::Dependency
84
102
  name: fakefs
85
103
  requirement: !ruby/object:Gem::Requirement
86
104
  requirements:
87
- - - ~>
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '0.6'
108
+ - - ">="
88
109
  - !ruby/object:Gem::Version
89
110
  version: 0.6.0
90
111
  type: :development
91
112
  prerelease: false
92
113
  version_requirements: !ruby/object:Gem::Requirement
93
114
  requirements:
94
- - - ~>
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.6'
118
+ - - ">="
95
119
  - !ruby/object:Gem::Version
96
120
  version: 0.6.0
97
121
  - !ruby/object:Gem::Dependency
98
122
  name: rake
99
123
  requirement: !ruby/object:Gem::Requirement
100
124
  requirements:
101
- - - ~>
125
+ - - "~>"
102
126
  - !ruby/object:Gem::Version
103
127
  version: '10.0'
104
128
  type: :development
105
129
  prerelease: false
106
130
  version_requirements: !ruby/object:Gem::Requirement
107
131
  requirements:
108
- - - ~>
132
+ - - "~>"
109
133
  - !ruby/object:Gem::Version
110
134
  version: '10.0'
111
135
  - !ruby/object:Gem::Dependency
112
136
  name: rack-test
113
137
  requirement: !ruby/object:Gem::Requirement
114
138
  requirements:
115
- - - ~>
139
+ - - "~>"
116
140
  - !ruby/object:Gem::Version
117
141
  version: '0.6'
118
142
  type: :development
119
143
  prerelease: false
120
144
  version_requirements: !ruby/object:Gem::Requirement
121
145
  requirements:
122
- - - ~>
146
+ - - "~>"
123
147
  - !ruby/object:Gem::Version
124
148
  version: '0.6'
125
149
  - !ruby/object:Gem::Dependency
126
150
  name: rspec
127
151
  requirement: !ruby/object:Gem::Requirement
128
152
  requirements:
129
- - - ~>
153
+ - - "~>"
130
154
  - !ruby/object:Gem::Version
131
155
  version: '3.0'
132
156
  type: :development
133
157
  prerelease: false
134
158
  version_requirements: !ruby/object:Gem::Requirement
135
159
  requirements:
136
- - - ~>
160
+ - - "~>"
137
161
  - !ruby/object:Gem::Version
138
162
  version: '3.0'
139
163
  - !ruby/object:Gem::Dependency
140
164
  name: simplecov
141
165
  requirement: !ruby/object:Gem::Requirement
142
166
  requirements:
143
- - - ~>
167
+ - - "~>"
144
168
  - !ruby/object:Gem::Version
145
169
  version: '0.9'
146
170
  type: :development
147
171
  prerelease: false
148
172
  version_requirements: !ruby/object:Gem::Requirement
149
173
  requirements:
150
- - - ~>
174
+ - - "~>"
151
175
  - !ruby/object:Gem::Version
152
176
  version: '0.9'
153
177
  - !ruby/object:Gem::Dependency
154
178
  name: rubocop
155
179
  requirement: !ruby/object:Gem::Requirement
156
180
  requirements:
157
- - - ~>
181
+ - - "~>"
158
182
  - !ruby/object:Gem::Version
159
183
  version: '0.25'
160
184
  type: :development
161
185
  prerelease: false
162
186
  version_requirements: !ruby/object:Gem::Requirement
163
187
  requirements:
164
- - - ~>
188
+ - - "~>"
165
189
  - !ruby/object:Gem::Version
166
190
  version: '0.25'
167
191
  description: Grooveshark downloader allow you to search, choose playlists and songs
@@ -169,20 +193,18 @@ description: Grooveshark downloader allow you to search, choose playlists and so
169
193
  email: pierre.rambaud86@gmail.com
170
194
  executables:
171
195
  - groove-dl
172
- - groove-dl-cli
173
196
  extensions: []
174
197
  extra_rdoc_files: []
175
198
  files:
176
- - .gitignore
177
- - .rubocop.yml
178
- - .travis.yml
199
+ - ".gitignore"
200
+ - ".rubocop.yml"
201
+ - ".travis.yml"
179
202
  - Gemfile
180
203
  - LICENSE
181
204
  - MANIFEST
182
205
  - README.md
183
206
  - Rakefile
184
207
  - bin/groove-dl
185
- - bin/groove-dl-cli
186
208
  - glade/groove-dl.glade
187
209
  - groove-dl.gemspec
188
210
  - lib/groove-dl.rb
@@ -214,17 +236,17 @@ require_paths:
214
236
  - lib
215
237
  required_ruby_version: !ruby/object:Gem::Requirement
216
238
  requirements:
217
- - - '>='
239
+ - - ">="
218
240
  - !ruby/object:Gem::Version
219
241
  version: 1.9.3
220
242
  required_rubygems_version: !ruby/object:Gem::Requirement
221
243
  requirements:
222
- - - '>='
244
+ - - ">="
223
245
  - !ruby/object:Gem::Version
224
246
  version: '0'
225
247
  requirements: []
226
248
  rubyforge_project:
227
- rubygems_version: 2.0.14
249
+ rubygems_version: 2.2.2
228
250
  signing_key:
229
251
  specification_version: 4
230
252
  summary: Grooveshark songs downloader.
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
- require File.expand_path('../../lib/groove-dl', __FILE__)
5
-
6
- require 'ruby-progressbar'
7
- require 'slop'
8
- require 'terminal-table'
9
-
10
- require 'groove-dl/cli'
11
- require 'groove-dl/cli/search'
12
- require 'groove-dl/displayer'
13
-
14
- options = GrooveDl::CLI.options
15
- puts options if options.parse.empty?