- Код: выделить все
// Vars
$puts(filen,%_filename%)
// заносим в переменную имя файла
$puts(myfilename,$replace($get(filen),' - ','-','- ','-',' -','-','_-_','-','-_','-','_-','-','%20-%20','-','-%20','-','%20-','-'))
// убираем лишние символы рядом с тире и заносим результат в переменную myfilename
$puts(myartist,$strchr($get(myfilename),-))
// получаем порядковый номер тире в имени файла и заносим в переменную myartist
$puts(fileartist,$left($get(myfilename),$sub($get(myartist),1)))
// вычитаем еденицу из myartist и, используя полученное число, берем столько знаков слева - это и будет исполнитель
$puts(mytitle,$sub($len($get(myfilename)),$get(myartist)))
// вычитаем из myfilename (кол-во сомволов в имени) myartist (порядковый номер тире) и заносим ответ в mytitle
$puts(filetitle,$right($get(myfilename),$get(mytitle)))
// берем зи myfilename mytitle сиволов справа - названии композиции
// Output
%list_index%'. '
$if2(%artist%,$caps($replace($get(fileartist),'_',' ','%20',' ')))
// если нет тэга с исполнителем, показывает содержимое переменной fileartist, изменяя соотвествующие знаки на пробелы и делая первую букву каждого слово с заглавной
' - '
// следующий код я долго выводил, фишка в том, что фубар всегда выводит значение переменной %title%, даже если нет такого тэга в файле (если его нету, то он возращает имя файла всместо вопросительного знака, как происходит с другими тегами при их отсутствии). Поэтому бесполезно использовать функцию $if2(%title%,$caps($replace($get(filetitle),'_',' ','%20',' ')))) - фубар всегда будет отображать ПОЛНОЕ имя файла, если нет тэга. Причем отображать его в неизмененном виде, что нас не устаивает. Вообщем, кто знает - тот поймет.
$if($strcmp(%title%,$get(filen)),
// проверяем равно ли поле %title% имени файла, если нет - то файл скорее всего имеет тэг
$if($strcmp(%title%,$caps($replace($get(filetitle),'_',' ','%20',' '))),
// сравниваем %title% и полученное название композиции с замененными пробелами
%title%, // если одинаковы - возвращает %title%
$caps($replace($get(filetitle),'_',' ','%20',' '))),
// если %title% не равно полученному названию композиции, то название с замененными пробелами возвращается
%title%)
// если поле %title% не равно имени файла, то возвращает %title%
Код без коментариев:
- Код: выделить все
// Vars
$puts(filen,%_filename%)
$puts(myfilename,$replace($get(filen),' - ','-','- ','-',' -','-','_-_','-','-_','-','_-','-','%20-%20','-','-%20','-','%20-','-'))
$puts(myartist,$strchr($get(myfilename),-))
$puts(fileartist,$left($get(myfilename),$sub($get(myartist),1)))
$puts(mytitle,$sub($len($get(myfilename)),$get(myartist)))
$puts(filetitle,$right($get(myfilename),$get(mytitle)))
// Output
%list_index%'. '
$if2(%artist%,$caps($replace($get(fileartist),'_',' ','%20',' ')))
' - '
$if($strcmp(%title%,$get(filen)),
$if($strcmp(%title%,$caps($replace($get(filetitle),'_',' ','%20',' '))),
%title%,
$caps($replace($get(filetitle),'_',' ','%20',' '))),
%title%)
Данный код можно использовать спокойно, т.к. если в файле есть тэги - фубар берет данные из тэгов (естественно, предусмотрено).
Примеры:
Файл: beastie_boys_-_Body_movin_(fatboy_slim_remix).mp3 [без тэгов]
Фубар возвращает: Beastie Boys - Body Movin (Fatboy Slim Remix) [причем исполнитель и название в разных переменных - это я использую в колумнсах - каждому названию колонки соотвествует своя переменная. получается вид, будто бы в файле есть тэги +)]
Файл: svenson_&%20Gielen-Twisted%20(Original_MIX).mp3
Фубар возвращает: Svenson & Gielen - Twisted (Original Mix)
Ну и т.д...
Не продумано во второй строке кода, что ситуация с тире может быть вот такая '%20-_' =) Но это уж сосем мелочи, добавить всегда можно.
Хотелось бы добавить поддержку номеров трэкев двух видов:
01. Svenson & Gielen - Twisted (Original Mix)
[01] Svenson & Gielen - Twisted (Original Mix)
Первый сделать легко, а вот второй сложнее. Если кто знает - подскажите как. Ну а если кому-то не лень, можете помочь усовершенствовать весь код +)