Forums -> Глюкодром -> Работа с куями
| Full Version

dmvn
Вот скажите, люди добрые. Вот есть у меня куй. Но без тэгов. И есть 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);
?>
а как это люди-то делают?
goka
плохо быть пьяным и тупым :)

Не уверен, что пральна понял вопр, но как старый ... хочу спросить, а что тебе мешает смонтировав через лысый куй образ, попросту запросить у freedb описание диска, используя плеер?.. ну, например, фубарку. :drag:
Как я се представляю, freedb не сколько на discID опираецца, сколько на рисунок длительностей и пауз... :hi:
dmvn
О, ты кажется умный вещ сказал. Спасибо!

А, ну да, только foobar2000 через freedb такую фигню получает ))) Не знаю почему, но я протестил штуки три альбома, и эффект был один и тот же. Может надо как-то его обучать, но у меня не получилось. А с монтировкой образа -- мысля более интересная, но тогда UltraISO не годится -- я не понял, умеет он монтировать аудиодиск по кую или нет. Судя по всему, нет. Значит только DT или алкаш, а потом на этот образ напускать EAC. Да, видимо это разумно.

Ну что же, спасибо за идеи... :)
tipikin
В общем, Alcohol120 Image Drive прекрасно понимает Wav+Cue, в свою очередь, EAC видит Alcohol120 Image Drive, если установлен не хитрый ACPI (виндовский по умолчанию для этих целей достаточен).
А дальше - просто: Cue->ImageDrive->EAC->freeDB->Alt+S->замена в куе название WAV.
dmvn
Угу, вот именно, получается, что нужно юзать именно Алкаша (действительно работает). А то у меня EAC не хочет видеть виртуальник, который порождает UltraISO, а Алкаша я не люблю. Вот я и думал, нельзя ли обойтись без виртуальных приводов вовсе. Видимо, нет :( Жаль.

Ну ничего. С учётом того проэкта, который мы сейчас пишем вместе с LF_'ом, скоро вся эта кутерьма станет ненужной :punk: