ما هي أفضل طريقة للحصول على معلومات كدب لCD الصوت في بيرل؟

StackOverflow https://stackoverflow.com/questions/2264723

  •  20-09-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة للحصول على السلاح بالملكية ومؤتمر نزع السلاح المسار أسماء من قرص مضغوط صوتي؟ حاولت هذه الوحدة، لكنه لم يفعل العمل.

#!/usr/bin/env perl
use warnings;
use strict;
use CDDB_get qw( get_cddb );

my %config;
$config{CDDB_HOST} = "freedb.freedb.org";
$config{CDDB_PORT} = 8880;
$config{CDDB_MODE} = "cddb";
$config{CD_DEVICE} = "/dev/sr1";

# user interaction welcome?
$config{input} = 1;

my %cd = get_cddb( \%config ); # line 16

print "$_ : $cd{$_}\n" for keys %cd;

unless( defined $cd{title} ) {
    die "no cddb entry found";
}

print "artist: $cd{artist}\n";
print "title: $cd{title}\n";
print "category: $cd{cat}\n";
print "cddbid: $cd{id}\n";
print "trackno: $cd{tno}\n";

my $n = 1;
for my $i ( @{$cd{track}} ) {
    print "track $n: $i\n";
    $n++;
}

# OUT:
# Odd number of elements in hash assignment at ./cddb_get.pl line 16.
# Use of uninitialized value in list assignment at ./cddb_get.pl line 16.
# Use of uninitialized value in concatenation (.) or string at ./cddb_get.pl line 18.
#  :
# no cddb entry found at ./cddb_get.pl line 21.
هل كانت مفيدة؟

المحلول

ومحاولة وضع

BEGIN { $CDDB_get::debug = 1 }

وقبل خط use CDDB_get من أجل الحصول على التصحيح الإخراج إلى STDERR.

نصائح أخرى

هل أنت متأكد من URL API لفريدب هو الصحيح في وحدة؟

هل حاولت HTTP بدلا من CDDBP؟

وفريدب الوثائق :

<اقتباس فقرة>   

وتكوين CDDB1- أو فريدب على علم   برنامج للإشارة إلى freedb.freedb.org   (عشوائية فريدب الخادم) ك   كدب / فريدب خادم.

     

وكافة ملقمات فريدب الرسمية هي   تشغيل cddbp في ميناء 8880 والمتشعب في   المنفذ 80. المسار ل http الوصول هو   /~cddb/cddb.cgi.

وأود أن تنظر تبحث المعلومات حتى على musicbrainz.org بدلا من ذلك.

وعن طريق MusicBrainz :: DiscID للعثور على discid من قرص مضغوط وخدمة ويب :: MusicBrainz لاسترداد البيانات من السهل جدا:

#!/usr/bin/perl

use strict;
use warnings;

use MusicBrainz::DiscID;
use WebService::MusicBrainz;

my $discid=MusicBrainz::DiscID->new;
if ( !$discid->read ) {
    print STDERR "Error: " . $discid->error_msg . "\n";
    exit 1;
}
print "DiscID: " . $discid->id . "\n";

my $service=WebService::MusicBrainz->new_release;
my $response=$service->search({ DISCID=>$discid->id });
my $release=$response->release;

print "ARTIST: " . $release->artist->name . "\n";
print "ALBUM:  " . $release->title . "\n";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top