1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/usr/bin/ruby
require 'musicbrainz'
# allocate a new MusicBrainz client
mb = MusicBrainz::Client.new
mb.depth = 2
# handle environment variables
mb.server = server if server = ENV['MB_SERVER']
mb.debug = true if ENV['MB_DEBUG']
mb.depth = depth.to_i if depth = ENV['MB_DEPTH']
unless ARGV.size > 0
$stderr.puts 'Missing query string.'
exit -1
end
query = ARGV[0]
# search for artist
puts 'Query: ' << query
if mb.query MusicBrainz::Query::TrackInfoFromTRMId, query
mb.select MusicBrainz::Query::Rewind
1.upto(1000) { |i|
# select first track from track list
unless mb.select(MusicBrainz::Query::SelectTrack, i)
puts 'That TRM is not in the database.' if i == 1
break
end
track_uri = mb.result MusicBrainz::Query::TrackGetTrackId
# extract the artist name from the track
puts 'Artist: ' << artist if
artist = mb.result(MusicBrainz::Query::TrackGetArtistName)
# extract the track name
puts 'Track: ' << track if
track = mb.result(MusicBrainz::Query::TrackGetTrackName)
# extract the track duration
puts 'Duration: ' << dur << ' ms' if
dur = mb.result(MusicBrainz::Query::TrackGetTrackDuration)
mb.select MusicBrainz::Query::SelectTrackAlbum
# extract the track number
track_num = mb.ordinal MusicBrainz::Query::AlbumGetTrackList, track_uri
puts 'TrackNum: ' << track_num.to_s if track_num > 0 && track_num < 100
# extract the album name from the track
puts 'Album: ' << album if
album = mb.result(MusicBrainz::Query::AlbumGetAlbumName)
}
else
$stderr.puts 'Error: ' << mb.error
end
|