Скрипты для 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
Репутация: 248
С нами: 11 лет 3 месяца

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

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

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

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

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

seriousstas, получается так, нужно было запустить радиостанцию а потом обновить панель, тогда появляются. :smile:
Вложения
2017-02-26_203115.jpg
Aliado_71
Аватара
Откуда: Украина
Репутация: 200
С нами: 9 лет 8 месяцев

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

MC Web, написал в личку
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

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

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

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

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

MC Web, посмотрите личку
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

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

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

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

MC Web, ответил
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

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

kgena_ua, отписался.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

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

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


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

Добавлено спустя 4 часа 2 минуты:
MC Web, пока не адаптируйте скрипт Biography под себя, будут дополнительные изменения (дополнительные функции).
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение #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 КБ) Просмотров: 2833
Безымянный2.png


kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

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

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

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


Код: Выделить всё
// ==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;
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Пред.След.

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



cron