Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #1701 MC Web » 24.02.2017, 00:29

kgena_ua писал(а):Я уже начал это делать (если посмотреть файл *.ini в папке с артистом, то там уже вытаскивается год издания альбома).
Там смотрю слова композиции даже присутствуют, правда без значений.
kgena_ua писал(а):Стало очень неудобно, что на XP не работает.
Я так понял для работы.
Компонент WSH Panel Mod 1.5.6 в помощь, я до сих пор на нем сижу и все работает (за исключением некоторых моментов).
kgena_ua писал(а):Выложить обновление всего скрипта, или инструкцию по исправлению.
Быстрее, наверное, выложить обновленный скрипт, чем инструкцию сидеть писать.
MC Web
Мастер
Репутация: 80
С нами: 3 года 11 месяцев

Сообщение #1702 sega72 » 24.02.2017, 10:21

MC Web писал(а):наверное, выложить обновленный скрипт, чем инструкцию сидеть писать.
Согласен абсолютно. Можно и подождать. Зачем торопить автора? Праздники ведь :wink:
sega72
Новичок
Репутация: 3
С нами: 2 года 8 месяцев

Сообщение #1703 seriousstas » 26.02.2017, 18:24

Aliado_71 писал(а):seriousstas, тут такое не проходит
Проверил - логотипы на месте :wink: Попробуй сделать замену в JS Smooth Playlist внимательнее . Замени первый блок на второй.
Вложения
111.jpg
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 64
С нами: 2 года 6 месяцев

Сообщение #1704 Aliado_71 » 26.02.2017, 21:38

seriousstas, получается так, нужно было запустить радиостанцию а потом обновить панель, тогда появляются. :smile:
Вложения
2017-02-26_203115.jpg
Aliado_71 M
Бывалый
Аватара
Возраст: 46
Откуда: Украина, Донецк,
Репутация: 30
С нами: 2 года 5 месяцев

Сообщение #1705 kgena_ua » 01.03.2017, 14:03

MC Web, написал в личку
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Сообщение #1706 MC Web » 01.03.2017, 15:27

kgena_ua, ответил в ЛС. :hi:

Первые впечатления положительные. :beer:
MC Web
Мастер
Репутация: 80
С нами: 3 года 11 месяцев

Сообщение #1707 kgena_ua » 01.03.2017, 16:51

MC Web, посмотрите личку
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Сообщение #1708 MC Web » 01.03.2017, 17:57

kgena_ua, отчитался в ЛС.
MC Web
Мастер
Репутация: 80
С нами: 3 года 11 месяцев

Сообщение #1709 kgena_ua » 01.03.2017, 18:14

MC Web, ответил
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Сообщение #1710 MC Web » 01.03.2017, 18:30

kgena_ua, отписался.
MC Web
Мастер
Репутация: 80
С нами: 3 года 11 месяцев

Сообщение #1711 kgena_ua » 01.03.2017, 18:50

В новой версии Biography Text & Album Info & Picture. www.last.fm
Будет возможность выставлять пользовательские цвета.
Добавлено отображение информации об альбоме:
Безымянный.png
Безымянный.png (26.2 КБ) Просмотров: 1255


Нет, MC Web, у меня под XP не работает.

Добавлено спустя 4 часа 2 минуты:
MC Web, пока не адаптируйте скрипт Biography под себя, будут дополнительные изменения (дополнительные функции).
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Сообщение #1712 MC Web » 01.03.2017, 23:04

kgena_ua, да я уже сделал.

Будут дополнительные функции, хорошо. Изменить не долго...
MC Web
Мастер
Репутация: 80
С нами: 3 года 11 месяцев

Сообщение #1713 untitledef » 02.03.2017, 07:34

kgena_ua, было бы неплохо еще прикрутить теги с ласта, кол-во слушателей (опционально) и желательно поле с похожими исполнителями/треками, опять же с любимого ластика, как пример/основа:
Спойлер
ИзображениеИзображение
untitledef
Новичок
Аватара
Репутация: 1
С нами: 6 месяцев 21 день

Сообщение #1714 Aliado_71 » 02.03.2017, 12:55

untitledef, Есть такой скрипт для JS Panel называется YouTube Track Manager так вот он такое может + еще многое. Скачать и поддержка на hydrogenaudio Только внимательно читайте ветку, там для работы требуются доп.компоненты.
Вложения
2017-03-02_114847.jpg
Aliado_71 M
Бывалый
Аватара
Возраст: 46
Откуда: Украина, Донецк,
Репутация: 30
С нами: 2 года 5 месяцев

Сообщение #1715 untitledef » 02.03.2017, 13:56

Aliado_71, спасибо, но слишком дорого, несколько плагинов + jspanel вдобавок. я наоборот пытаюсь уместить все как можно компактней) а есть кстати нечто похожее с дискогсом?
untitledef
Новичок
Аватара
Репутация: 1
С нами: 6 месяцев 21 день

Сообщение #1716 Aliado_71 » 02.03.2017, 15:23

я наоборот пытаюсь уместить все как можно компактней
untitledef, так собственно для это есть табы ну или кнопочное переключения панелей можно сделать. Кстати плагин хороший, его еще можно использовать для отображения коврика, просмотр видео, ну и самое удобное в нем что для ознакомления можно подгружать альбомы или треки с ютюба в плейлист.
Aliado_71 M
Бывалый
Аватара
Возраст: 46
Откуда: Украина, Донецк,
Репутация: 30
С нами: 2 года 5 месяцев

Сообщение #1717 untitledef » 02.03.2017, 17:37

Aliado_71, я к тому что потом в такой сборке будет все дико тормозит, я засунул в свою сборку все по минимуму, esplaylist (меньше отрисовок графики - больше производительность), колумнтуи, и движок для скриптов, и тех стараюсь меньше использовать, биографию с этого топика и плагин на подсчет статистки прослушиваний + лирика, но спасибо за наводку, попробую.
Спойлер
Изображение
untitledef
Новичок
Аватара
Репутация: 1
С нами: 6 месяцев 21 день

Сообщение #1718 duzzy » 02.03.2017, 21:44

untitledef
в такой сборке будет все дико тормозит
Тормозить ни чего не будет, если не пихать тьму панелей и компонентов.
Вот посмотри если интересно...
(на качество звука и проигрываемые треки не обращай внимания, комп старый и я на нем только скрипты ковыряю и графику)

Сборка собрана на JScript Panel и MegaPanelSplitter, под палец для использования в кар-пс(автомобильный комп)... все скрипты модифицированы для использования на сенсорном экране.

Это конечно мое личное мнение, но слушать музыку можно не только на голом дефолтном интерфейсе. Да и как мне кажется более приятно глазу смотреть на что-то симпатичное нежели чем на голые белые панельки :wink: .
duzzy
Новичок
Репутация: 13
С нами: 2 года 1 месяц

Сообщение #1719 kgena_ua » 03.03.2017, 13:19

Biography Text & Album Info & Picture. www.last.fm
version "01032017"


Добавлено:
- установка пользовательских цветов - фон (color: background), заголовок (color: header), текст (color: text) - меню Properties;
- переключение между системным цветом и пользовательским - пункт меню colors: custom, меню Properties;
- два пункта в меню для выбора порядка отображения (загрузки) альбомов: самые популярные (most popular) и дата релиза (release date);
- отображение кол-ва слушателей, кол-ва композиций и года релиза для альбома;
- индикация выбранного языка при переключении. Включается/отключается - пункт меню Properties language tooltip.

Для светлых тем пункт меню Properties shadow of the text по умолчанию отключен.

Скрипт не совместим со старыми версиями в плане имен загружаемых файлов.

Безымянный.png
Безымянный.png (8.98 КБ) Просмотров: 953
Безымянный2.png


I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Сообщение #1720 kgena_ua » 04.03.2017, 00:08

Обновил скрипт для рейтинга, добавил поддержку для DUI.
Безымянный.png
Безымянный.png (27.83 КБ) Просмотров: 874

Безымянный2.png
Безымянный2.png (9.4 КБ) Просмотров: 874


Код: Выделить всё
// ==PREPROCESSOR==
// @name "Rating & File attributes"
// @author "kgena_ua"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

// foo_playcount.dll required

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var font = gdi.Font("Arial",10,0);
var ww,wh;

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

DT_LEFT = 0x00000000;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;

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

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);
        color1 = window.GetColorCUI(ColorTypeCUI.text);
        color2 = window.GetColorCUI(ColorTypeCUI.selection_text);
        color_red = RGB(255,100,0);
    } else if (window.InstanceType == 1) {
        bgcolor = window.GetColorDUI(ColorTypeDUI.background);
        color1 = window.GetColorDUI(ColorTypeDUI.text);
        color2 = window.GetColorDUI(ColorTypeDUI.highlight);
        color_red = RGB(255,100,0);
    }
    window.Repaint();
}

get_color();

function on_colors_changed(){
    get_color();
}

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 rating = 0, TAGrating, DBrating, nrating = 0;
var rating_mode = window.GetProperty("rating_mode", 0);
var rating_5 = window.GetProperty("rating_5", false);

var x_text = window.GetProperty(" text: x", 0);
var y_text = window.GetProperty(" text: y", 2);
var text = window.GetProperty(" text", true);

var x_star = window.GetProperty(" star: x", 20);
var y_star = window.GetProperty(" star: y", 2);
var star_size = window.GetProperty(" star: size", 13), offset = star_size + 3;
var shadow = window.GetProperty(" shadow", true);

var file, file_path = "", file_ext = "";
var file_attributes, readwrite;
var read_only = false, cue_file = false, stream = false;

var g_drag = false;
var on_mouse = false;

var tooltip = window.CreateTooltip();
var tooltip_stale = false;
TTDT_AUTOMATIC = 0;
tooltip.SetDelayTime(TTDT_AUTOMATIC, 100);

function tooltip_check_stale(){
    if (tooltip_stale = true){
        tooltip.Deactivate();
        tooltip_stale = false;window.Repaint();
    }
}

var t_type;
var metadb;
var count;
on_item_focus_change();

function on_paint(gr){
   gr.SetSmoothingMode(2);
   gr.SetInterpolationMode(2);

   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);

    for (var i = 0; i < (5 * offset); i = i + offset) {   
        star(gr, x_star + i + star_size / 2, y_star + star_size / 2, star_size, 1, 0, color1, 120);
    }
       
    for (var i = 0; i < ((g_drag ? nrating : rating) * offset); i = i + offset) {   
        r_color = readwrite ? fb.IsPlaying ? color2 : color1 : color_red;
        shadow && star(gr, x_star + i + star_size / 2 + 1, y_star + star_size / 2 + 1, star_size, 1, 0, RGB(0,0,0), 255);
        star(gr, x_star + i + star_size / 2, y_star + star_size / 2, star_size, 1, 0, r_color, 255);
    }

    on_mouse && text && gr.GdiDrawText( rating_mode == 0 ? "db" : "tag" , font, color1, x_text, y_text, ww, star_size, DT_LEFT | DT_VCENTER | DT_SINGLELINE  );

    gr.GdiDrawText( "", font, RGB(255,255,200), 1, 10, ww, wh );
}

function getNRating(posx) {
    nrating = Math.ceil(( posx - x_star ) / offset );
    if (nrating > 5) nrating = 5;
    if (nrating < 0) nrating = 0;
    if (nrating != 0) nrating = rating_5 ? 5 : nrating;
}

function getRating(){
  if ( count > 1 ) {
        TAGrating = 0;
        DBrating = 0;
        for (var i = 0; i < count; i++) {
            item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
            DBrating += parseInt(fb.TitleFormat("$if2(%rating%,0)").EvalWithMetadb(item));
            TAGrating += parseInt(fb.TitleFormat("$if2($meta(rating),0)").EvalWithMetadb(item));
        }
        rating = rating_mode == 0 ? DBrating : TAGrating;
        rating = rating / count;
    } else {
        DBrating = fb.TitleFormat("$if2(%rating%,0)").EvalWithMetadb(metadb);
        TAGrating = fb.TitleFormat("$if2($meta(rating),0)").EvalWithMetadb(metadb);
        rating =  rating_mode == 0 ? DBrating : TAGrating;
    }
}

function setRating(){
   if ((nrating != rating) && metadb) {   
        if (rating_mode == 0) {
            if ( count > 1 ) {
                for (var i = 0; i < count; i++) {
                    item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
                    fb.RunContextCommandWithMetadb("Playback Statistics/Rating/" + (nrating == 0 ? "<not set>" : nrating), item);
                }
            } else{
                fb.RunContextCommandWithMetadb("Playback Statistics/Rating/" + (nrating == 0 ? "<not set>" : nrating), metadb);
            }
            rating = nrating;
        } else {
            if ( count > 1 ) {
                for (var i = 0; i < count; i++) {
                    item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
                    if (readwrite) {item.UpdateFileInfoSimple("Rating", nrating == 0 ? "" : nrating);
                        rating = nrating
                    }
                }
             } else{
                if (readwrite) {metadb.UpdateFileInfoSimple("Rating", nrating == 0 ? "" : nrating);
                    rating = nrating
                }
            }
        }
    }
    g_drag = false;
    if (rating_mode == 1) {
        tooltip.Activate();
        tooltip_stale = true;
        tooltip.GetDelayTime(TTDT_AUTOMATIC);
    }
}

function on_mouse_lbtn_up(x,y){
    setRating();
}

function on_mouse_mbtn_dblclk(){
    nrating = 0;
    setRating();
}

function on_mouse_lbtn_down(x,y) {
    tooltip_check_stale();
    g_drag = true;
    getNRating(x);
    window.Repaint();
}   

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(32649);   
    if (g_drag){   
        getNRating(x);   
    }   
    window.Repaint();
}   

function on_mouse_leave() {   
    tooltip_check_stale();
    on_mouse = false;
    window.SetCursor(32512);
    window.Repaint();
}   

function on_mouse_wheel(delta) {   
    tooltip && tooltip.Deactivate();
    if (delta > 0) {rating_mode = 0};
    if (delta < 0) {rating_mode = 1};
    window.SetProperty("rating_mode", rating_mode);
    on_item_focus_change();
    window.Repaint();
}

function on_mouse_rbtn_up (x, y){   
    var _menu = window.CreatePopupMenu();

    _menu.AppendMenuItem(MF_ENABLED, 1, "Store Ratings in the database");
    _menu.AppendMenuItem(MF_ENABLED, 2, "Store Ratings in the file tags");
    _menu.CheckMenuRadioItem(1, 2, rating_mode + 1);      
   _menu.EnableMenuItem(rating_mode + 1, 1);   
   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 3, "Set Rating 5");
    _menu.CheckMenuItem(3, rating_5);   

    var txt = "";

    switch (file_attributes) {
    case 32:   
        txt = "to read - only";
        break;     
    case 33:   
        txt = "to read - write";
        break;     
    }

    MF_STRING = txt ? MF_ENABLED : MF_GRAYED;
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_STRING, 4, "Change file attributes " + txt);

    _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:
    case 2:
        rating_mode = ret - 1;
        window.SetProperty("rating_mode", rating_mode);
        on_item_focus_change();
        break;
    case 3:
        window.SetProperty("rating_5", !rating_5);
        rating_5 = window.GetProperty("rating_5");
        break;
    case 4:
        switch (file_attributes) {
        case 32:   
            if (metadb) change_file_attributes(33); //read only
            on_item_focus_change();
            break;
        case 33:
            if (metadb) change_file_attributes(32); //read write
            on_item_focus_change();
            break;
        }   
        break;
    case 20:
        window.ShowProperties();
        break;   
    case 30:
        window.ShowConfigure();      
        break; 
    }
    _menu.Dispose();
    return true;
}

function get_attributes() {   
    file_attributes = 0;            
    for (var i = 0; i < count; i++) {            
        item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
        item_path = fb.Titleformat("%path%").EvalWithMetadb(item);          
        try {            
            file = fso.GetFile(item_path);            
            file_attributes += parseInt(file.Attributes);            
        } catch(e) {};             
    }             
    file_attributes = Math.round(file_attributes / count);   

    t_type = track_type(metadb.RawPath);
   
    read_only = file_attributes == 33 ? true : false;
    cue_file = t_type == "cue" ? true : false;
    stream = t_type == "stream"  ? true : false;

    tooltip.Text = cue_file ? " cue file " : read_only ? " file" + (count > 1 ? "s are " : " is ") + "read only " : stream ? " stream " : "";

    if ((cue_file || read_only || stream) && rating_mode == 1 ) {    
        readwrite = false;                  
    } else {            
        readwrite = true;                     
    }                  
}   

function change_file_attributes(k) {
    for (var i = 0; i < count; i++) {
        item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);   
        item_path = fb.Titleformat("%path%").EvalWithMetadb(item);
        try {
            file = fso.GetFile(item_path);
            file.Attributes = k;
        } catch(e) {};
    }   
}

function on_playlist_switch() {
    on_item_focus_change();
}

function on_playback_new_track() {
    on_item_focus_change();
}

function on_playback_stop() {
    on_item_focus_change();
}

function on_selection_changed(metadb) {
    on_item_focus_change(); 
}

function on_item_focus_change() {
    metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (metadb) on_metadb_changed();
}

function on_metadb_changed() {
    count = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Count;
    if (metadb) {
        rating_mode = window.GetProperty("rating_mode") == 0 ? 0 : 1; 
        getRating();
        get_attributes();
    }
    window.Repaint();
}

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

function star(gr, x, y, img_size, fill, line_thickness, color, alpha){
    var radius = img_size / 2;
    var radius_2 = radius / 2.61803;
    line_thickness = line_thickness >= radius_2 ? radius_2 : line_thickness;
    var delta = line_thickness / 2 * Math.tan(72 / 180 * Math.PI);

    var points = [],
        x_points_1 = [], y_points_1 = [];
        x_points_2 = [], y_points_2 = [];

    for (var i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            x_points_1.push((radius - delta) * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2));
            y_points_1.push((radius - delta) * Math.sin(Math.PI * i / 10 * 2 - Math.PI / 2));
        } else {
            x_points_2.push((radius - delta) / 2.61803 * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2));
            y_points_2.push((radius - delta) / 2.61803 * Math.sin(Math.PI * i / 10 * 2 - Math.PI / 2));
        }
    }
       
    for (var i = 0; i < 5; i++) {
        points.push(x_points_1[i] + radius, y_points_1[i] + radius, x_points_2[i] + radius, y_points_2[i] + radius);
    }

    var img = gdi.CreateImage(img_size, img_size);
    var temp_gr = img.GetGraphics();
    temp_gr.SetSmoothingMode(2);
   
    if(fill > 0) {
        temp_gr.FillPolygon(color, 1, points)
    }
    if(line_thickness > 0) {
        temp_gr.DrawPolygon(color, line_thickness, points);
    }

    gr.DrawImage(img, x - radius, y - radius, img_size, img_size, 0, 0, img_size, img_size, 0, alpha);
   
    img.ReleaseGraphics(temp_gr);
    img.Dispose();
    temp_gr = null;
    img = null;
}

function track_type(p) {
    var type;
    if (p.indexOf("file") >= 0 && p.indexOf("cue") >= 0){
        type = "cue";
    } else if (p.indexOf("file") >= 0){
        type = "file";
    } else if (p.indexOf("cdda") >= 0){
        type = "cdda";
    } else if (p.indexOf('://') >= 0 || p.indexOf('www') >= 0 || p.indexOf("youtube") >= 0 || p.indexOf("video") >= 0 || p.indexOf("vimeo") >= 0){
        type = "stream";
    } else {
        type = "";
    }
    return type;
}
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 331
С нами: 4 года 4 месяца

Пред.След.

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

Кто сейчас на форуме (по активности за 10 минут)

Сейчас этот раздел просматривают: 1 гость