[Amarok Script] реализация foobar2000 tagz для сохранения плейлиста

Страницы:  1
Ответить
 

Name_No

Top User 06

Стаж: 17 лет 7 месяцев

Сообщений: 55

Name_No · 09-Авг-08 00:57 (16 лет 3 месяца назад, ред. 13-Сен-08 13:10)

Вот, собственно, накалякал. На перле скрипт для амарока (если бы амарок поддерживал плагины - был бы плагин), который позволяет почти как в foobar2000 задать на синтаксисе tagz формат, в котором скопируется/сохранится плейлист. У скрипта есть GUI написаный на PerlQt, есть также выриант без GUI (в комплекте).
Использвать вариант с GUI просто: запустить скрипт (из амарока), появится окно, с полями ввода: в одном вводим описание, например
Код:
$ifequal(%list_index%,1,
'[spoiler="My playlist"]'$crlf())
'[b]'#%track%'[/b]' -
['[color=grey]'%artist% - [%album% - ]'[/color]']
%title%
'[b][[/b]'%length%'[b]][/b]'
$ifequal(%list_index%,%list_total%,
$crlf()'[/spoiler]')
во втором видим предпросмотр, например
Код:
[b]#05[/b] - [color=grey]U2 - U218 Singles - [/color]Vertigo [b][[/b]3:10[b]][/b]
Когда шаблон готов, нажимаем "Run script" и получам сразу в буфер обмена вот такой текст
Код:
[spoiler="My playlist"]
[b]#01[/b] - [color=grey]U2 - U218 Singles - [/color]Beautiful Day [b][[/b]4:05[b]][/b]
[b]#02[/b] - [color=grey]U2 - U218 Singles - [/color]I Still Haven't Found What I'm Looking For [b][[/b]4:37[b]][/b]
[b]#03[/b] - [color=grey]U2 - U218 Singles - [/color]Pride (In The Name Of Love) [b][[/b]3:49[b]][/b]
[b]#04[/b] - [color=grey]U2 - U218 Singles - [/color]With Or Without You [b][[/b]4:56[b]][/b]
[b]#05[/b] - [color=grey]U2 - U218 Singles - [/color]Vertigo [b][[/b]3:10[b]][/b]
[b]#06[/b] - [color=grey]U2 - U218 Singles - [/color]New Year's Day [b][[/b]4:18[b]][/b]
[b]#07[/b] - [color=grey]U2 - U218 Singles - [/color]Mysterious Ways [b][[/b]4:02[b]][/b]
[b]#08[/b] - [color=grey]U2 - U218 Singles - [/color]Stuck In A Moment You Can't Get Out Of [b][[/b]4:32[b]][/b]
[b]#09[/b] - [color=grey]U2 - U218 Singles - [/color]Where The Streets Have No Name [b][[/b]4:47[b]][/b]
[b]#10[/b] - [color=grey]U2 - U218 Singles - [/color]Sweetest Thing [b][[/b]3:01[b]][/b]
[b]#11[/b] - [color=grey]U2 - U218 Singles - [/color]Sunday Bloody Sunday [b][[/b]4:40[b]][/b]
[b]#12[/b] - [color=grey]U2 - U218 Singles - [/color]One [b][[/b]4:36[b]][/b]
[b]#13[/b] - [color=grey]U2 - U218 Singles - [/color]Desire [b][[/b]3:00[b]][/b]
[b]#14[/b] - [color=grey]U2 - U218 Singles - [/color]Walk On [b][[/b]4:29[b]][/b]
[b]#15[/b] - [color=grey]U2 - U218 Singles - [/color]Elevation [b][[/b]3:49[b]][/b]
[b]#16[/b] - [color=grey]U2 - U218 Singles - [/color]Sometimes You Can't Make It On Your Own [b][[/b]5:06[b]][/b]
[b]#18[/b] - [color=grey]U2 - U218 Singles - [/color]Window In The Skies [b][[/b]4:07[b]][/b]
[/spoiler]
что в будущем превращается в известное
My playlist
#01 - U2 - U218 Singles - Beautiful Day [4:05]
#02 - U2 - U218 Singles - I Still Haven't Found What I'm Looking For [4:37]
#03 - U2 - U218 Singles - Pride (In The Name Of Love) [3:49]
#04 - U2 - U218 Singles - With Or Without You [4:56]
#05 - U2 - U218 Singles - Vertigo [3:10]
#06 - U2 - U218 Singles - New Year's Day [4:18]
#07 - U2 - U218 Singles - Mysterious Ways [4:02]
#08 - U2 - U218 Singles - Stuck In A Moment You Can't Get Out Of [4:32]
#09 - U2 - U218 Singles - Where The Streets Have No Name [4:47]
#10 - U2 - U218 Singles - Sweetest Thing [3:01]
#11 - U2 - U218 Singles - Sunday Bloody Sunday [4:40]
#12 - U2 - U218 Singles - One [4:36]
#13 - U2 - U218 Singles - Desire [3:00]
#14 - U2 - U218 Singles - Walk On [4:29]
#15 - U2 - U218 Singles - Elevation [3:49]
#16 - U2 - U218 Singles - Sometimes You Can't Make It On Your Own [5:06]
#18 - U2 - U218 Singles - Window In The Skies [4:07]
Это один и вариантов, в комплекте есть примеры начиная от html заканчивая m3u. Ну, т.е. есть только примеры html, phpbb, m3u и wiki (table).
Справа 7 переключателей - это семь предустановок, которые можно менять и переименовывать по своему вкусу. На второй вкладке есть выбор сохранения в файл вместо буфера обмена - на случай если нет klipper'а или нужно-таки в файл. Убрал на вторую вкладку потому что редко нужно.
Кгопки внизу, по порядку:
'Run script' - выполняет, собственно, скрипт, сохраняет или копирует плйлист
'Save conf' - сохраняет то, что было введено в конфигурационный файл
'Ok' - сохраняет настройки и выходит. Скрипт не запускает.
'Cancel' - выходит без сохранения и выполнения чего бы то ни было.
Скриншоты:

Надесь, что у кого-нибудь из линуксоидов будет время потестить. Может кому и пригодится даже.
http://www.kde-apps.org/content/show.php?content=86497
P.S. для варианта без GUI все то же самое через конфиг, он появится в $HOME/.pltaf после первого запуска скрипта.
Обновление от 15.08.08:
улучшен интерфейс,
добавлен отлов ситуации с неустановленным PerlQt - показывается всплывашка в амароке
добавлена опция командной строки
см. описание на kde-apps.
[Профиль]  [ЛС] 

s-t

Стаж: 17 лет

Сообщений: 58


s-t · 10-Авг-08 18:41 (спустя 1 день 17 часов)

Большое спасибо, будем пробовать!
[Профиль]  [ЛС] 

s-t

Стаж: 17 лет

Сообщений: 58


s-t · 12-Авг-08 19:12 (спустя 2 дня)

У меня не заработало.. Amarok 1.4.9.1, debian lenny
Сценарий завершился с кодом ошибки: 2
Use of uninitialized value in split at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/pltaf.pl line 16.
Can't locate XML/Parser.pm in @INC (@INC contains: /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/lib /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/lib/tagz.pm line 15.
BEGIN failed--compilation aborted at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/lib/tagz.pm line 15.
Compilation failed in require at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/pltaf.pl line 35.
[Профиль]  [ЛС] 

x8Hive

Стаж: 16 лет 9 месяцев

Сообщений: 37

x8Hive · 12-Авг-08 22:15 (спустя 3 часа)

с ошибки явно видно что нужно доставить XML/Parser.pm модуль для перла - возможно поставить с репозитария.
[Профиль]  [ЛС] 

s-t

Стаж: 17 лет

Сообщений: 58


s-t · 13-Авг-08 06:13 (спустя 7 часов)

Утром сам разглядел. Правда теперь другое
Сценарий завершился с кодом ошибки: 9
Use of uninitialized value in split at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/config.pl line 16.
Variable "$pattrn" will not stay shared at (re_eval 2) line 2.
Variable "$pattrn" will not stay shared at (re_eval 3) line 2.
Variable "$pattrn" will not stay shared at (re_eval 4) line 2.
Variable "$parens" will not stay shared at (re_eval 5) line 2.
2008-08-13 11-07-25 -:- 'sort_content' -:- DEBUG_1:
playlist total count: 20 at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/config.pl line 46
--- No method to call for :
QApplication::new('Qt::Applic...')
at /usr/lib/perl5/Qt.pm line 464.

Вариант без гуя тоже не хочет рабить.
Сценарий завершился с кодом ошибки: 1
Use of uninitialized value in split at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/pltaf.pl line 16.
Variable "$pattrn" will not stay shared at (re_eval 2) line 2.
Variable "$pattrn" will not stay shared at (re_eval 3) line 2.
Variable "$pattrn" will not stay shared at (re_eval 4) line 2.
Variable "$parens" will not stay shared at (re_eval 5) line 2.
No such application: 'klipper'
Klipper not Running.
Klipper запущен. Видимо суть проблемы в том, что у меня kde 4.1
[Профиль]  [ЛС] 

Name_No

Top User 06

Стаж: 17 лет 7 месяцев

Сообщений: 55

Name_No · 13-Авг-08 08:34 (спустя 2 часа 21 мин., ред. 13-Авг-08 08:34)

s-t писал(а):
Утром сам разглядел. Правда теперь другое
Сценарий завершился с кодом ошибки: 9
--- No method to call for :
QApplication::new('Qt::Applic...')
at /usr/lib/perl5/Qt.pm line 464.

Qt тоже четвертые? Сожалею, байндинг к Qt3... С четвертыми запросто может не работать. Это у меня единственное пока предположение. Кстати, у меня в файле Qt.pm 464 строка выглядит так:
Код:
464         setInConstructor(0);
Так что я прямо-таки затрудняюсь. Вариант включения в дистриб скрипта байндингов pqt точно не будет работать.
Если есть что добавить к уже сказанному - добавьте, пожалуйста.
s-t писал(а):
Вариант без гуя тоже не хочет рабить.
Сценарий завершился с кодом ошибки: 1
Use of uninitialized value in split at /home/stanislav/.kde/share/apps/amarok/scripts/pltaf/pltaf.pl line 16.
Variable "$pattrn" will not stay shared at (re_eval 2) line 2.
Variable "$pattrn" will not stay shared at (re_eval 3) line 2.
Variable "$pattrn" will not stay shared at (re_eval 4) line 2.
Variable "$parens" will not stay shared at (re_eval 5) line 2.
No such application: 'klipper'
Klipper not Running.
Klipper запущен. Видимо суть проблемы в том, что у меня kde 4.1
На самом деле, это уже рабочие сообщения а не ошибки.
Да, проблема в KDE4. Больше скажу, в KDE4 нет DCOP'а, вместо него D-Bus. Поэтому скрипт не будет работать (пока) со вторым амароком. И не будет работать с клиппером от четвертых кед. Зато у вас есть последний шанс, он точно отработает (если амарок первый) - залезть в файл /home/stanislav/.pltaf и везде исправить to_klipper=1 на to_klipper=0. Будет сохранять в файл. Выбор, с какой из семи предустановок работать, происходит в самой предустановке: is_current=[1/0]
Остальные сообщения про line 16 и переменную $pattrn незначимые, убрал и перезалил скрипт.
[Профиль]  [ЛС] 

Name_No

Top User 06

Стаж: 17 лет 7 месяцев

Сообщений: 55

Name_No · 13-Сен-08 13:12 (спустя 1 месяц)

Обновление, думаю, последнее, если такой популярностью будет пользоваться. Потому что уже реализовано всё, что мне надо.
[Профиль]  [ЛС] 

John Johnov

Стаж: 15 лет 3 месяца

Сообщений: 32


John Johnov · 13-Сен-09 22:20 (спустя 1 год)

Закомментировал строчку:
Код:
use Qt::debug();
в файле Qt.pm и гуёвина заработала.
Подсказка здесь: http://osdir.com/ml/kde-perl/2009-08/msg00006.html
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error