Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #1621 Aliado_71 » 26.01.2017, 21:48

kgena_ua, все разобрался, мой косяк, кнопку паузы неправильно переименовал вместо _ поставил - :oops:
Такой вопросик: кнопки нормально масштабируются по горизонтали а вот по вертикали поджимаются к верхнему краю, можно это как то исправить? Что бы была возможность регулировать как ширину так и высоту панели.
Спойлер
Изображение

Изображение

Изображение

Ну и как пожелание на случай если будете развивать этот скрипт, добавить несколько пустых кнопок на которые можно было бы навесить свои команды.
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1622 AHAPXICT » 26.01.2017, 21:57

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

Сообщение #1623 Aliado_71 » 26.01.2017, 22:27

kgena_ua, c масштабированием по высоте разобрался, а вот добавить другие кнопки пока не получается :insane:
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1624 kgena_ua » 27.01.2017, 13:41

Aliado_71:вертикали поджимаются к верхнему краю
Aliado_71, там была привязка к координате стр.21 var b_y = 5;
можно сделать так:
стр.21
Код: Выделить всё
var b_y;
и заменить функцию function button_dim() на
Код: Выделить всё
function button_dim() {
    b_x = [];
    bw = ww / (b + 1);
    for (var i = 1; i <= b; i++) {
        b_x.push(Math.round( bw * i - b_w / 2 ));
    }
    b_y = (wh - b_w) / 2;
}
Добавить кнопки просто:
1. Указать количество кнопок, стр.19 var b = 6;
2. Прописать пути к изображениям в массивах var btn, var btn_on и т.д. Например так
Код: Выделить всё
var btn = [
    gdi.Image(img_path + "stop.png"),
    gdi.Image(img_path + "pause.png"),
    gdi.Image(img_path + "previous.png"),
    gdi.Image(img_path + "play.png"),
    gdi.Image(img_path + "next.png"),
    gdi.Image(img_path + "н о в а я   к н о п к а.png")
];
и соблюдаем синтаксис - последняя строка без запятой.
В function on_mouse_lbtn_up(x, y) добавляем
Код: Выделить всё
    if (mouse_on_b(x, y) == 5) {и что будем делать};


строка примерно 235
AHAPXICT, вообще уж если так, то желательно добавить переменную path, добавить
Код: Выделить всё
path = fb.Titleformat("%path%").EvalWithMetadb(metadb);
в function on_metadb_changed()
и изменить
Код: Выделить всё
function get_embedded_covers() {      //0 - front cover, 1 - back cover, 2 - disc, 3 - icon, 4 - artist   
    embedded = [];
    embedded_p_name = [];
    if ( metadb ) {
        for (var i = 0; i < 5; i++) {
            if (path.indexOf('://') >= 0 || path.indexOf('www') >= 0 || path.indexOf("youtube") >= 0 || path.indexOf("video") >= 0 || path.indexOf("vimeo") >= 0) {
                var temp = utils.GetAlbumArtV2(metadb, i);
            } else{
                var temp = utils.GetAlbumArtEmbedded(metadb.RawPath, i);
            }
            if (temp) embedded.push(temp);
            if (temp) embedded_p_name.push(attached_p_name[i]);
        }
    }
}
в if (path.indexOf....... может и другие условия добавить
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #1625 Aliado_71 » 27.01.2017, 16:15

kgena_ua, Большое спасибо :beer: Все получилось, сам делал также но допустил ошибки в синтаксисе, запятую не убрал и тд :kettle:
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1626 AHAPXICT » 27.01.2017, 21:02

kgena_ua, приветствую! Я так понял это вы не мне адресовали? До нового года спрашивал у вас по этой теме, вот и сказал спасибо.
"vimeo" - это не из моей оперы :smile:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #1627 Aliado_71 » 28.01.2017, 12:12

Знающие подскажите как правильно написать команду для кнопки панели WHS что бы открывался каталог с выделенным в плейлисте альбомом а не с тем который играет. Из контекстного меню открывает, в тулбаре для кнопок можно назначить открывать выделенные, а вот для панели WHS не получается.
Сейчас так и открываются только что играет.
Код: Выделить всё
{fb.RunContextCommand("Open containing folder")};
Нужно как то добавить Item group - active selection, как это сделать?
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1628 AHAPXICT » 28.01.2017, 20:14

Aliado_71, приветствую. Как я понимаю для того чтобы сделать такую кнопку одной команды недостаточно. Посмотри в скриптах kgena_ua био или Get Covers (Artwork) что нужно для функции "Follow selected track"
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #1629 Aliado_71 » 28.01.2017, 22:14

AHAPXICT, Спасибо брат что даешь удочку а не рыбу!. Но пока не получается, понимаю что близко, но нет. :help:
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1630 AHAPXICT » 29.01.2017, 00:56

Aliado_71, хорошо сказал :beer: Но я не удочку давал, а говорил как в старом "Ералаш" : Здесь рыбы нет! :smile: Может я ошибаюсь, но для такой кнопки писать скрипт размером приблизительно пятьдесят строк со всеми "metadb" не правильно, когда это можно сделать по одному клику из контекстного меню или ещё проще назначить "хоткей" (к примеру Ctrl + D : Open containing folder) и потом только курсором трек отмечать да кнопки давить и папки открывать какие нужно)))
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #1631 seriousstas » 29.01.2017, 06:49

AHAPXICT
Привет , как жизь ? :)
Хотел у Тебя спросить , почему так быстро радио-станции дохнут .. Одни живут год и более , а другие пару недель и нужно новый URL искать ..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 10 месяцев

Сообщение #1632 vladj » 29.01.2017, 12:35

Они меняют плейлисты когда сервера перегружены из-за таких как мы. Ну а к кому реже обращаются,
те выживают и со старыми адресами. Часто меняет например аудиофил. Вообще-то они предпочитают
что-бы их слушали прямо с сайта , но быстро находятся умельцы, делают очередной плейлист, который
довольно быстро распространяется, они снова меняют и так по кругу. Владелец 101 ру, который купил
сайт несколько лет назад вообще строго относится к тому, что-бы слушали только напрямик с сайта.
Немножко рекламы и вот они уже не только содержат сайт, но и себе зарабатывают.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 10 месяцев

Сообщение #1633 AHAPXICT » 30.01.2017, 06:38

seriousstas, приветствую :beer: Ну как жизь... Да как на морском дне, не течений не движений)))
Да в топку такие радио станции вместе с обложками. vladj, не согласен с вами по "аудиофил" - нечего они не меняют, да и сами плейлисты выкладывают для скачивания, а с остальным то да. К тому же в интернете достаточно альтруистов которые и на халяву вещают и без рекламы)))

С нового года не могу себя заставить заниматься плеером, до нового года написал километровые скрипты для PSS для дисплей панелей для переключения цветов по нажатии на кнопку, ну и другие бесполезные функции. Не нравится мне всё это, когда в сплиттере появляются 7 сикбаров, 7 пикметров, 7 спектров - лажово это, хоть и работает как часы.

kgena_ua, наконец-то добрался и проверил ваш апдейт для "Get Covers (Artwork)" . Получается kutuzof так и остался не услышанным. Для групп радиостанций не обновляет обложку что с апдейтом что без него, пока не нажмёшь "reload", так как путь у них (почти) одинаковый, а я так и не понял как это работает.

kutuzof, обложки для RADIO RECORD сам делал или из интернета скачал CD cover? Если что то поделись, сам навряд ли соберусь сделать, но это такое. Если будет желание то я тебе отправлю .fcl тестовый с новыми заморочками. Может часть от того что там наделал стоит в новую версию перенести.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #1634 Aliado_71 » 30.01.2017, 13:31

Ошибся темой, сорри :oops:
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1635 kgena_ua » 30.01.2017, 14:16

AHAPXICT, привет.
По обложкам для радио.
В скрипте были изменения такие:
если радио, то работает utils.GetAlbumArtV2. Эта штука ищет обложка по правилам, указанным в Preferences - Display, а именно ищет файл с названием %title%. Т.е. если файл найден, то и отображается.
У меня поиск такой:
Код: Выделить всё
$if(%length%,,E:\foobar2000 may be\radio Logos\$trim($replace($replace($replace($replace($replace(%title%,*, ,|, ,\, ,:, ,", ,<, ,>, ,-, ,?, ,/, ,., ,'(', ,')', ,',', ,_, ,!, ,),     , ),    , ),   , ),  , )).*)

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

Если не находит файл, нужно проверить, "что ищет" Ваш запрос.
В PSS я делал так, через $drawtext отобразил, что делает мой поиск
$drawtext($trim($replace($replace($replace($replace($replace(%title%,*, ,|, ,\, ,:, ,", ,<, ,>, ,-, ,?, ,/, ,., ,'(', ,')', ,',', ,_, ,!, ,), , ), , ), , ), , )) ,1,1,,,255-255-200,)
т.е. в реальном времени видно какой файл ищется. И если не находит, то:
1. Имя файла неправильное.
2. Править скрипт поиска.
3. Третьего нет. :smile:
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #1636 AHAPXICT » 30.01.2017, 16:31

Вот так всегда, кто заказывал обложки для радио? А почему теперь все шишки на меня сыплются? (риторический вопрос)

kgena_ua, вы не совсем поняли, речь не в параметрах поиска.
AHAPXICT:Для групп радиостанций не обновляет обложку
Это группа станций(пример: RADIO RECORD, Radio ROKS и т.д.) с одинаковыми адресами Folder Name : http://online-radioroks2.tavrmedia.ua одинаковый у всех станций Radio ROKS. Причём если эти станции смешать с другими в плейлисте то это не заметно. Вот о чём и писал kutuzof.
Насколько я понял скрипт обращается к metadb если отличается путь %path%, в противном случае остаётся обложка от предыдущей станции.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #1637 kgena_ua » 30.01.2017, 18:22

kutuzof, а можно мне этот плейлист. И изображения.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #1638 seriousstas » 30.01.2017, 21:07

AHAPXICT

Да в топку такие радио станции вместе с обложками
Точно! - выбор ведь есть .
Для групп радиостанций не обновляет обложку что с апдейтом что без него
из моей сборки выковыривал ? долго не ганял , но вроде работает, я чуть изменил вызов utils.GetAlbumArtV2 ..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 10 месяцев

Сообщение #1639 Aliado_71 » 30.01.2017, 21:27

kgena_ua, Сегодня начал делать плейлист радио станции HQ Radio и заметил что обложки не переключаются (только reload), в панели сover flow таких проблем нет, вот все необходимые скрипты и плейлист, если нетрудно посмотрите в чем может быть дело. Файлы здесь

Пример: играет одно показывает другое

Изображение
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 9 месяцев

Сообщение #1640 kgena_ua » 30.01.2017, 22:53

В принципе все понятно. Не дает переключаться
Код: Выделить всё
 if (dir_name != old_dir_name || album != old_album){
Пока не знаю.
Вот временно :smile:
Код: Выделить всё
// ==PREPROCESSOR==
// @name "Radio Logo"
// @author "kgena_ua"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var ww,wh;

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_WORD_ELLIPSIS = 0x00040000;

MF_ENABLED = 0x00000000;   
MF_GRAYED = 0x00000001;
MF_SEPARATOR = 0x00000800;

var font_name = window.GetProperty(" font name", "Arial");
var font_size = window.GetProperty(" font size", 12);
var font_style = window.GetProperty(" font style", 0);

var font, text_row_heigh;
get_font();

function get_font(){
    font = gdi.Font(font_name, font_size, font_style);


ColorTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};

ColorTypeDUI = {
   text: 0,
   background: 1,
   highlight: 2,
   selection: 3
}

function get_color(){   
    if (window.InstanceType == 0){
        bgcolor = window.GetColorCUI(ColorTypeCUI.background);
        a_color = window.GetColorCUI(ColorTypeCUI.text);
        b_color = window.GetColorCUI(ColorTypeCUI.inactive_selection_text);
    } else if (window.InstanceType == 1) {
        bgcolor = window.GetColorDUI(ColorTypeDUI.background);
        a_color = window.GetColorDUI(ColorTypeDUI.text);
        b_color = window.GetColorDUI(ColorTypeDUI.highlight);
    }
    window.Repaint();
}

get_color();

function on_colors_changed(){
    get_color();
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
htmlfile = new ActiveXObject('htmlfile');
var clipboardData = "";

var logo_dir_name = window.GetProperty(" logo dir name",".\\radio Logos\\");
var default_img_path = window.GetProperty(" default img path",".\\maybe\\textures\\nocover\\nocover.png");
var default_img = window.GetProperty(" default img", false);
var default_img_transparent = window.GetProperty(" default img transparent (0-255)", 100);

var fade_effect = window.GetProperty(" fade effect", false);
var fade_step = window.GetProperty("fade step", 25);
var fader = 255;

String.prototype.repeat = function(n) {
    return new Array(n + 1).join(this);
}

window.SetProperty(" - user:", "");
if (window.GetProperty(" - user:") != "" ) window.SetProperty(" - user:", "");
window.SetProperty("-".repeat(50), "");
if (window.GetProperty("-".repeat(50)) != "" ) window.SetProperty("-".repeat(50), "");

var g_img = null;
var logo_file_name, old_name, logo_files = [];
var path, title, itle_p, artist, genre;

var selection_mode = window.GetProperty("selection mode", 0);
var metadb;
on_item_focus_change();

function on_paint(gr){
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);
    text_row_height = gr.CalcTextHeight("text", font);
   
    if (g_img){
        d_h = wh - text_row_height * 6;
        var scale_w = ww / g_img.Width;
        var scale_h = d_h / g_img.Height;
        var scale = Math.min(scale_w, scale_h);
        var pos_x = 0;
        var pos_y = 0;

        if (scale_w < scale_h) pos_y = (d_h - g_img.Height * scale) / 2;
        else if (scale_w > scale_h) pos_x = (ww - g_img.Width * scale) / 2;

        gr.DrawImage(g_img, pos_x, pos_y, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height, 0 , fader);
    }

    if (path.indexOf('://') >= 0){
        gr.GdiDrawText( title_p, font, b_color, 0, wh - (text_row_height * 4) - 10, ww, wh, DT_CENTER | DT_WORD_ELLIPSIS );
        gr.GdiDrawText( artist, font, b_color, 0, wh - (text_row_height * 3) - 10, ww, wh, DT_CENTER | DT_WORD_ELLIPSIS );
        gr.GdiDrawText( title, font, a_color, 0, wh - (text_row_height * 2) - 10, ww, wh, DT_CENTER | DT_WORD_ELLIPSIS );
        gr.GdiDrawText( genre, font, a_color, 0, wh - text_row_height - 10, ww, wh, DT_CENTER | DT_WORD_ELLIPSIS );
    }

    gr.GdiDrawText( "", font, b_color, 10, 10, ww - 20, wh, DT_LEFT | DT_WORD_ELLIPSIS );

}   

function get_logo_Image() {
    if(!fso.FolderExists(logo_dir_name)) return;
    logo_file_name = "";
    get_logo_files_from_dir();
   
    for (var i = 0; i < logo_files.length; i++){
        var file = logo_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) logo_file_name = logo_files[i];
    }
    next_image();
}

function get_logo_files_from_dir() {
    logo_files = [];
    var e = new Enumerator( fso.GetFolder(logo_dir_name).files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        name = name.toLowerCase();
        logo_files.push(name);
        e.moveNext();
    }
}

function on_playback_new_track(metadb) {     
    on_item_focus_change();    
}   

function on_selection_changed(metadb) {   
    on_item_focus_change();   
}

function on_playlist_switch() {
    on_item_focus_change();
}

function on_item_focus_change() {   
    switch (selection_mode) {
    case 0:
        metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();   
        break;   
    case 1:   
        metadb = fb.GetFocusItem();
        break;   
    } 
   
    if (metadb) on_metadb_changed();   
}

function on_metadb_changed(){
    if (!metadb) return; 
    path = fb.Titleformat("$directory_path(%path%)").EvalWithMetadb(metadb);
    title = fb.Titleformat("[%title%]").EvalWithMetadb(metadb);
    title_p = fb.Titleformat("[%title%]").Eval();
    artist = fb.Titleformat("[%artist%]").Eval();
    genre = fb.Titleformat("[%genre%]").EvalWithMetadb(metadb);
    get_logo_Image();
    window.Repaint();
}

function on_playback_stop() {
    on_item_focus_change();
}

function on_size(){
    ww = window.Width;   
    wh = window.Height;
}

function next_image(){
    if (logo_file_name != old_name){
        if (g_img) g_img.Dispose();
        fader = fade_effect ? 0 : 255;
        g_img = gdi.Image(logo_dir_name + logo_file_name);
        if (g_img && fade_effect) fader_timer();
        old_name = logo_file_name;
    }
   
    if (!g_img && default_img) {
        g_img = gdi.Image(default_img_path);
        fader = default_img_transparent;
    }
}

var ftimer;

function fader_timer(){
    fader = 0;
    ftimer && window.ClearInterval(ftimer);
    ftimer = window.SetInterval(function() {
        fader = fader + fade_step;
        if (fader >= 255) {
            fader= 255;
            window.ClearInterval(ftimer);
        }
        window.Repaint();
    }, 40 ); //42
}

function on_mouse_rbtn_up(x, y){
    var _menu = window.CreatePopupMenu();
   
    _menu.AppendMenuItem(MF_ENABLED, 10, "Prefer now playing");   
    _menu.AppendMenuItem(MF_ENABLED, 11, "Follow selected track");   
    _menu.CheckMenuRadioItem(10, 11 , selection_mode + 10);   

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_ENABLED, 50, "Copy filename to clipboard");
   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_ENABLED, 100, "Reload");
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_ENABLED, 200, "Properties");
    _menu.AppendMenuItem(MF_ENABLED, 300, "Configure ...");

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

    switch (ret) {
    case 10:
        selection_mode = 0;
        window.SetProperty("selection mode", selection_mode);
        on_item_focus_change();
        break;
    case 11:
        selection_mode = 1;
        window.SetProperty("selection mode", selection_mode);
        on_item_focus_change();
        break;
    case 50:
        htmlfile.parentWindow.clipboardData.setData("text", title.replace(/[^a-zA-Z0-9а-яА-Я\s-]/g,'').replace(/\s+/g,' ').replace(/^\s+|\s+$/g,""));
        break;
    case 100:   
        try {
            window.Reload();   
        } catch(e) {};
        break;   
    case 200:
        window.ShowProperties();   
        break;           
    case 300:
        window.ShowConfigure();   
        break;           
    }
    _menu.Dispose();
    return true;
}   



/*
var tf = [];

function get_logo_Image() {
    if(!fso.FolderExists(l_dir_name)) return;
    path = fb.Titleformat("$directory_path(%path%)").EvalWithMetadb(metadb);
    //title = fb.Titleformat("[%artist%],[%album artist%],[%title%]").EvalWithMetadb(metadb).replace(':','');
    title = fb.Titleformat("[%title%]").EvalWithMetadb(metadb);
   
    tf = [];
   
    tf[0] = fb.Titleformat("[%artist%]").EvalWithMetadb(metadb);
    tf[1] = fb.Titleformat("[%album artist%]").EvalWithMetadb(metadb);
    tf[2] = fb.Titleformat("[%title%]").EvalWithMetadb(metadb);
   
    logo_file_name = "";
    get_logo_files_from_dir();
   
    for (var j = 0; j < 3; j++){
        for (var i = 0; i < logo_files.length; i++){
            var file =logo_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) logo_file_name = logo_files[i];
        }
        if (logo_file_name) break;
    }
    window.Repaint();
}
*/
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Пред.След.

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