lastfm-itunes 0.2
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 +7 -0
- data/.gitignore +17 -0
- data/.rspec +1 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +72 -0
- data/Rakefile +9 -0
- data/bin/lastfm-itunes +58 -0
- data/lastfm-itunes.gemspec +35 -0
- data/lib/lastfm-itunes.rb +15 -0
- data/lib/lastfm-itunes/cli.rb +109 -0
- data/lib/lastfm-itunes/generator.rb +19 -0
- data/lib/lastfm-itunes/itunes.rb +27 -0
- data/lib/lastfm-itunes/lastfm/artist.rb +30 -0
- data/lib/lastfm-itunes/lastfm/search.rb +15 -0
- data/lib/lastfm-itunes/lastfm/user.rb +21 -0
- data/lib/lastfm-itunes/patches/m3uzi.rb +5 -0
- data/lib/lastfm-itunes/patches/rockstar.rb +9 -0
- data/lib/lastfm-itunes/playlist.rb +25 -0
- data/lib/lastfm-itunes/tracks.rb +35 -0
- data/lib/lastfm-itunes/version.rb +3 -0
- data/spec/fixtures/iTunes Music Library Remote.xml +124 -0
- data/spec/fixtures/iTunes Music Library.xml +5763 -0
- data/spec/fixtures/vcr/lastfm_top_tracks.yml +612 -0
- data/spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists.yml +8837 -0
- data/spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists_with_limit.yml +8853 -0
- data/spec/fixtures/vcr/lastfm_user_top_tracks.yml +9918 -0
- data/spec/lastfm-itunes/generator_spec.rb +31 -0
- data/spec/lastfm-itunes/itunes_spec.rb +33 -0
- data/spec/lastfm-itunes/lastfm/artist_spec.rb +41 -0
- data/spec/lastfm-itunes/lastfm/search_spec.rb +31 -0
- data/spec/lastfm-itunes/lastfm/user_spec.rb +41 -0
- data/spec/lastfm-itunes/playlist_spec.rb +29 -0
- data/spec/spec_helper.rb +47 -0
- metadata +275 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
describe LastfmItunes::Generator do
|
5
|
+
let(:m3u_path) { Pathname.new(__FILE__).join('..', '..', '..', 'tmp', 'lastfm-itunes.m3u') }
|
6
|
+
let(:tracks) { ["/path/to/track.mp3", "/path/to/track2.mp3"] }
|
7
|
+
|
8
|
+
before { File.delete(m3u_path) if File.exists?(m3u_path) }
|
9
|
+
|
10
|
+
it "should generate m3u of top tracks" do
|
11
|
+
VCR.use_cassette('lastfm top tracks for all itunes artists') do
|
12
|
+
generator = LastfmItunes::Generator.new(m3u_path)
|
13
|
+
generator.generate(tracks)
|
14
|
+
generator.m3u.playlist_items.count.should == 2
|
15
|
+
File.exists?(m3u_path).should be_true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'm3u_path' do
|
20
|
+
#it 'should use default m3u path if none given' do
|
21
|
+
#default_args.delete(:m3u_path)
|
22
|
+
#generator = LastfmItunes::Generator.new(default_args)
|
23
|
+
#generator.m3u.path.should match /#{Pathname(itunes_xml_path).dirname}/
|
24
|
+
#end
|
25
|
+
|
26
|
+
it 'should use supplied m3u path' do
|
27
|
+
generator = LastfmItunes::Generator.new('/tmp/playlist.m3u')
|
28
|
+
generator.m3u.path.should == '/tmp/playlist.m3u'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LastfmItunes::Itunes do
|
4
|
+
let(:itunes) { LastfmItunes::Itunes.new( itunes_xml_path ) }
|
5
|
+
|
6
|
+
it 'should load itunes library xml' do
|
7
|
+
itunes.library.size.should == 162
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should raise exception if library empty or invalid' do
|
11
|
+
expect{
|
12
|
+
LastfmItunes::Itunes.new(__FILE__)
|
13
|
+
}.to raise_error(LastfmItunes::InvalidLibraryException)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should group tracks by artist' do
|
17
|
+
expect(
|
18
|
+
itunes.group_tracks_by_artist['Radiohead'].map(&:name)
|
19
|
+
).to eq(['Nude', 'Reckoner'])
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should store itunes hash' do
|
23
|
+
itunes_track = itunes.tracks.select{ |t| t.artist == 'Radiohead' && t.name == 'Nude' }.first
|
24
|
+
itunes.group_tracks_by_artist['Radiohead'].first.should == itunes_track
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should ignore tracks without a location_path (cloud)' do
|
28
|
+
remote_itunes = LastfmItunes::Itunes.new( itunes_remote_xml_path )
|
29
|
+
remote_itunes.tracks.size.should == 1
|
30
|
+
remote_itunes.tracks.first.location_path.should_not be_nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LastfmItunes::Lastfm::Artist do
|
4
|
+
before { ::Rockstar.lastfm = lastfm_credentials }
|
5
|
+
let(:artist) { LastfmItunes::Lastfm::Artist.new(name: 'Radiohead') }
|
6
|
+
let(:track) { OpenStruct.new(artist: 'Radiohead', name: 'Nude') }
|
7
|
+
let(:more_popular_track) { OpenStruct.new(artist: 'Radiohead', name: 'Creep') }
|
8
|
+
|
9
|
+
context 'my_top_tracks' do
|
10
|
+
it "should return matching tracks in lastfm's order" do
|
11
|
+
VCR.use_cassette('lastfm top tracks') do
|
12
|
+
artist.my_top_tracks([track, more_popular_track]) \
|
13
|
+
.should == [more_popular_track, track]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should ignore differences in case' do
|
18
|
+
VCR.use_cassette('lastfm top tracks') do
|
19
|
+
messed_case_track = OpenStruct.new(artist: 'Radiohead', name: 'cReeP')
|
20
|
+
artist.my_top_tracks([messed_case_track]).should == [messed_case_track]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should respect limit' do
|
25
|
+
VCR.use_cassette('lastfm top tracks') do
|
26
|
+
artist.limit = 1
|
27
|
+
artist.my_top_tracks([track, more_popular_track]).should == [more_popular_track]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'artist_top_tracks' do
|
33
|
+
it 'should find top tracks for artist' do
|
34
|
+
VCR.use_cassette('lastfm top tracks') do
|
35
|
+
expect(
|
36
|
+
artist.top_tracks.any? { |t| t.name == 'Nude' }
|
37
|
+
).to be_true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe LastfmItunes::Lastfm::Search do
|
5
|
+
let(:search) {
|
6
|
+
described_class.new(credentials: lastfm_credentials, name: 'Radiohead')
|
7
|
+
}
|
8
|
+
let(:track) { OpenStruct.new(artist: 'Radiohead', name: 'Nude') }
|
9
|
+
let(:more_popular_track) { OpenStruct.new(artist: 'Radiohead', name: 'Creep') }
|
10
|
+
|
11
|
+
context 'my_top_tracks' do
|
12
|
+
it "should return matching tracks in lastfm's order" do
|
13
|
+
VCR.use_cassette('lastfm top tracks') do
|
14
|
+
search.my_top_tracks([track, more_popular_track]) \
|
15
|
+
.should == [more_popular_track, track]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should respect limit' do
|
20
|
+
search_with_limit = described_class.new(credentials: lastfm_credentials,
|
21
|
+
search_class: LastfmItunes::Lastfm::User,
|
22
|
+
name: 'echowarpt',
|
23
|
+
limit: 1)
|
24
|
+
VCR.use_cassette('lastfm user top tracks') do
|
25
|
+
search_with_limit.top_tracks.size.should == 1
|
26
|
+
top_track = search_with_limit.top_tracks
|
27
|
+
search_with_limit.my_top_tracks([track, top_track].flatten).size.should == 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LastfmItunes::Lastfm::User do
|
4
|
+
before { ::Rockstar.lastfm = lastfm_credentials }
|
5
|
+
let(:user) { LastfmItunes::Lastfm::User.new(name: 'echowarpt') }
|
6
|
+
let(:track) { OpenStruct.new(artist: 'Brian Eno', name: '2/1') }
|
7
|
+
let(:more_popular_track) { OpenStruct.new(artist: 'Brian Eno', name: '1/1') }
|
8
|
+
|
9
|
+
context 'my_top_tracks' do
|
10
|
+
it "should return matching tracks in lastfm's order" do
|
11
|
+
VCR.use_cassette('lastfm user top tracks') do
|
12
|
+
user.my_top_tracks([track, more_popular_track]).should == [more_popular_track, track]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should ignore differences in case' do
|
17
|
+
VCR.use_cassette('lastfm user top tracks') do
|
18
|
+
messed_case_track = OpenStruct.new(artist: 'Yo la tengO', name: 'eVerydAy')
|
19
|
+
user.my_top_tracks([messed_case_track]).should == [messed_case_track]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should respect limit' do
|
24
|
+
VCR.use_cassette('lastfm user top tracks') do
|
25
|
+
user.limit = 1
|
26
|
+
user.my_top_tracks([track, more_popular_track]).should == [more_popular_track]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'user_top_tracks' do
|
32
|
+
it 'should find top tracks for user' do
|
33
|
+
VCR.use_cassette('lastfm user top tracks') do
|
34
|
+
expect(
|
35
|
+
user.top_tracks.any? { |t| t.name == 'Nude' }
|
36
|
+
).to be_true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LastfmItunes::Playlist do
|
4
|
+
let(:default_args) do
|
5
|
+
{
|
6
|
+
name: 'Radiohead',
|
7
|
+
itunes_xml_path: itunes_xml_path,
|
8
|
+
credentials: lastfm_credentials
|
9
|
+
}
|
10
|
+
end
|
11
|
+
let(:playlist) { LastfmItunes::Playlist.new(default_args) }
|
12
|
+
|
13
|
+
context 'playlist of tracks that are available in both itunes and lastfm' do
|
14
|
+
it 'should find all if no limit given' do
|
15
|
+
VCR.use_cassette('lastfm top tracks for all itunes artists') do
|
16
|
+
playlist.fetch_tracks
|
17
|
+
playlist.tracks.size.should == 82
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should respect limit for number of each artist tracks to return' do
|
22
|
+
VCR.use_cassette('lastfm top tracks for all itunes artists with limit') do
|
23
|
+
playlist_with_limit = described_class.new(default_args.merge(limit: 1))
|
24
|
+
playlist_with_limit.fetch_tracks
|
25
|
+
playlist_with_limit.tracks.size.should == 13
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
4
|
+
# normal require does not work once gem is installed, because its loaded via rubygems
|
5
|
+
$:.unshift(File.expand_path('../lib', __FILE__))
|
6
|
+
|
7
|
+
require 'rspec'
|
8
|
+
require 'lastfm-itunes'
|
9
|
+
require 'vcr'
|
10
|
+
|
11
|
+
VCR.configure do |c|
|
12
|
+
c.cassette_library_dir = 'spec/fixtures/vcr'
|
13
|
+
c.hook_into :webmock
|
14
|
+
c.ignore_localhost = true
|
15
|
+
c.default_cassette_options = { :record => :new_episodes }
|
16
|
+
c.filter_sensitive_data('API_KEY') { ENV['LASTFM_API_KEY'] }
|
17
|
+
c.filter_sensitive_data('API_SECRET') { ENV['LASTFM_API_SECRET'] }
|
18
|
+
c.default_cassette_options = {
|
19
|
+
:match_requests_on => [:method,
|
20
|
+
VCR.request_matchers.uri_without_param(:api_key)]
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
config.order = 'random'
|
26
|
+
end
|
27
|
+
|
28
|
+
def itunes_xml_path
|
29
|
+
Pathname.new(__FILE__).join('..', 'fixtures', 'iTunes Music Library.xml')
|
30
|
+
end
|
31
|
+
|
32
|
+
def itunes_remote_xml_path
|
33
|
+
Pathname.new(__FILE__).join('..', 'fixtures', 'iTunes Music Library Remote.xml')
|
34
|
+
end
|
35
|
+
|
36
|
+
def lastfm_credentials
|
37
|
+
# If you regenerate the VCR fixtures you need to add your credentials to ENV!
|
38
|
+
# http://www.last.fm/api/account/
|
39
|
+
# e.g.:
|
40
|
+
# export LASTFM_API_KEY='my_api_key'
|
41
|
+
# export LASTFM_API_SECRET='my_api_secret'
|
42
|
+
{
|
43
|
+
api_key: ENV['LASTFM_API_KEY'],
|
44
|
+
api_secret: ENV['LASTFM_API_SECRET']
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
metadata
ADDED
@@ -0,0 +1,275 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lastfm-itunes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jon Austin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rockstar
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rainbow
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.99'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.99'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: m3uzi
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.5'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: highline
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.6'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby-progressbar
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.4'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: andyw8-itunes-library
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.1'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bundler
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.3'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.14'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.14'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ~>
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.8'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ~>
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.8'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry-byebug
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ~>
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '2.2'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '2.2'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: vcr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '2.8'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ~>
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '2.8'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: webmock
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ~>
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '1.16'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ~>
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '1.16'
|
195
|
+
description: Easily create playlists of top Lastfm tracks from your iTunes library.
|
196
|
+
email:
|
197
|
+
- jon.i.austin@gmail.com
|
198
|
+
executables:
|
199
|
+
- lastfm-itunes
|
200
|
+
extensions: []
|
201
|
+
extra_rdoc_files: []
|
202
|
+
files:
|
203
|
+
- .gitignore
|
204
|
+
- .rspec
|
205
|
+
- Gemfile
|
206
|
+
- LICENSE.txt
|
207
|
+
- README.md
|
208
|
+
- Rakefile
|
209
|
+
- bin/lastfm-itunes
|
210
|
+
- lastfm-itunes.gemspec
|
211
|
+
- lib/lastfm-itunes.rb
|
212
|
+
- lib/lastfm-itunes/cli.rb
|
213
|
+
- lib/lastfm-itunes/generator.rb
|
214
|
+
- lib/lastfm-itunes/itunes.rb
|
215
|
+
- lib/lastfm-itunes/lastfm/artist.rb
|
216
|
+
- lib/lastfm-itunes/lastfm/search.rb
|
217
|
+
- lib/lastfm-itunes/lastfm/user.rb
|
218
|
+
- lib/lastfm-itunes/patches/m3uzi.rb
|
219
|
+
- lib/lastfm-itunes/patches/rockstar.rb
|
220
|
+
- lib/lastfm-itunes/playlist.rb
|
221
|
+
- lib/lastfm-itunes/tracks.rb
|
222
|
+
- lib/lastfm-itunes/version.rb
|
223
|
+
- spec/fixtures/iTunes Music Library Remote.xml
|
224
|
+
- spec/fixtures/iTunes Music Library.xml
|
225
|
+
- spec/fixtures/vcr/lastfm_top_tracks.yml
|
226
|
+
- spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists.yml
|
227
|
+
- spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists_with_limit.yml
|
228
|
+
- spec/fixtures/vcr/lastfm_user_top_tracks.yml
|
229
|
+
- spec/lastfm-itunes/generator_spec.rb
|
230
|
+
- spec/lastfm-itunes/itunes_spec.rb
|
231
|
+
- spec/lastfm-itunes/lastfm/artist_spec.rb
|
232
|
+
- spec/lastfm-itunes/lastfm/search_spec.rb
|
233
|
+
- spec/lastfm-itunes/lastfm/user_spec.rb
|
234
|
+
- spec/lastfm-itunes/playlist_spec.rb
|
235
|
+
- spec/spec_helper.rb
|
236
|
+
homepage: https://github.com/jonaustin/lastfm-itunes
|
237
|
+
licenses:
|
238
|
+
- MIT
|
239
|
+
metadata: {}
|
240
|
+
post_install_message:
|
241
|
+
rdoc_options: []
|
242
|
+
require_paths:
|
243
|
+
- lib
|
244
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
245
|
+
requirements:
|
246
|
+
- - '>='
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
version: '0'
|
249
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
|
+
requirements:
|
251
|
+
- - '>='
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0'
|
254
|
+
requirements: []
|
255
|
+
rubyforge_project:
|
256
|
+
rubygems_version: 2.0.14
|
257
|
+
signing_key:
|
258
|
+
specification_version: 4
|
259
|
+
summary: CLI tool to easily create m3u playlists of top Lastfm tracks from an iTunes
|
260
|
+
library
|
261
|
+
test_files:
|
262
|
+
- spec/fixtures/iTunes Music Library Remote.xml
|
263
|
+
- spec/fixtures/iTunes Music Library.xml
|
264
|
+
- spec/fixtures/vcr/lastfm_top_tracks.yml
|
265
|
+
- spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists.yml
|
266
|
+
- spec/fixtures/vcr/lastfm_top_tracks_for_all_itunes_artists_with_limit.yml
|
267
|
+
- spec/fixtures/vcr/lastfm_user_top_tracks.yml
|
268
|
+
- spec/lastfm-itunes/generator_spec.rb
|
269
|
+
- spec/lastfm-itunes/itunes_spec.rb
|
270
|
+
- spec/lastfm-itunes/lastfm/artist_spec.rb
|
271
|
+
- spec/lastfm-itunes/lastfm/search_spec.rb
|
272
|
+
- spec/lastfm-itunes/lastfm/user_spec.rb
|
273
|
+
- spec/lastfm-itunes/playlist_spec.rb
|
274
|
+
- spec/spec_helper.rb
|
275
|
+
has_rdoc:
|