Скрипты для foo_uie_wsh_panel_mod

Список разделов Аудиоплеер foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #1161 kgena_ua » 14.10.2016, 22:40

MC Web, для примера, дайте название, и в каком плейлисте.

Хочу поделиться файлами png, может кому пригодится.
Безымянный2.jpg

Безымянный1.jpg

http://rgho.st/7hG5bpRdB
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1162 AHAPXICT » 15.10.2016, 09:06

kgena_ua, у меня к вам вопрос по этой же теме. Я так и не разобрался в скрипте как можно увеличить минимальное количество символов для определения нужного названия интернет станции. Если есть, к примеру, сеть радиостанций и одна заглавная имеет короткое название, то другие картинки с более длинными названиями не хочет показывать. Пришлось пойти на хитрость и короткие названия по сокращать ещё на один символ.
Пример: Radio Caroline(отрезать е), Radio Caroline 259 Gold - Live from Breskens - Holland s1, Radio Caroline Gold Europe
Radio ROKS(отрезать S), Radio ROKS Hard'n'Heavy, Radio ROKS Ballads и т.д.
Как можно сделать к примеру как в PSS или ELP? Настроил себе отображение в ELP playlist стандартным перебором $replace(%title%,*,,|,,\,,:,,",,<,,>,,?,,/,), но тогда если все картинки показывает WSH не показывает ELP и наоборот.
Это не критично, если не загонятся по мелочам)))
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1163 kgena_ua » 15.10.2016, 12:58

AHAPXICT,
В идеале название файла с логотипом должно полностью соответствовать названию станции, или хотя-бы иметь в названии все буквы и цифры (если есть).

Для примера, есть такая станция BRITAIN RADIO
%title% выдает такое:
.......... ((BRITAIN RADIO 355 )) ............. Caroline, BIG L, RNI, Cruisin, 355, 390,

имя файла должно быть таким:
BRITAIN RADIO 355 Caroline BIG L RN Cruisin 355 390.png

и сравнивать нужно не через match, а через ==.
Код: Выделить всё
            var file = files[i].replace(/.jpg|.jpeg|.png|.gif|.bmp|.tiff/g,'').replace(/[^a-zA-Z0-9а-яА-я]/g,'');
            var tfname = tf[j].replace(/[^a-zA-Z0-9а-яА-я]/g,'');
            if (tfname.toLowerCase() == file) file_name = files[i];

Тогда можно использовать таки названия файлов с логотипами:
Radio ROKS
Radio ROKS Hard'n'Heavy
Radio ROKS Ballads
и т.д.

Для удобства редактирования имени файла можно сделать такое меню:
Код: Выделить всё
MF_ENABLED = 0x00000000;   
MF_GRAYED = 0x00000001;
MF_SEPARATOR = 0x00000800;

htmlfile = new ActiveXObject('htmlfile');
var clipboardData = "";

function on_mouse_rbtn_up(x, y){
    var _menu = window.CreatePopupMenu();
   
    _menu.AppendMenuItem(MF_ENABLED, 1, "Сlipboard data");
   
    //_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    //_menu.AppendMenuItem(MF_ENABLED, 10, "Reload");
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_ENABLED, 20, "Properties");
    _menu.AppendMenuItem(MF_ENABLED, 30, "Configure ...");

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
    case 1:
        htmlfile.parentWindow.clipboardData.setData("text", title);
        break;
    case 10:   
        //window.Reload();   
        //break;   
    case 20:
        window.ShowProperties();   
        break;           
    case 30:
        window.ShowConfigure();   
        break;           
    }
    _menu.Dispose();
    return true;
}   
т.е. при нажатии на пункт меню "Сlipboard data" сохраняем в буфере название радиостанции (из %title%) а затем CTRL + V для имени файла, подчистив все лишнее - убрать все кроме букв и цифр.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1164 AHAPXICT » 15.10.2016, 14:03

kgena_ua, я дико извиняюсь что сразу толком всё не объяснил как надо. Мне теперь эти части кода с переменными не совсем понятны :oops: . Я когда делал отображение лого, то взял ваш код и полностью перенёс его в скрипт "Cover Panel" включая "script.js" и ещё добавил часть кода с биографии для создания папки для лого по выбору из меню свойства. Уже и не помню что там переделывал.
Какая картина получается. Названия для логотипов интернет радио беру из меню свойства и сохраняю для картинки, сама система убирает лишнее из названия. Вот как на вашем примере: Radio Monique 963 Gold / Radio Caroline 319 Gold . The Perfect Mix from Breskens - Holland s1
меняет на Radio Monique 963 Gold Radio Caroline 319 Gold . The Perfect Mix from Breskens - Holland s1.png
Это для того что бы названия понимал ELP Playlist , с ним вопросов нет.
Вот теперь не знаю как прицепить без match с == что то не получается.
Вот часть кода из "Cover Panel" которая отвечает за логотипы.
Код: Выделить всё
var fso = new ActiveXObject("Scripting.FileSystemObject");
var radio_logo = window.GetProperty("Radio Logos: on/off", false);
var dir_name = fb.ProfilePath + "\\Radio Logos\\";
var dir_name_false = fb.ProfilePath + "\\themes\\DarkOne_v4.0\\Images\\";
   
    if (radio_logo){
   
    if(!fso.FolderExists(dir_name)) {fso.CreateFolder(dir_name)};

var file_name, g_img, files = [];
var path = "", title = "";

function  getRadioLogImage() {
    path = fb.Titleformat("$directory_path(%path%)").EvalWithMetadb(metadb);
    title = fb.Titleformat("[%title%],[%filename%]").EvalWithMetadb(metadb).replace(' ','',':','');
   
    file_name = "";
    get_files_from_dir();
   
    for (var i = 0; i < files.length; i++){
        var file = files[i].replace(/.jpg|.jpeg|.png|.gif|.bmp|.tiff/g,'').replace(' ','');
        title = title.replace(/[:\/+()]/g,'');
        if (title.toLowerCase(title).match(file) != null) file_name = files[i];
    }
    window.Repaint();
}

function get_files_from_dir() {
    files = [];
    var e = radio_logo? new Enumerator( fso.GetFolder(dir_name).Files ) : new Enumerator( fso.GetFolder(dir_name_false).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        name = name.toLowerCase(name);
        files.push(name);
        e.moveNext();
    }
}
}
P.S. Вспомнил ещё WSH не понимает квадратные скобки в названиях([]). Это не служебные символы для WSH?
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1165 seriousstas » 15.10.2016, 17:06

Парочка исправлений (Спасибо AHAPXICT за выявления) :
1.Сломал-исправил работу Аспект (Align) из меню .
2.И при закрытии текста (крестиком) в режиме ("с кнопками")
основные кнопки теперь не появляются .
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 98
С нами: 4 года 7 месяцев

Сообщение #1166 AHAPXICT » 15.10.2016, 17:13

seriousstas, да какие там выявления))) Я половину таких фишек и себе хочу поставить в сборку, у меня ещё старая био от kgena_ua. Боюсь что у меня опять начнутся мозговые бури...
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1167 seriousstas » 15.10.2016, 17:36

опять начнутся мозговые бури..
А как без этого ))) , но обновится стоит - последние версии работают стабильно .
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 98
С нами: 4 года 7 месяцев

Сообщение #1168 MC Web » 15.10.2016, 18:17

kgena_ua , спасибо большое. :beer:

Посмотрел последние изменения:

Код: Выделить всё
            var file = files[i].replace(/.jpg|.jpeg|.png|.gif|.bmp|.tiff/g,'').replace(/[^a-zA-Z0-9а-яА-я]/g,'');
            var tfname = tf[j].replace(/[^a-zA-Z0-9а-яА-я]/g,'');
            if (tfname.toLowerCase() == file) file_name = files[i];

вставил себе, все работает.

Для информации, у меня логотип станции BRITAIN RADIO выводится с именем файла:

.......... ((BRITAIN RADIO 355 )) ............. Caroline, BIG L, RNI, Cruisin, 355, 390, .png
MC Web
Гуру
Аватара
Репутация: 170
С нами: 6 лет

Сообщение #1169 kgena_ua » 16.10.2016, 11:39

AHAPXICT,
Код: Выделить всё
function  getRadioLogImage() {
    path = fb.Titleformat("$directory_path(%path%)").EvalWithMetadb(metadb);
    title = fb.Titleformat("[%title%]").EvalWithMetadb(metadb);

    file_name = "";
    get_files_from_dir();
   
    for (var i = 0; i < files.length; i++){
        var file = files[i].replace(/.jpg|.jpeg|.png|.gif|.bmp|.tiff/g,'').replace(/[^a-zA-Z0-9а-яА-я]/g,'');
        var tfname = title.replace(/[^a-zA-Z0-9а-яА-я]/g,'');
        if (tfname.toLowerCase() == file) file_name = files[i];
    }
    window.Repaint();
}
И у меня нет [%filename%] в строке
title = fb.Titleformat("[%title%],[%filename%]").EvalWithMetadb(metadb).

и .replace(' ','',':',''); , наверное, можно убрать. Я не совсем понимаю как это работает.
Насколько я знаю, то синтаксис такой:
.replace( меняем это , на это);

Добавлено спустя 54 минуты 7 секунд:
MC Web писал(а):у меня логотип станции BRITAIN RADIO выводится с именем файла:
Будет выводится. Просто зачем иметь такое название файла, со всякими точками скобками и т.д.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1170 AHAPXICT » 16.10.2016, 13:25

kgena_ua, Спасибо! :beer: Работает! Я правда не понимаю что это за символы для перебора(^a-zA-Z0-9а-яА-я), но это не важно ,самое главное пашет!
Я знаю как работает replace, но думал что это нужно, и %filename% считал что тоже необходим для работы. Эти строки взяты из вашего первого скрипта Radio Logo Script.js за 2015 год. Для меня наличие %filename% объяснялось тем что некоторые станции имеют разные названия в Metadata: Radio ROKS, Radio ROKS Hard'n'Heavy, Radio ROKS Beatles и Properties: RadioROKS, RadioROKS_HardnHeavy, RadioROKS_Beatles. И вроде бы оно как то работало. Если поставить названия для картинок из Metadata, то все станции отображались одной заглавной картинкой Radio ROKS, то есть самое короткое название, а если подписать картинки названиями из Properties, то все станции группы отображались со своими логотипами. Вот по сей день я так и думал.

Совсем забыл! Для ActiveXObject подсунул фейковую папку, а иначе он ругается если отсутствует или удалена папка Radio Logos. Так как сделал отключаемую эту функцию, не всем пользователям нужны логотипы, так работает без ошибок, но всё же интересно.
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1171 kgena_ua » 16.10.2016, 13:42

AHAPXICT, если честно, то я не помню зачем вставил тогда %filename% :smile: , может и надо :smile:.
Код: Выделить всё
replace(/[^a-zA-Z0-9а-яА-я]/g,'');
это замена всего кроме (^) букв (a-zA-Zа-яА-я) и цифр (0-9) на "". На случай если, для примера, в имени файла лишний пробел и т.д.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1172 AHAPXICT » 16.10.2016, 13:48

kgena_ua, Спасибо! Теперь буду знать, положил в копилку мудрости!
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1173 kgena_ua » 16.10.2016, 13:52

AHAPXICT писал(а):а иначе он ругается если отсутствует или удалена папка Radio Logos
Можно добавить строку
Код: Выделить всё
function getRadioLogImage() {
    if(!fso.FolderExists(dir_name)) return;
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1174 AHAPXICT » 16.10.2016, 14:07

kgena_ua, Спасибо! С меня много :beer:
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1175 kgena_ua » 16.10.2016, 14:14

AHAPXICT писал(а):С меня много
Когда буду в Киеве, у дочки в гостях.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 55
Откуда: Украина, Днепр
Репутация: 452
С нами: 6 лет 5 месяцев

Сообщение #1176 AHAPXICT » 16.10.2016, 15:12

Так это же святое! :biggrin:
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 48
Откуда: Киев
Репутация: 176
С нами: 5 лет 10 месяцев

Сообщение #1177 seriousstas » 17.10.2016, 01:41

В плейлисте добавил два новых пункта :
Copy[Loved Tracks]To Folder
Выдеяем трек и при отметке "сердечком" будет скопирован в папку (по умолчанию d:\Loved Tracks\) и
Track Number (выбор отображения нумерации) .
Прошлые изменения :
тут
и тут

Скачать с ЯД

наконец обновил сборку ..
Вложения
pl3.jpg
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 98
С нами: 4 года 7 месяцев

Сообщение #1178 seriousstas » 17.10.2016, 14:47

AHAPXICT
Ещё заметил, если срабатывало автопереключение картинки ,
например - стоит артист, а при отсутствии переключает на обложку - не работал цикл картинок по времени .
Исправил (обновил архив) , проверь по-возможности, как вообще работает автопереключение - это была самая сложная задачка :)
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 98
С нами: 4 года 7 месяцев

Сообщение #1179 MC Web » 17.10.2016, 15:11

seriousstas, цикл / ручное переключение исполнителя не всегда происходит уже давно.
Похоже kgena_ua где то пропустил или Last.fm чудит. Переключаешь трек / исполнителя или переход на обложки и обратно, все нормализуется. Главное нет определенной закономерности, то все нормально, то глючит.
MC Web
Гуру
Аватара
Репутация: 170
С нами: 6 лет

Сообщение #1180 seriousstas » 17.10.2016, 15:21

ручное переключение исполнителя не всегда происходит
Тут не замечал - надо поклацать .. ,
а вот с циклом это был 100 % мой недочет . При автопереключении не работал совсем ..
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 98
С нами: 4 года 7 месяцев

Пред.След.

Вернуться в Секреты foobar2000