Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #521 kgena_ua » 07.11.2015, 10:52

egen17,
...Check the console
А что там в консоли.
А лучше было-бы посмотреть саму сборку, так проще и быстрее. Заархивируйте свою сборку, положите на какой-нибудь файлообменник и дайте ссылку.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #522 egen17 » 07.11.2015, 11:15

egen17
Репутация: 0
С нами: 9 лет

Сообщение #523 kgena_ua » 07.11.2015, 11:59

egen17, у меня только ругается скрипт "биография" на отсутствие файла common8.js из папки marc2003, которой нет в корне Фубара.
Error: WSH Panel Mod (Now Playing by marc2003): Анализ файла "E:\foobar2000\marc2003\common8.js": Failed to load
Если у Вас нет скрипта от marc2003 могу выложить. У меня есть сборка от vladj , где есть этот скрипт.

По поводу скрипта WSH Timer & Alarm clock & Clock , так его нет в сборке, которую Вы выложили.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #524 MC Web » 07.11.2015, 13:04

kgena_ua, вроде "решили проблему" egen17 - путем удаления "проблемных панелей-скриптов", но в причине не разобрался.
Если интересно переписку с egen17 можно посмотреть тут.
Вопрос по ошибкам в скриптах на данной WinXP остался открытым.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #525 kgena_ua » 07.11.2015, 14:06

MC Web, я ни разу не сталкивался с тем, что срипт на XP не работает, а на 7 или... - работает (у меня дома 7, а на работе XP). WSH панель, до определенной версии, поддерживает и XP и 7...
И есть вопрос: это что, что за библиотека
Безымянный.png
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #526 vladj » 07.11.2015, 14:55

kgena_ua:это что, что за библиотека
Показ обложек с помощью плагина foo_chronflow.dll, на винде 8 требует всегда установить и старый, 9 дайрект икс.
Обложки показываются по желанию в нескольких режимах...по спирали, в виде стопки с винилом и т.д.
Листается или щелчком по краю панели или скроллом мыши. Мне нравился этот плагин...да и сейчас в паре сборок работает.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 10 месяцев

Сообщение #527 kgena_ua » 07.11.2015, 17:43

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

Сообщение #528 MC Web » 07.11.2015, 19:32

kgena_ua, у меня нет возможности проверить на XP, поэтому приходится верить словам egen17, а он утверждает обратное.
Просьба, если будет возможность, проверить работоспособность скриптов в данной сборке на XP - интересен результат.
У себя удалось смоделировать похожее сообщение об ошибке, если переключить Обработчик скриптов на VBScript.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #529 kgena_ua » 07.11.2015, 19:54

MC Web, если идет речь о сборке
egen17:egen17 » Сегодня, 09:15
https://cloud.mail.ru/public/E9zw/HiPCrmSem
то нет проблем, в понедельник посмотрим.

Только было такое сообщение от egen17:
egen17:При запуске всплывает такое окно:
Панель WSH (модуль)
Scripting Engine Initialization Failed (WSH Timer & Alarm clock & Clock by kgena_ua, CODE: 0x80020101)
Check the console for more information (Always caused by unexcepted script error).
но дело в том, что в сборке, по вышеуказанной ссылке, нет этого скрипта.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #530 MC Web » 07.11.2015, 20:11

Я имел ввиду эту, описание к ней здесь.
А эта
egen17:https://cloud.mail.ru/public/E9zw/HiPCrmSem
предлагал варианты переделки, но понял человек не совсем в теме.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #531 egen17 » 08.11.2015, 03:22

Мне пришлось переустановить на днях XP. Так как иная версия (7 или Vista) мне не очень подходит для работы. И конечно же я не совсем в теме, так как я не программист. Я обыкновенный пользователь. Профессия - музыкант. Описал все возникающие ошибки. Благодаря уважаемому автору MC Web, удалось избавиться от надоедливых ошибок при запуске сборки foobar2000 RU DarkOne + DUIFoon (06.11.2015), которая мне, как пользователю, очень подходит. Лично мне не особо нужны ни 3 D обложки, ни биографии, ни эффекты, хотя, конечно же, если они есть, то эстетически более приятно пользоваться такой сборкой. Я не знаю откуда взялись эти проблемные скрипты. Специально я ничего не устанавливал пока.
egen17
Репутация: 0
С нами: 9 лет

Сообщение #532 vladj » 08.11.2015, 11:31

Скрипты вовсе не проблемные, я не так-уж здорово разбираюсь в Осях, но кажется что в 8 винде что-то улучшили в плане
обработки скриптов. На ХР у меня проблемы были в частности еще из-за того, что это была старенькая (Медиацентр от Windows)
со 2-ым сервиспаком и менять я ее не хотел ни в коем случае. А у тех кто пишет скрипты, обновления всегда включены, т.е.
обновлялись и библиотеки и сам плагин foo_uie_wsh_panel_mod. Читая забугорные форумы, на которых "сидят" скриптописатели,
видно, что у многих бывают проблемы...наверное из-за того, что не хотят с ХР спрыгнуть ради интерфейса одной программы.
Кто-то отказывается от панели на проблемном скрипте, кто-то (например как MC Web) в состоянии поправить дело.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 10 месяцев

Сообщение #533 kgena_ua » 09.11.2015, 13:34

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

Сообщение #534 MC Web » 09.11.2015, 14:04

kgena_ua, спасибо за информацию и потраченное время.
Мысли, по поводу не работоспособности есть?
Хотя это будет гадание на кофейной гуще...
Еще раз спасибо.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #535 kgena_ua » 14.11.2015, 09:21

Закончил скрипт для рисования звезды - отказ от графических файлов в рейтинге и т.д.
Пример: вызываем функцию из on_paint(gr)
Код: Выделить всё
function on_paint(gr) {
    star(gr, 100, 100, 140, 0, 4, RGB(255,255,220), 255);
}
где:
100,100 - координаты центра;
140 - размер;
0 - не заполнять цветом;
4 - толщина линии;
далее цвет и прозрачность.
Безымянный.png
Безымянный.png (6.91 КБ) Просмотров: 3333

Код: Выделить всё
function star(gr, x, y, img_size, fill, line_thickness, color, copacity){
    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, copacity);
   
    img.ReleaseGraphics(temp_gr);
    img.Dispose();
    temp_gr = null;
    img = null;
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #536 kgena_ua » 20.11.2015, 22:44

WSH rating
Код: Выделить всё
// ==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",9,0);
var font_2 = gdi.Font("Arial",12,1);
var ww,wh;

DT_LEFT = 0x00000000;

var bgcolor = RGB(0,0,0);
var no_rating_color = RGB(100,100,100);
var rating_color = RGB(255,255,200);
var red_color = RGB(255,100,0);

var Tooltip = window.CreateTooltip();

var posx, posy;
var col = 20;
var row = 10;

var g_drag = false;
var on_mouse = false;

var rating = 0, TAGrating, DBrating, nrating = 0;
var rating_m = window.GetProperty("def_rating_m", 0);
var rating_5 = window.GetProperty("rating_5", 2);;

var fso = new ActiveXObject("Scripting.FileSystemObject");
var file, file_path = "", file_ext = "";
var file_attributes, readwrite;
var read_only = false, cue_file = false, stream = false;
var star_size = 15, offset = star_size + 3;

var metadb;
var count;
on_item_focus_change();

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

    for (var i = 0; i < (5 * offset); i = i + offset) {   
        draw_star(gr, col + i + star_size / 2, row + star_size / 2, star_size, 1, 0, no_rating_color);
    }
       
    for (var i = 0; i < ((g_drag ? nrating : rating) * offset); i = i + offset) {   
        color = readwrite ? rating_color : red_color;
        draw_star(gr, col + i + star_size / 2, row + star_size / 2, star_size, 1, 0, color);
    }

    gr.GdiDrawText(rating_m == 0 ? "db" : "tag" , font, on_mouse ? rating_color : no_rating_color, 0, row, ww, row + star_size,  DT_LEFT);

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

function getNRating() {
    nrating = Math.ceil(( posx - col ) / offset );
    if (nrating > 5) nrating = 5;
    if (nrating < 0) nrating = 0;
    if (nrating != 0) nrating = rating_5 == 1 ? 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_m == 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_m == 0 ? DBrating : TAGrating;
    }
}

function setRating(){
   if ((nrating != rating) && metadb) {   
        if (rating_m == 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_m == 1) {
        Tooltip.Activate();
        Tooltipdelay()
    }
}

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

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

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

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

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

function on_mouse_wheel(delta) {   
    if (delta > 0) {rating_m = 0};
    if (delta < 0) {rating_m = 1};
    window.SetProperty("def_rating_m", rating_m);
    on_item_focus_change();
    window.Repaint();
}

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

    _menu.AppendMenuItem(0x00000000, i++, "Store Ratings in the database");
    _menu.AppendMenuItem(0x00000000, i++, "Store Ratings in the file tags");
    _menu.CheckMenuRadioItem(1, i, rating_m + 1);      
   _menu.EnableMenuItem(rating_m + 1, 1);   
   
    _menu.AppendMenuItem(0x00000800, 0, 0);
    _menu.AppendMenuItem(0x00000000, i++, "Set Rating 5");
    _menu.CheckMenuItem(i-1, rating_5 - 2);   
   
    var txt = "";
   
    switch (file_attributes) {
    case 32:   
        txt = "read - only";
        break;     
    case 33:   
        txt = "read - write";
        break;     
    }

    if ( txt != "") {
        _menu.AppendMenuItem(0x00000800, 0, 0);   
        _menu.AppendMenuItem(0x00000000, i++, "change file" + (count > 1 ? "s" : "") + " to  " + txt);
    }

    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
//    if (ShiftDown) {
        _menu.AppendMenuItem(0x00000800, 0, 0);
        _menu.AppendMenuItem(0x00000000, 20, "Properties");
        _menu.AppendMenuItem(0x00000000, 30, "Configure...");
//    }

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

    switch (ret) {
    case 1:
        rating_m = 0;
        window.SetProperty("def_rating_m", rating_m);
        on_item_focus_change();
        break;
    case 2:
        rating_m = 1;
        window.SetProperty("def_rating_m", rating_m);
        on_item_focus_change();
        break;
    case 3:
        rating_5 = rating_5 == 1 ? 2 : 1;
        window.SetProperty("rating_5", 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);            
        file_path = fb.Titleformat("%path%").EvalWithMetadb(item);            
        file_ext = fb.Titleformat("$ext([%filename_ext%])").EvalWithMetadb(item);            
        try {            
            file = fso.GetFile(file_path);            
            file_attributes += parseInt(file.Attributes);            
        } catch(e) {};             
    }             
    file_attributes = Math.round(file_attributes / count);   

    read_only = file_attributes == 33 ? true : false;
    cue_file = file_ext == 'cue' ? true : false;
    stream = file_path.indexOf('://') > 0 ? true : false;

    Tooltip.Text = read_only ? " file" + (count > 1 ? "s are " : " is ") + "read only " : cue_file ? " cue file " : stream ? " stream " : "";
                    
    if ((file_attributes == 33 || file_ext == 'cue' || file_path.indexOf('://') > 0) && rating_m == 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);   
        file_path = fb.Titleformat("%path%").EvalWithMetadb(item);
        try {
            file = fso.GetFile(file_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_m = window.GetProperty("def_rating_m") == 0 ? 0 : 1; 
        getRating();
        get_attributes();
    }
    window.Repaint();
}

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

function on_mouse_mbtn_up(x,y) {
}

function Tooltipdelay(){
    var timer = window.SetTimeout(function() {
        Tooltip.Deactivate();
        window.ClearTimeout(timer);
    }, 2000);
}

function draw_star(gr, x, y, img_size, fill, line_thickness, color){
    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(x + ((radius - delta) * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2)));
            y_points_1.push(y + ((radius - delta) * Math.sin(Math.PI * i / 10 * 2 - Math.PI / 2)));
        } else {
            x_points_2.push(x + ((radius - delta) / 2.61803 * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2)));
            y_points_2.push(y + ((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], y_points_1[i], x_points_2[i], y_points_2[i]);
    }
     
    gr.SetSmoothingMode(2);
    if(fill > 0) {
        gr.FillPolygon(color, 1, points)
    }
    if(line_thickness > 0) {
        gr.DrawPolygon(color, line_thickness, points);
    }
}

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

Сообщение #537 kgena_ua » 27.11.2015, 16:16

Скрипт на тестирование - биография .
Без дополнительных файлов.
Скроллинг - колесо мыши.
Код: Выделить всё
// ==PREPROCESSOR==
// @name "Biography Text"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

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

var a_font = gdi.Font("Arial",12,1);
var b_font = gdi.Font("Arial",12,0);
var ww,wh;

DT_LEFT = 0x00000000;
DT_RIGHT = 0x00000002;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
DT_WORDBREAK = 0x00000010;   
DT_CALCRECT = 0x00000400;   
DT_NOPREFIX = 0x00000800;   

var bgcolor = RGB(50,50,50);
var a_color = RGB(150,150,150);
var b_color = RGB(255,255,230);

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

var artist, old_artis;
var text = "", response = "";
var data = ""; b_text = "";

var col = 20;
var r_margin = 10;
var row = 50;
var b_text_row_height0;
var b_text_rows = 0;
var b_text_height = 0;

var s = 0;
var strings_array = [];
var b_text_array = [];

var metadb;
on_item_focus_change();

function on_paint(gr){   
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);
       
    gr.GdiDrawText(artist, a_font, a_color, col, 10, ww - 20, wh, DT_LEFT | DT_WORD_ELLIPSIS );   
   
    for (var i = 0; i < b_text_height; i++) {   
        gr.GdiDrawText(b_text_array[i + s], b_font, b_color, col, row + b_text_row_height * i, ww, wh, DT_LEFT );
    }      
}

function on_mouse_wheel(delta) {
    if (b_text_rows > b_text_height){
        if (delta < 0) {s = b_text_rows - s <= b_text_height ? b_text_rows - b_text_height : s += 1}
        if (delta > 0) {s = s <= 0 ? 0 : s -= 1}
        window.Repaint();
    }
}

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

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

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

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

function on_playlist_switch() {   
    on_item_focus_change();   
}   

function on_playback_new_track() {   
    on_item_focus_change();   
}   

function on_playback_dynamic_info_track() {   
    on_item_focus_change();   
}   

function on_playback_stop() {   
    on_item_focus_change();   
}   

function on_selection_changed(metadb) {   
   on_item_focus_change();     
}   

function Eval(field) {   
    if (metadb) {   
        path = fb.Titleformat("%path%").EvalWithMetadb(metadb);
        return path.indexOf('://') > 0 ? fb.TitleFormat("[" + field + "]").Eval(true) : fb.TitleFormat("[" + field + "]").EvalWithMetadb(metadb);
    }
}

function on_metadb_changed() {
    artist = Eval("%artist%");
    if (artist != old_artis){
        response = "";
        get();
        old_artis = artist;
    }
    window.Repaint();
}

function get(){
    if (artist == "" || artist == "?") {get_b_text_array(); return};

    var url = ("http://www.theaudiodb.com/api/v1/json/1/search.php?s=" + encodeURIComponent(artist));
    xmlhttp.open("GET", url, true);
    //xmlhttp.open("POST", url, true);
    //xmlhttp.setRequestHeader("Cache-Control", "no-cache");
    //xmlhttp.setRequestHeader("Pragma", "no-cache");
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp.send();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                text = xmlhttp.responsetext;
               
                try {
                    data = text;
                    json_data = JSON.parse(data);
                    json_data = json_data.artists;
                    items = json_data.length;

                    for (i = 0; i < items; i++) {
                        response = json_data[i].strBiographyRU;
                        if (response == null){
                            response = json_data[i].strBiographyEN;
                        }
                    }
                } catch(e){}
                get_b_text_array();
                window.Repaint();
            }
        }
    }
}

function get_b_text_array() {   

    s = 0;
    strings_array = [];
    b_text_array = [];

    ww = window.Width; 
   
    temp_bmp = gdi.CreateImage(1, 1);      
    temp_gr = temp_bmp.GetGraphics();   

    b_text_row_height = temp_gr.CalcTextHeight("text", b_font)
   
    strings_array = temp_gr.EstimateLineWrap(response, b_font, ww - col - r_margin).toArray();

    for (var i = 0; i < strings_array.length; i += 2) {   
        b_text_array.push(strings_array[i]);
    }   
               
    b_text_rows = b_text_array.length;
    b_text_height = Math.ceil((wh - row - 20) / b_text_row_height);
   
    temp_bmp.ReleaseGraphics(temp_gr);         
    temp_bmp.Dispose();         
    temp_gr = null;         
    temp_bmp = null;         
}
Проверял на других сборках, на XP и 8.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #538 MC Web » 27.11.2015, 17:31

kgena_ua, спасибо, жалко только, что вся биография на английском и это все перечеркивает.
Для отображения полной биографии на английском, есть скрипт для foo_uie_biography.dll и там все прекрасно работает, а вот на русском, пока только скрипт от marc2003:
Два варианта вывода биогафии
Изображение

Пока тестировал, заметил, что иногда на русском выводит даже больше информации по биографии, чем на английском.
Иногда вообще нет информации на английском, на русском выдает, хотя группы американские, по радио:
Два варианта вывода биогафии
Изображение
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #539 kgena_ua » 27.11.2015, 18:01

MC Web, спасибо за уделенное время.
Самое главное, это приблизительный набросок.
Просто хотел отказаться от сохранения данных на ПК. В других скриптах сохранение биографии есть необходимостью для работы скриптов.
Скачивание текста я произвожу с www.theaudiodb.com. В других скриптах, насколько я помню, есть возможность выбора других источников. В дальнейшем собираюсь создать список "источников" в "вытягивать текст" по принципу - тут нет, пойдем искать дальше.
По языку вывода. Я пока сделал так: в приоритете проверяется наличие биографии на русском, если нет, то ищем на английском, если нет - то пусто.
Опять повторюсь, это пока только для www.theaudiodb.com, если пусто, то там ее нет.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев


Пред.След.

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