lastfm-m3u 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-pro
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ rvm:
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - ruby-head
8
+ - jruby-19mode
data/Gemfile CHANGED
@@ -1,4 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in lastfm-m3u.gemspec
4
3
  gemspec
4
+
5
+ gem 'rake'
6
+
7
+ group :test do
8
+ gem 'rspec', '~> 2.13.0'
9
+ gem 'simplecov', '~> 0.7.1'
10
+ gem 'coveralls', require: false
11
+ end
data/README.md CHANGED
@@ -1,3 +1,8 @@
1
+ [![Code Climate](https://codeclimate.com/github/jonaustin/lastfm-m3u.png)](https://codeclimate.com/github/jonaustin/lastfm-m3u)
2
+ [![Build Status](https://travis-ci.org/jonaustin/lastfm-m3u.png?branch=master)](https://travis-ci.org/jonaustin/lastfm-m3u)
3
+ [![Coverage Status](https://coveralls.io/repos/jonaustin/lastfm-m3u/badge.png)](https://coveralls.io/r/jonaustin/lastfm-m3u)
4
+ [![Dependency Status](https://gemnasium.com/jonaustin/lastfm-m3u.png)](https://gemnasium.com/jonaustin/lastfm-m3u)
5
+
1
6
  # Lastfm Top tracks Playlist creator
2
7
 
3
8
  Searches given directory for mp3/flac files that match lastfm top tracks for given artist.
data/bin/lastfm-m3u CHANGED
@@ -111,14 +111,13 @@ options.artists.each do |artist|
111
111
  lastfm = LastfmM3u::Lastfm.new(artist)
112
112
  lastfm.root_dir = options.directory if options.directory
113
113
  lastfm.limit = options.limit if options.limit
114
- tracks = lastfm.artist.top_tracks
115
114
 
116
115
  puts
117
116
  puts "Searching filesystem with method: ".color(:green) + options.type.to_s.capitalize.color(:yellow)
118
117
  puts
119
- num_tracks = (options.limit.nil? ? tracks.size : options.limit)
118
+ num_tracks = (options.limit.nil? ? lastfm.tracks.size : options.limit)
120
119
  progressbar = ProgressBar.create(starting_at: 0, total: num_tracks, format: "%a".color(:cyan) + "|".color(:magenta) + "%B".color(:green) + "|".color(:magenta) + "%p%%".color(:cyan))
121
- lastfm.find_tracks(tracks, options.type, progressbar).each do |track, track_set|
120
+ lastfm.find_tracks(options.type, progressbar).each do |track, track_set|
122
121
  if track_set.empty?
123
122
  not_found << track
124
123
  next
data/lastfm-m3u.gemspec CHANGED
@@ -15,20 +15,18 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = LastfmM3u::VERSION
17
17
 
18
- gem.add_development_dependency 'rspec', '~> 2.13.0'
19
- gem.add_development_dependency 'guard-rspec', '~> 2.5.1'
20
- gem.add_development_dependency 'guard-ctags-bundler', '~> 0.1.6'
21
- gem.add_development_dependency 'terminal-notifier-guard', '~> 1.5.3'
18
+ gem.add_development_dependency 'guard-rspec', '~> 2.5'
19
+ gem.add_development_dependency 'guard-ctags-bundler', '~> 0.1'
20
+ gem.add_development_dependency 'terminal-notifier-guard', '~> 1.5'
22
21
  gem.add_development_dependency 'rb-fsevent', '~> 0.9'
23
- gem.add_development_dependency 'debugger', '~> 1.5.0'
22
+ gem.add_development_dependency 'debugger', '~> 1.5'
24
23
  gem.add_development_dependency 'pry-debugger', '~> 0.2'
25
- gem.add_development_dependency 'simplecov', '~> 0.7.1'
26
24
 
27
- gem.add_dependency 'rockstar', '~> 0.7.1'
28
- gem.add_dependency 'ruby-mp3info', '~> 0.8.0'
29
- gem.add_dependency 'rainbow', '~> 1.1.4'
30
- gem.add_dependency 'ansi', '~> 1.4.3' # color logging
31
- gem.add_dependency 'm3uzi', '~> 0.5.1'
32
- gem.add_dependency 'highline', '~> 1.6.16'
33
- gem.add_dependency 'ruby-progressbar', '~> 1.0.2'
25
+ gem.add_dependency 'rockstar', '~> 0.7'
26
+ gem.add_dependency 'ruby-mp3info', '~> 0.8'
27
+ gem.add_dependency 'rainbow', '~> 1.1'
28
+ gem.add_dependency 'ansi', '~> 1.4' # color logging
29
+ gem.add_dependency 'm3uzi', '~> 0.5'
30
+ gem.add_dependency 'highline', '~> 1.6'
31
+ gem.add_dependency 'ruby-progressbar', '~> 1.1'
34
32
  end
@@ -5,26 +5,23 @@ module LastfmM3u
5
5
  attr_accessor :artist, :root_dir, :limit, :tracks
6
6
 
7
7
  def initialize(artist, root_dir='/home/jon/music/trance')
8
- FileUtils.mkdir_p "#{ENV['HOME']}/.config"
9
- config_path = "#{ENV['HOME']}/.config/lastfm-m3u.yml"
10
- unless File.exists? config_path
11
- puts "Copying empty config file to #{config_path}...".color(:green)
12
- FileUtils.cp File.join(File.dirname(__FILE__), '../../config/lastfm.yml.dist'), config_path
13
- end
14
- config_hash = YAML.load_file(config_path)
15
- Rockstar.lastfm = config_hash
16
- unless config_hash.values.any? {|v| v==''}
17
- @artist = Rockstar::Artist.new artist
18
- @root_dir = root_dir
19
- @limit = nil
20
- super()
21
- else
22
- puts "Please add your api_key and api_secret to:\n #{config_path}\nGet your keys at http://www.last.fm/api/account".color(:yellow)
23
- exit
24
- end
8
+ init_config
9
+ set_artist(artist)
10
+ set_top_tracks
11
+ @root_dir = root_dir
12
+ @limit = nil
13
+ super()
14
+ end
15
+
16
+ def set_artist(artist)
17
+ @artist = Rockstar::Artist.new artist
25
18
  end
26
19
 
27
- def find_tracks(tracks, search_type = :file, progressbar = nil)
20
+ def set_top_tracks
21
+ @tracks = @artist.top_tracks
22
+ end
23
+
24
+ def find_tracks(search_type = :file, progressbar = nil)
28
25
  begin
29
26
  raise InvalidSearchType unless SEARCH_TYPES.include?(search_type)
30
27
  rescue InvalidSearchType
@@ -42,6 +39,36 @@ module LastfmM3u
42
39
  found_tracks
43
40
  end
44
41
 
42
+
43
+ private
44
+
45
+ def init_config
46
+ FileUtils.mkdir_p config_dir
47
+ config_path = "#{config_dir}/lastfm-m3u.yml"
48
+ unless File.exists? config_path
49
+ puts "Copying empty config file to #{config_path}...".color(:green)
50
+ FileUtils.cp(dist_config, config_path)
51
+ end
52
+ config_hash = YAML.load_file(config_path)
53
+ if invalid_config?(config_hash)
54
+ puts "Please add your api_key and api_secret to:\n #{config_path}\nGet your keys at http://www.last.fm/api/account".color(:yellow)
55
+ exit false
56
+ else
57
+ Rockstar.lastfm = config_hash
58
+ end
59
+ end
60
+
61
+ def config_dir
62
+ "#{ENV['HOME']}/.config"
63
+ end
64
+
65
+ def dist_config
66
+ File.join(File.dirname(__FILE__), '../../config/lastfm-spotify.yml.dist')
67
+ end
68
+
69
+ def invalid_config?(config_hash)
70
+ config_hash.values.any? {|v| v==''}
71
+ end
45
72
  end
46
73
 
47
74
  class InvalidSearchType < Exception; end
@@ -1,3 +1,3 @@
1
1
  module LastfmM3u
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
data/spec/lastfm_spec.rb CHANGED
@@ -2,11 +2,12 @@ require 'spec_helper'
2
2
  require 'ostruct'
3
3
 
4
4
  describe LastfmM3u::Lastfm do
5
- it "should return expected results" do
5
+ it "should successfully run full circle" do
6
6
  YAML.stub(:load_file).and_return({api_key: 'key', api_secret: 'secret'})
7
7
  track = OpenStruct.new(name: 'Poa Alpina')
8
8
  lf = LastfmM3u::Lastfm.new('Biosphere', music_dir)
9
- found = lf.find_tracks([track])
9
+ lf.send(:tracks=, [track])
10
+ found = lf.find_tracks
10
11
  found.should == { track.name => ["#{music_dir}/biosphere/poa-alpina.mp3"] }
11
12
  end
12
13
  end
@@ -15,10 +15,6 @@ describe LastfmM3u::FileSearch do
15
15
  end
16
16
  end
17
17
 
18
- context "find" do
19
- pending
20
- end
21
-
22
18
  context "normalization" do
23
19
  it "should find a filename with underscores in place of spaces" do
24
20
  file_search.find('my way', {search_type: :file}).first.to_s.should match /my_way/
@@ -77,11 +73,6 @@ describe LastfmM3u::FileSearch do
77
73
  file_search.find('id3v1-title', {search_type: :id3}).first.should == "#{music_dir}/id3v1.mp3"
78
74
  end
79
75
 
80
- it "should return title, album, artist, filename" do
81
- pending "returning filenames for now to ease sorting/uniq when both filenames and id3s searched"
82
- file_search.find('id3v1-title', {search_type: :id3}).first.should == "id3v1-title, id3v1-album, id3v1-artist, #{music_dir}/id3v1.mp3"
83
- end
84
-
85
76
  context "track" do
86
77
  it "should find a tag" do
87
78
  file_search.find('id3v1-title', {search_type: :id3}).first.to_s.should match /id3v1/i
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'simplecov'
2
2
  SimpleCov.start
3
+ require 'coveralls'
4
+ Coveralls.wear!
3
5
 
4
6
  # normal require does not work once gem is installed, because its loaded via rubygems
5
7
  $:.unshift(File.expand_path('../lib', __FILE__))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lastfm-m3u
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-04 00:00:00.000000000 Z
12
+ date: 2013-06-02 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rspec
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 2.13.0
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 2.13.0
30
14
  - !ruby/object:Gem::Dependency
31
15
  name: guard-rspec
32
16
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +18,7 @@ dependencies:
34
18
  requirements:
35
19
  - - ~>
36
20
  - !ruby/object:Gem::Version
37
- version: 2.5.1
21
+ version: '2.5'
38
22
  type: :development
39
23
  prerelease: false
40
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +26,7 @@ dependencies:
42
26
  requirements:
43
27
  - - ~>
44
28
  - !ruby/object:Gem::Version
45
- version: 2.5.1
29
+ version: '2.5'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: guard-ctags-bundler
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +34,7 @@ dependencies:
50
34
  requirements:
51
35
  - - ~>
52
36
  - !ruby/object:Gem::Version
53
- version: 0.1.6
37
+ version: '0.1'
54
38
  type: :development
55
39
  prerelease: false
56
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +42,7 @@ dependencies:
58
42
  requirements:
59
43
  - - ~>
60
44
  - !ruby/object:Gem::Version
61
- version: 0.1.6
45
+ version: '0.1'
62
46
  - !ruby/object:Gem::Dependency
63
47
  name: terminal-notifier-guard
64
48
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +50,7 @@ dependencies:
66
50
  requirements:
67
51
  - - ~>
68
52
  - !ruby/object:Gem::Version
69
- version: 1.5.3
53
+ version: '1.5'
70
54
  type: :development
71
55
  prerelease: false
72
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +58,7 @@ dependencies:
74
58
  requirements:
75
59
  - - ~>
76
60
  - !ruby/object:Gem::Version
77
- version: 1.5.3
61
+ version: '1.5'
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: rb-fsevent
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +82,7 @@ dependencies:
98
82
  requirements:
99
83
  - - ~>
100
84
  - !ruby/object:Gem::Version
101
- version: 1.5.0
85
+ version: '1.5'
102
86
  type: :development
103
87
  prerelease: false
104
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +90,7 @@ dependencies:
106
90
  requirements:
107
91
  - - ~>
108
92
  - !ruby/object:Gem::Version
109
- version: 1.5.0
93
+ version: '1.5'
110
94
  - !ruby/object:Gem::Dependency
111
95
  name: pry-debugger
112
96
  requirement: !ruby/object:Gem::Requirement
@@ -123,22 +107,6 @@ dependencies:
123
107
  - - ~>
124
108
  - !ruby/object:Gem::Version
125
109
  version: '0.2'
126
- - !ruby/object:Gem::Dependency
127
- name: simplecov
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: 0.7.1
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 0.7.1
142
110
  - !ruby/object:Gem::Dependency
143
111
  name: rockstar
144
112
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +114,7 @@ dependencies:
146
114
  requirements:
147
115
  - - ~>
148
116
  - !ruby/object:Gem::Version
149
- version: 0.7.1
117
+ version: '0.7'
150
118
  type: :runtime
151
119
  prerelease: false
152
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -154,7 +122,7 @@ dependencies:
154
122
  requirements:
155
123
  - - ~>
156
124
  - !ruby/object:Gem::Version
157
- version: 0.7.1
125
+ version: '0.7'
158
126
  - !ruby/object:Gem::Dependency
159
127
  name: ruby-mp3info
160
128
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +130,7 @@ dependencies:
162
130
  requirements:
163
131
  - - ~>
164
132
  - !ruby/object:Gem::Version
165
- version: 0.8.0
133
+ version: '0.8'
166
134
  type: :runtime
167
135
  prerelease: false
168
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,7 +138,7 @@ dependencies:
170
138
  requirements:
171
139
  - - ~>
172
140
  - !ruby/object:Gem::Version
173
- version: 0.8.0
141
+ version: '0.8'
174
142
  - !ruby/object:Gem::Dependency
175
143
  name: rainbow
176
144
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +146,7 @@ dependencies:
178
146
  requirements:
179
147
  - - ~>
180
148
  - !ruby/object:Gem::Version
181
- version: 1.1.4
149
+ version: '1.1'
182
150
  type: :runtime
183
151
  prerelease: false
184
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -186,7 +154,7 @@ dependencies:
186
154
  requirements:
187
155
  - - ~>
188
156
  - !ruby/object:Gem::Version
189
- version: 1.1.4
157
+ version: '1.1'
190
158
  - !ruby/object:Gem::Dependency
191
159
  name: ansi
192
160
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +162,7 @@ dependencies:
194
162
  requirements:
195
163
  - - ~>
196
164
  - !ruby/object:Gem::Version
197
- version: 1.4.3
165
+ version: '1.4'
198
166
  type: :runtime
199
167
  prerelease: false
200
168
  version_requirements: !ruby/object:Gem::Requirement
@@ -202,7 +170,7 @@ dependencies:
202
170
  requirements:
203
171
  - - ~>
204
172
  - !ruby/object:Gem::Version
205
- version: 1.4.3
173
+ version: '1.4'
206
174
  - !ruby/object:Gem::Dependency
207
175
  name: m3uzi
208
176
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +178,7 @@ dependencies:
210
178
  requirements:
211
179
  - - ~>
212
180
  - !ruby/object:Gem::Version
213
- version: 0.5.1
181
+ version: '0.5'
214
182
  type: :runtime
215
183
  prerelease: false
216
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -218,7 +186,7 @@ dependencies:
218
186
  requirements:
219
187
  - - ~>
220
188
  - !ruby/object:Gem::Version
221
- version: 0.5.1
189
+ version: '0.5'
222
190
  - !ruby/object:Gem::Dependency
223
191
  name: highline
224
192
  requirement: !ruby/object:Gem::Requirement
@@ -226,7 +194,7 @@ dependencies:
226
194
  requirements:
227
195
  - - ~>
228
196
  - !ruby/object:Gem::Version
229
- version: 1.6.16
197
+ version: '1.6'
230
198
  type: :runtime
231
199
  prerelease: false
232
200
  version_requirements: !ruby/object:Gem::Requirement
@@ -234,7 +202,7 @@ dependencies:
234
202
  requirements:
235
203
  - - ~>
236
204
  - !ruby/object:Gem::Version
237
- version: 1.6.16
205
+ version: '1.6'
238
206
  - !ruby/object:Gem::Dependency
239
207
  name: ruby-progressbar
240
208
  requirement: !ruby/object:Gem::Requirement
@@ -242,7 +210,7 @@ dependencies:
242
210
  requirements:
243
211
  - - ~>
244
212
  - !ruby/object:Gem::Version
245
- version: 1.0.2
213
+ version: '1.1'
246
214
  type: :runtime
247
215
  prerelease: false
248
216
  version_requirements: !ruby/object:Gem::Requirement
@@ -250,7 +218,7 @@ dependencies:
250
218
  requirements:
251
219
  - - ~>
252
220
  - !ruby/object:Gem::Version
253
- version: 1.0.2
221
+ version: '1.1'
254
222
  description: CLI tool to create m3u playlists of top artist tracks according to lastfm
255
223
  email:
256
224
  - jon.i.austin@gmail.com
@@ -259,8 +227,10 @@ executables:
259
227
  extensions: []
260
228
  extra_rdoc_files: []
261
229
  files:
230
+ - .coveralls.yml
262
231
  - .gitignore
263
232
  - .rspec
233
+ - .travis.yml
264
234
  - Gemfile
265
235
  - Guardfile
266
236
  - MIT-LICENSE
@@ -301,7 +271,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
271
  version: '0'
302
272
  segments:
303
273
  - 0
304
- hash: 3207334904113421642
274
+ hash: -1581479762260687584
305
275
  required_rubygems_version: !ruby/object:Gem::Requirement
306
276
  none: false
307
277
  requirements:
@@ -310,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
280
  version: '0'
311
281
  segments:
312
282
  - 0
313
- hash: 3207334904113421642
283
+ hash: -1581479762260687584
314
284
  requirements: []
315
285
  rubyforge_project:
316
286
  rubygems_version: 1.8.25