Вот скажите, люди добрые. Вот есть у меня куй. Но без тэгов. И есть discid в этом куе, то есть просто кто-то поленился срисовать инфу из freedb. Вопрос: есть ли проги, которые выдирают по discid инфу и вставляют её в уже заготовленный куй?
p.s. Для себя я эту проблему решил вот так (обрабатывая freedb-шный файл данных)
CODE |
<?php function pref($s, $p) { return (substr($s, 0, strlen($p)) == $p); }
function cutp($s, $p) { return substr($s, strlen($p)); }
function push($arr, $s) { for ($i = 0; $i < count($arr); $i++) $arn[$i+1] = $arr[$i]; $arn[0] = $s; return $arn; }
$cue = file('a.cue'); $data = file('cuedata');
for ($i = 0; $i < count($cue); $i++) { $cue[$i] = str_replace("\r", '', $cue[$i]); $cue[$i] = str_replace("\n", '', $cue[$i]); }
foreach ($data as $di) { $di = trim($di); if (pref($di, 'DTITLE')) { // this is disc title "Author / Title" $di = cutp($di, 'DTITLE='); $tauth = explode('/', $di); $auth = trim($tauth[0]); $title = trim($tauth[1]);
for ($i = 0; $i < count($cue); $i++) if (pref($cue[$i], 'TITLE')) { echo "album title found!\r\n"; $cue[$i] = "TITLE \"$title\""; break; } for ($i = 0; $i < count($cue); $i++) { if (pref($cue[$i], 'PERFORMER')) { echo "performer found!\r\n"; $cue[$i] = "PERFORMER \"$auth\""; } if (pref($cue[$i], ' PERFORMER')) { echo "track performer found!\r\n"; $cue[$i] = " PERFORMER \"$auth\""; } } } if (pref($di, 'DYEAR')) { // this is disc title "Author / Title" $di = trim(cutp($di, 'DYEAR=')); $cue = push($cue, "REM DATE $di"); echo $cue[0]."\r\n"; } if (pref($di, 'DGENRE')) { // this is disc title "Author / Title" $di = trim(cutp($di, 'DGENRE=')); $cue = push($cue, "REM GENRE $di"); echo $cue[0]."\r\n"; } if (pref($di, 'TTITLE')) { $dia = explode('=', $di); if (count($dia) != 2) { echo "Error in track number!\r\n"; die; } sscanf(substr($dia[0], 5), "%d", $tn); $tn++; echo "tn = $tn\r\n"; $tt = $dia[1]; echo "tt = $tt\r\n"; if (strlen($tn) == 1) $tn = "0$tn";
for ($i = 0; $i < count($cue); $i++) if ($cue[$i] == " TRACK $tn AUDIO") { echo "track $tn found\r\n"; $cue[$i+1] = " TITLE \"$tt\""; //echo $cue[$i+1]; break; } } }
$fcnew = fopen('b.cue', 'w'); for ($i = 0; $i < count($cue); $i++) fwrite($fcnew, $cue[$i]."\r\n"); fclose($fcnew); ?> |
а как это люди-то делают?
плохо быть пьяным и тупым :)
Не уверен, что пральна понял вопр, но как старый ... хочу спросить, а что тебе мешает смонтировав через лысый куй образ, попросту запросить у freedb описание диска, используя плеер?.. ну, например, фубарку. :drag:
Как я се представляю, freedb не сколько на discID опираецца, сколько на рисунок длительностей и пауз... :hi:
О, ты кажется умный вещ сказал. Спасибо!
А, ну да, только foobar2000 через freedb такую фигню получает ))) Не знаю почему, но я протестил штуки три альбома, и эффект был один и тот же. Может надо как-то его обучать, но у меня не получилось. А с монтировкой образа -- мысля более интересная, но тогда UltraISO не годится -- я не понял, умеет он монтировать аудиодиск по кую или нет. Судя по всему, нет. Значит только DT или алкаш, а потом на этот образ напускать EAC. Да, видимо это разумно.
Ну что же, спасибо за идеи... :)
tipikin
@ 17-03-2007, 22:53
В общем, Alcohol120 Image Drive прекрасно понимает Wav+Cue, в свою очередь, EAC видит Alcohol120 Image Drive, если установлен не хитрый ACPI (виндовский по умолчанию для этих целей достаточен).
А дальше - просто: Cue->ImageDrive->EAC->freeDB->Alt+S->замена в куе название WAV.
Угу, вот именно, получается, что нужно юзать именно Алкаша (действительно работает). А то у меня EAC не хочет видеть виртуальник, который порождает UltraISO, а Алкаша я не люблю. Вот я и думал, нельзя ли обойтись без виртуальных приводов вовсе. Видимо, нет :( Жаль.
Ну ничего. С учётом того проэкта, который мы сейчас пишем вместе с LF_'ом, скоро вся эта кутерьма станет ненужной :punk: