File: findtrack.rb

package info (click to toggle)
libmusicbrainz-ruby 0.3.0-1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 488 kB
  • ctags: 157
  • sloc: ansic: 650; ruby: 286; makefile: 5
file content (58 lines) | stat: -rwxr-xr-x 1,324 bytes parent folder | download | duplicates (3)
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