lastfm-top 0.1.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.
- data/COPYING +13 -0
- data/README.md +6 -0
- data/Rakefile +6 -0
- data/bin/lastfm-top +67 -0
- metadata +70 -0
data/COPYING
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
3
|
+
|
4
|
+
Copyright (C) 2011 James Pearson
|
5
|
+
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
9
|
+
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12
|
+
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README.md
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
Similar to [lastfm-tail], lastfm-top is a small command-line utility designed
|
2
|
+
for gathering specific frequently-queried information from a user's Last.fm
|
3
|
+
profile - in this case, top tracks and artists for various timespans.
|
4
|
+
|
5
|
+
[lastfm-tail]: https://github.com/xiongchiamiov/lastfm-tail
|
6
|
+
|
data/Rakefile
ADDED
data/bin/lastfm-top
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# May you recognize your weaknesses and share your strengths.
|
4
|
+
# May you share freely, never taking more than you give.
|
5
|
+
# May you find love and love everyone you find.
|
6
|
+
|
7
|
+
require 'json'
|
8
|
+
require 'net/http'
|
9
|
+
require 'optparse'
|
10
|
+
require 'uri'
|
11
|
+
|
12
|
+
PERIOD_OPTIONS = ['7day', '3month', '6month', '12month', 'overall']
|
13
|
+
STAT_OPTIONS = ['artists', 'albums', 'tracks']
|
14
|
+
API_KEY = 'c7089003368bef3c8d0dd12ceede4978'
|
15
|
+
period = 'overall'
|
16
|
+
statistic = 'artists'
|
17
|
+
limit = 10
|
18
|
+
|
19
|
+
OptionParser.new do |opts|
|
20
|
+
opts.banner = "Usage: #{$0.split('/').last} [options] [USER]"
|
21
|
+
|
22
|
+
opts.on('-l', '--limit NUM', Integer, 'Number of artists to show. '\
|
23
|
+
+'0 is all. Defaults to 10.') do |num|
|
24
|
+
# We should actually restrict the range a bit. Using a really, really
|
25
|
+
# big number causes the API to return no tracks at all.
|
26
|
+
limit = num
|
27
|
+
end
|
28
|
+
|
29
|
+
opts.on('-p', '--period PERIOD', PERIOD_OPTIONS,
|
30
|
+
"Time period to show. Choices: #{PERIOD_OPTIONS.join(',')}") do |p|
|
31
|
+
period = p
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on('-s', '--statistic STATISTIC', STAT_OPTIONS,
|
35
|
+
"Statistic to show. Choices: #{STAT_OPTIONS.join(',')}") do |s|
|
36
|
+
statistic = s
|
37
|
+
end
|
38
|
+
|
39
|
+
opts.on('-v', '--version', 'Show the installed version of lastfm-top.') do
|
40
|
+
puts 'lastfm-top 0.1.0'
|
41
|
+
exit 0
|
42
|
+
end
|
43
|
+
|
44
|
+
opts.on_tail('-h', '--help', 'Show this help dialog.') do
|
45
|
+
puts opts
|
46
|
+
exit 0
|
47
|
+
end
|
48
|
+
end.parse!
|
49
|
+
|
50
|
+
user = ARGV[-1] || 'xiongchiamiov'
|
51
|
+
|
52
|
+
url = URI.parse("http://ws.audioscrobbler.com/2.0/?api_key=#{API_KEY}&format=json&method=user.gettop#{statistic}&user=#{user}&period=#{period}&limit=#{limit}")
|
53
|
+
json = Net::HTTP.get_response(url).body
|
54
|
+
results = JSON.parse(json)
|
55
|
+
|
56
|
+
if results['error']
|
57
|
+
puts "Uh oh, something went wrong: #{results['message']}"
|
58
|
+
exit results['error']
|
59
|
+
end
|
60
|
+
|
61
|
+
stats = results["top#{statistic}"][statistic.chop] # Chop off the 's'
|
62
|
+
stats.each do |stat|
|
63
|
+
# This could look a lot nicer. There's also some additional information
|
64
|
+
# available that differs depending on the statistic we're looking at.
|
65
|
+
puts "#{stat['name']} - #{stat['playcount']}"
|
66
|
+
end
|
67
|
+
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lastfm-top
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.0
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- xiongchiamiov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2012-03-11 00:00:00 -08:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: json
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
27
|
+
description: A small script to view top artists, albums and tracks of a Last.fm user.
|
28
|
+
email:
|
29
|
+
- xiong.chiamiov@gmail.com
|
30
|
+
executables:
|
31
|
+
- lastfm-top
|
32
|
+
extensions: []
|
33
|
+
|
34
|
+
extra_rdoc_files:
|
35
|
+
- README.md
|
36
|
+
files:
|
37
|
+
- COPYING
|
38
|
+
- Rakefile
|
39
|
+
- README.md
|
40
|
+
- bin/lastfm-top
|
41
|
+
has_rdoc: true
|
42
|
+
homepage: https://github.com/xiongchiamiov/lastfm-top/
|
43
|
+
licenses: []
|
44
|
+
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: "0"
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.5.3
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: View frequently-queried information from a Last.fm profile.
|
69
|
+
test_files: []
|
70
|
+
|