lastfm-m3u 0.2.4 → 0.2.5

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/.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