Скрипты для 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
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 1 месяц

Сообщение #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 и наоборот.
Это не критично, если не загонятся по мелочам)))
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

Сообщение #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 для имени файла, подчистив все лишнее - убрать все кроме букв и цифр.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 1 месяц

Сообщение #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?
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

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

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

seriousstas, да какие там выявления))) Я половину таких фишек и себе хочу поставить в сборку, у меня ещё старая био от kgena_ua. Боюсь что у меня опять начнутся мозговые бури...
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

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

Сообщение #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
Репутация: 248
С нами: 10 лет 9 месяцев

Сообщение #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 выводится с именем файла:
Будет выводится. Просто зачем иметь такое название файла, со всякими точками скобками и т.д.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 1 месяц

Сообщение #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. Так как сделал отключаемую эту функцию, не всем пользователям нужны логотипы, так работает без ошибок, но всё же интересно.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

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

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

kgena_ua, Спасибо! Теперь буду знать, положил в копилку мудрости!
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

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

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

kgena_ua, Спасибо! С меня много :beer:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

AHAPXICT:С меня много
Когда буду в Киеве, у дочки в гостях.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 1 месяц

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

Так это же святое! :biggrin:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 6 месяцев

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

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

Скачать с ЯД

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

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

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

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

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

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

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

Пред.След.

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