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
|
#!/usr/bin/ruby
require 'musicbrainz'
# allocate a new MusicBrainz client
mb = MusicBrainz::Client.new
mb.max_items = 10
# 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
$stderr.puts 'Missing query string.'
exit -1
end
query_string = ARGV[0]
# search for track
puts 'Query: ' << query_string
if mb.query MusicBrainz::Query::FindTrackByName, query_string
num_tracks = mb.result(MusicBrainz::Query::GetNumTracks).to_i
if num_tracks < 1
puts 'No tracks found.'
exit 0
end
puts "Found #{num_tracks} tracks."
1.upto(num_tracks) { |i|
# back up to the top context
mb.select MusicBrainz::Query::Rewind
# select the Ith track
mb.select MusicBrainz::Query::SelectTrack, i
# extract the track name
track_name = mb.result MusicBrainz::Query::TrackGetTrackName
puts 'Track: ' << track_name
# extract the artist name
artist_name = mb.result MusicBrainz::Query::TrackGetArtistId
puts 'Artist: ' << mb.id_from_url(artist_name)
# extract the artist id
artist_id = mb.result MusicBrainz::Query::TrackGetArtistId
puts 'ArtistId: ' << mb.id_from_url(artist_id)
puts
}
else
$stderr.puts 'Error: ' << mb.error
end
|