Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2361 MC Web » 03.06.2018, 14:18

untitledef, это есть в скрипте Properties & properties file (ml):

Спойлер
Изображение
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2362 kgena_ua » 10.06.2018, 09:34

untitledef:кол-во прослушиваний/слушателей ИСПОЛНИТЕЛЯ
Будет.
untitledef:похожие исполнители
Это есть и давно.
untitledef:теги/жанры
Попробую.

В последнее время пытался реализовать изменение цвета для некоторых строк в одном тексте.
1.png


кол-во прослушиваний/слушателей ИСПОЛНИТЕЛЯ, жанры, и еще ...
2.png
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2363 Stasila » 11.06.2018, 08:59

биография опять не работает(
Stasila
Репутация: 1
С нами: 10 лет 10 месяцев

Сообщение #2364 seriousstas » 12.06.2018, 00:27

Stasila:Stasila » Вчера, 08:59

биография опять не работает(
Работает . Запрели Лост скорей всего..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2365 untitledef » 12.06.2018, 05:06

kgena_ua:Это есть и давно.
Насколько я понял это есть только если переключать ПМК в Similar Artists?
kgena_ua:кол-во прослушиваний/слушателей ИСПОЛНИТЕЛЯ, жанры, и еще ...
Невероятно, то что и просил и даже больше, спасибо Вам огромное! Еще бы сюда прикрутить строчку с похожими исполнителями как это сделано с тегами, а в идеале конечно чтобы это все опционально включалось/выключалось, допустим через ПМК или Properties.

Как-то так, набросал по быстрому как я это вижу, попытался сделать более-менее компактно но получилось все ровно громоздко:
Спойлер
Изображение
untitledef
Репутация: 1
С нами: 7 лет 1 месяц

Сообщение #2366 kgena_ua » 15.06.2018, 20:04

"Biography, Albums, Similar and title artist info. www.last.fm"
@version "15062018"


- вывод доп. информации;
- меню Properties - изменения.

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

Сообщение #2367 MC Web » 16.06.2018, 01:03

kgena_ua, привет и спасибо!

Хороший получился, без тормозов.
Уже подстроил под себя, мне нравится. :clap:

Спойлер
Изображение
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2368 untitledef » 16.06.2018, 22:13

kgena_ua, спасибо Вам! Последний вопрос, поддержка JScript ожидается? Очень хотелось использовать вместе с Library Tree от WilB.
untitledef
Репутация: 1
С нами: 7 лет 1 месяц

Сообщение #2369 kgena_ua » 17.06.2018, 09:20

Скрипт совместим с JScript до версии, в которой, с какого будуна, Marc заменил color на colour, и убрал поддержку EnableMenuItem().
Т.е. нужно заменить функцию function get_color(){ на
Код: Выделить всё
function get_color(){                        
    if (window.InstanceType == 0){                     
        bgcolor = window.GetColourCUI(ColorTypeCUI.background);                     
        h1_color = window.GetColourCUI(ColorTypeCUI.text);
        //h2_color = window.GetColourCUI(ColorTypeCUI.selection_text);
        h2_color = window.GetColourCUI(ColorTypeCUI.inactive_selection_text);      
        t_color = window.GetColourCUI(ColorTypeCUI.inactive_selection_text);      
    } else if (window.InstanceType == 1) {                      
        bgcolor = window.GetColourDUI(ColorTypeDUI.background);                     
        h1_color = window.GetColourDUI(ColorTypeDUI.text);
        h2_color = window.GetColourDUI(ColorTypeDUI.highlight);   
        t_color = window.GetColourDUI(ColorTypeDUI.highlight);                     
    }                     
    window.Repaint();                     
};   
 
и заремить в функции function on_mouse_rbtn_up (x, y){ все все строки содержащие EnableMenuItem().
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2370 seriousstas » 17.06.2018, 15:25

kgena_ua :hi:
Т.е. нужно заменить функцию
Можно ведь через:
Код: Выделить всё
try {
} catch (e) {};
(Biography, Albums, Similar and title)Получится универсальным.

в которой, с какого будуна, Marc заменил color на colour, и убрал поддержку EnableMenuItem().
Есть ПЛЮСЫ и их на мой взгляд больше.
Сейчас переделываю DSP панельку, должно удобно получиться , что "брать" а затем переключать устройства на лету,
скажем для сравнения по звуку разных output device, что вешать на кнопки нужные DSP пресеты.
получился, без тормозов
Подтверждаю, что-то делали по оптимизации ?
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2371 kgena_ua » 18.06.2018, 16:04

seriousstas:что-то делали по оптимизации ?
Привет, serioussta.
Убрал из function draw_image(gr) определение no cover img, сделал отдельно функцию function get_def_img().
Переделал вызов перерасчета размера изображения img_size в function draw_image(gr). Получалось, что перемещении текста постоянно срабатывал перересчет img_size = calc_img_size(g_img) - добавил две переменные: img_size_recount и def_img_size_recount.
Немного переделал function get_text_array().
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2372 seriousstas » 18.06.2018, 18:23

kgena_ua:Убрал из function draw_image(gr) определение no cover img, сделал отдельно функцию function get_def_img().
Переделал вызов перерасчета размера изображения img_size в function draw_image(gr). Получалось, что перемещении текста постоянно срабатывал перересчет img_size = calc_img_size(g_img) - добавил две переменные: img_size_recount и def_img_size_recount.
Немного переделал function get_text_array().
Я так и думал) Слишком все "гладко" теперь!) :dance:
C DSP,
а именно
fb.GetDSPPresets
fb.GetOutputDevices

- завершил эксперименты - вот , что получилось)
Двойной клик - вешаем на кнопку - одинарный - активация. Вызов списка через контекст.
Последний раз редактировалось seriousstas 18.06.2018, 18:41, всего редактировалось 1 раз.
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2373 MC Web » 18.06.2018, 18:40

При составлении онлайн-плейлистов приходится скачивать и закидывать обложки в папку Logos, чтобы отображались при воспроизведении. А тут случайно закинул ссылку в AIMP, а он и без лишних телодвижений отображает обложки, если они конечно вшиты в файл. Как бы foobar этому научить (естественно без скачивания файла) ? Перепробовал все скрипты.

Пример ссылки
1. Встроенное изображение:

Изображение

2. Ссылка:
Код: Выделить всё
http://static.tunnel.ru/media/audio/2016-09/post_comment/492836//at733911003.mp3
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2374 dimon212909 » 20.06.2018, 20:41

Подскажите пожалуйста как добавить индикацию на панель. Установил playback_repeat_album_0.2.0 поставил на кнопку, но хотелось бы, чтоб при активации было видно так же как при использовании PlaybackOrder. Так как я профан, то надеюсь, что объяснил более-менее понятно. За ранее благодарен!

Спойлер
Изображение

Добавить нужно сюда
Спойлер
// ==PREPROCESSOR==
// @name "DarkOne Display Panel"
// @version "4.0 build20130603"
// @author "super-gau and tedGo, includes partial codes by fbuser, Br3tt and T.P Wang"
// @import "%fb2k_path%themes\DarkOne_v4.0\Others\WSH Scripts\DO 4.0 Global Script.js"
// ==/PREPROCESSOR==

// ----- VARIABLES -----


var t_rem = window.GetProperty("Remain Time on", false);
var g_timer = v_timer = g_alpha = s_alpha = p_alpha = null;
var g_interval, fileinfo, g_trackinfo;
var v_change = g_active = false;
// ----- COLOURS -----
var d_arr = new Array("Default", "Blue", "Green", "Red", "White", "Yellow");
var c_arr = new Array(RGB(191, 228, 255), RGB(128, 192, 255), RGB(0, 200, 70), RGB(255, 0, 0), RGB(255, 255, 255), RGB(255, 255, 0));

function InitColours() {
d_col = window.GetProperty("Display Colour", 0);
g_dcol = d_arr[d_col];
g_acol = c_arr[d_col];
g_fact = g_acol == -65536 ? 0.09 : 0.03;
g_bcol = combColours(ui_backcol, g_acol, g_fact);
}

InitColours();

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

function pad(x, y, z) {
z || (z = ' ');
return x.length < y ? x + z.repeat(y - x.length) : x;
}

function pad_right(x, y, z) {
z || (z = ' ');
return x.length < y ? z.repeat(y - x.length) + x : x
}

function TimeFmt(t) {
var zpad = function(n) {
var str = n.toString();
return str.length < 2 ? "0" + str : str;
}

var h = Math.floor(t / 3600);
t -= h * 3600;
var m = Math.floor(t / 60);
t -= m * 60;
var s = Math.floor(t);

return zpad(h) + ":" + zpad(m) + ":" + zpad(s);
}

function drawSquares(gr, squareSize, paddingSize, x, y, w, h) {
var stepSize = squareSize + paddingSize;
var totalsq = Math.ceil(w / stepSize);
var totalrow = Math.ceil(h / stepSize);

for(var j = 0; j < totalrow; j++) {
for(var i = 0; i < totalsq; i++) {
gr.FillSolidRect(i * stepSize + x, j * stepSize + y, squareSize, squareSize, g_bcol);
}
}
}

// ----- CREATE INFO -----
Info.prototype.setColours = function() {
var metadb = fb.GetNowPlaying();

if (metadb) {
fileinfo = metadb.GetFileInfo();
this.Colours[0] = fileinfo.InfoValue(fileinfo.InfoFind("encoding")) == "lossless" ? g_acol : g_bcol;
this.Colours[1] = fileinfo.InfoValue(fileinfo.InfoFind("encoding")) == "lossless" ? g_bcol : g_acol;
this.Colours[2] = fileinfo.InfoValue(fileinfo.InfoFind("md5")) ? g_acol : g_bcol;
this.Colours[3] = fb.TitleFormat("[%replaygain_track_gain%]").Eval() ? g_acol : g_bcol;
this.Colours[4] = fileinfo.MetaValue(fileinfo.MetaFind("tracknumber"), 0) ? ui_btntxtcol : g_bcol;
this.Colours[5] = fileinfo.MetaValue(fileinfo.MetaFind("totaltracks"), 0) ? ui_btntxtcol : g_bcol;
this.Colours[6] = ui_btntxtcol;
} else for (var i = 0; i < this.Colours.length; i++) this.Colours[i] = g_bcol;
}

Info.prototype.setTrackNo = function() {
var metadb = fb.GetNowPlaying();
var a, b, c, d;

if (metadb) {
a = fb.TitleFormat("[$num(%tracknumber%,2)]").Eval();
b = fb.TitleFormat("[$num(%totaltracks%,2)]").Eval();
c = pad(a, 3);
d = pad(b, 3);
this.TrackNo = c;
this.TotalNo = d;
g_trackinfo = !g_active ? 2 : metadb.RawPath.indexOf("FOO_LASTFM") == 0 ? 1 : 0;
} else {
this.TrackNo = "";
this.TotalNo = "";
}
}

Info.prototype.setPBTime = function() {
this.Elapse = TimeFmt(fb.PlaybackTime);
this.Remain = g_active ? TimeFmt(fb.PlaybackLength - fb.PlaybackTime) : "";
}

Info.prototype.setBitrate = function() {
this.Bitrate = pad_right(fb.TitleFormat("$num(%bitrate%,0)").Eval(), 4);
}

Info.prototype.setInfo = function() {
this.setColours();
this.setTrackNo();
this.setPBTime();
this.setBitrate();
}

function Info() {
this.Colours = new Array(7);
this.setInfo();
}

info = new Info();

// ----- BASE IMAGE OBJECT -----
function BaseImage() {
this.image = null;
this.curVal = "";

this.reset = function() {
this.curVal = "";
}

this.dispose = function() {
this.image && this.image.Dispose();
}

this.isDrawDigit = function(digitValue, index) {
return (this.curVal == null || this.curVal == "" || digitValue != this.curVal.charAt(index));
}
}

// ----- CREATE TRACKNUMBER IMAGE -----
function NumImage() {
this.image = gdi.CreateImage(54, 20);

this.init = function(curNo) {
gr = this.image.GetGraphics();

this.drawDigit(curNo, 0);
this.drawDigit(curNo, 1);
this.drawDigit(curNo, 2);

this.curVal = curNo;

this.image.ReleaseGraphics(gr);
}

this.draw = function(curNo) {
this.init(curNo);
}

this.drawDigit = function(curNo, index) {
var digitValue = curNo.charAt(index);

if (this.isDrawDigit(digitValue, index)) {
var xoffset = index * 18;
gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue * 18, d_col * 22, 18, 20);
}
}
}

NumImage.prototype = new BaseImage();
var g_trackNoImage = new NumImage();
var g_totalNoImage = new NumImage();

// ----- CREATE TIME IMAGE -----
function TimeImage() {
this.image = gdi.CreateImage(120, 20);

this.init = function(time) {
gr = this.image.GetGraphics();

this.drawDigit(time, 0, 0);
this.drawDigit(time, 1, 0);

g_signs && gr.DrawImage(g_signs, 36, 0, 6, 20, 234, d_col * 22, 6, 20);

this.drawDigit(time, 3, -12);
this.drawDigit(time, 4, -12);

g_signs && gr.DrawImage(g_signs, 78, 0, 6, 20, 234, d_col * 22, 6, 20);

this.drawDigit(time, 6, -24);
this.drawDigit(time, 7, -24);

this.curVal = time;

this.image.ReleaseGraphics(gr);
}

this.draw = function(time) {
if (this.curVal == "") this.init(time);
else {
gr = this.image.GetGraphics();

this.drawDigit(time, 0, 0);
this.drawDigit(time, 1, 0);

this.drawDigit(time, 3, -12);
this.drawDigit(time, 4, -12);

this.drawDigit(time, 6, -24);
this.drawDigit(time, 7, -24);

this.curVal = time;

this.image.ReleaseGraphics(gr);
}
}

this.drawDigit = function(time, index, offset) {
var digitValue = time.charAt(index);

if (this.isDrawDigit(digitValue, index)) {
var xoffset = index * 18 + offset;
gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, isNaN(digitValue) ? 0 : digitValue * 18, d_col * 22, 18, 20);
}
}
}

TimeImage.prototype = new BaseImage();
var g_timeImage = new TimeImage();

// ----- CREATE BITRATE IMAGE -----
function BitrateImage() {
this.image = gdi.CreateImage(72, 20);

this.init = function(bitrate) {
gr = this.image.GetGraphics();

this.drawDigit(bitrate, 0);
this.drawDigit(bitrate, 1);
this.drawDigit(bitrate, 2);
this.drawDigit(bitrate, 3);

this.curVal = bitrate;

this.image.ReleaseGraphics(gr);
}

this.draw = function(bitrate) {
this.init(bitrate);
}

this.drawDigit = function(bitrate, index) {
var digitValue = bitrate.charAt(index);

if (this.isDrawDigit(digitValue, index)) {
var xoffset = index * 18;
gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue * 18, d_col * 22, 18, 20);
}
}
}

BitrateImage.prototype = new BaseImage();
var g_bitrateImage = new BitrateImage();

// ----- CREATE VOLUME IMAGE -----
function VolumeImage() {
this.image = gdi.CreateImage(168, 20);

this.init = function(volume) {
gr = this.image.GetGraphics();

this.drawDigit(volume, 0, 0);
this.drawDigit(volume, 1, 0);
this.drawDigit(volume, 2, 0);
this.drawDigit(volume, 3, 0);

g_signs && gr.DrawImage(g_signs, 72, 0, 6, 20, 240, d_col * 22, 6, 20);

this.drawDigit(volume, 5, -12);
this.drawDigit(volume, 6, -12);

g_signs && gr.DrawImage(g_signs, 114, 0, 18, 20, 216, d_col * 22, 18, 20);
g_signs && gr.DrawImage(g_signs, 132, 0, 36, 20, 264, d_col * 22, 36, 20);

this.curVal = volume;

this.image.ReleaseGraphics(gr);
}

this.draw = function(volume) {
if (this.curVal == "") this.init(volume);
else {
gr = this.image.GetGraphics();

this.drawDigit(volume, 0, 0);
this.drawDigit(volume, 1, 0);
this.drawDigit(volume, 2, 0);
this.drawDigit(volume, 3, 0);

this.drawDigit(volume, 5, -12);
this.drawDigit(volume, 6, -12);

this.curVal = volume;

this.image.ReleaseGraphics(gr);
}
}

this.drawDigit = function(volume, index, offset) {
var digitValue = volume.charAt(index);

if (this.isDrawDigit(digitValue, index)) {
var xoffset = index * 18 + offset;
gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue == "-" ? 246 : digitValue * 18, d_col * 22, 18, 20);
}
}
}

VolumeImage.prototype = new BaseImage();
var g_volumeImage = new VolumeImage();

// ----- CREATE MENU -----
function CustomMenu(x, y) {
var a = window.CreatePopupMenu();
var idx;

for (var i = 0; i < d_arr.length; i++) {
a.AppendMenuItem(0, 1 + i, d_arr[i]);
}
a.CheckMenuRadioItem(1, 6, d_col + 1);

a.AppendMenuSeparator();
a.AppendMenuItem(0, 7, "Properties");
a.AppendMenuItem(0, 8, "Configure...");

idx = a.TrackPopupMenu(x, y);

switch (true) {
case (idx >= 1 && idx <= 6):
window.SetProperty("Display Colour", idx - 1);
InitColours();
info.setColours();
g_trackNoImage.reset();
g_totalNoImage.reset();
g_timeImage.reset();
g_bitrateImage.reset();
g_volumeImage.reset();
window.Repaint();
break;

case (idx == 7):
window.ShowProperties();
break;

case (idx == 8):
window.ShowConfigure();
break;
}

a.Dispose();
}

// ----- DRAW -----
function on_paint(gr) {
!window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, ui_backcol);
drawSquares(gr, 2, 1, 0, 30, ww - 26, 20);

gr.DrawRect(1, 0, ww * 17 / 70, 10, 1, info.Colours[0]);
gr.DrawRect(ww * 71 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[1]);
gr.DrawRect(ww * 141 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[2]);
gr.DrawRect(ww * 211 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[3]);

gr.GdiDrawText("LOSSLESS", btn_font, info.Colours[0], ww / 8 - 33, 0, 70, 10, 37);
gr.GdiDrawText("LOSSY", btn_font, info.Colours[1], ww / 8 * 3 - 34, 0, 70, 10, 37);
gr.GdiDrawText("AUDIO MD5", btn_font, info.Colours[2], ww / 8 * 5 - 34, 0, 70, 10, 37);
gr.GdiDrawText("REPLAYGAIN", btn_font, info.Colours[3], ww - ww / 8 - 33, 0, 70, 10, 37);

gr.GdiDrawText("TRACK", btn_font, info.Colours[4], 0, 18, 27, 10, 37);
gr.GdiDrawText("TOTAL", btn_font, info.Colours[5], 60, 18, 27, 10, 37);
gr.GdiDrawText("ELAPSED", btn_font, v_change || t_rem ? g_bcol : info.Colours[6], ww / 2 - 38, 18, 35, 10, 38);
gr.GdiDrawText("TIME", btn_font, v_change ? g_bcol : info.Colours[6], ww / 2 + 5, 18, 20, 10, 38);
gr.GdiDrawText("REMAINING", btn_font, v_change || !t_rem ? g_bcol : info.Colours[6], ww / 2 + 33, 18, 46, 10, 38);
gr.GdiDrawText("VOLUME", btn_font, v_change ? ui_btntxtcol : g_bcol, ww - 88, 18, 34, 10, 37);
gr.GdiDrawText("KBPS", btn_font, v_change ? g_bcol : info.Colours[6], ww - 46, 18, 20, 10, 37);

if (fb.IsPlaying) {
if (g_trackinfo == 0) {
g_trackNoImage.draw(info.TrackNo);
gr.DrawImage(g_trackNoImage.image, 0, 30, 54, 20, 0, 0, 54, 20);

g_totalNoImage.draw(info.TotalNo);
gr.DrawImage(g_totalNoImage.image, 60, 30, 54, 20, 0, 0, 54, 20);
} else {
var noTrack = g_trackinfo == 1 ? 534 : 420;
g_signs && gr.DrawImage(g_signs, 0, 30, 114, 20, noTrack, d_col * 22, 114, 20);
}

g_signs && gr.DrawImage(g_signs, ww / 2 - 63, 30, 18, 20, fb.IsPaused ? 197 : 179, d_col * 22, 18, 20);
}

if (v_change) {
var vol = fb.Volume.toFixed(2) + " db";
g_volumeImage.draw(pad_right(vol, 10));
gr.DrawImage(g_volumeImage.image, ww - 191, 30, 165, 20, 0, 0, 165, 20);
} else {
if (fb.IsPlaying) {
var t_play = t_rem && !g_active ? false : true;
var t_fmt = t_rem ? info.Remain : info.Elapse;
t_play && g_timeImage.draw(t_fmt);
t_play && gr.DrawImage(g_timeImage.image, ww / 2 - 38, 30, 120, 20, 0, 0, 120, 20);
!t_play && g_signs && gr.DrawImage(g_signs, ww / 2 - 38, 30, 120, 20, 300, d_col * 22, 120, 20);

g_bitrateImage.draw(info.Bitrate);
gr.DrawImage(g_bitrateImage.image, ww - 94, 30, 69, 20, 0, 0, 69, 20);
}
}

g_alpha = g_fact == 0.09 ? 20 : 7;
s_alpha = fb.StopAfterCurrent ? 255 : g_alpha;
g_signs && gr.DrawImage(g_signs, ww - 18, 21, 18, 12, 648, d_col * 22, 18, 12, 0, s_alpha);

p_alpha = fb.IsPlaying ? 255 : g_alpha;
g_signs && gr.DrawImage(g_signs, ww - 18, 38, 18, 12, 668 + fb.PlaybackOrder * 20, d_col * 22, 18, 12, 0, p_alpha);

!window.IsTransparent && gr.FillGradRect(0, -25, ww, 75, 90, RGBA(63, 100, 127, 128), 0);
}

// ----- MOUSE ACTIONS -----
function on_mouse_rbtn_up(x, y) {
CustomMenu(x, y);
return true;
}

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

function on_volume_change(val) {
if (v_timer) {
window.ClearTimeout(v_timer);
v_timer = null;
}

v_timer = window.SetTimeout(
function () {
window.RepaintRect(ww / 2 - 38, 18, ww - (ww / 2 - 12), 32);
window.ClearTimeout(v_timer);
v_timer = null;
v_change = false;
}, 3000);

v_change = true;
window.RepaintRect(ww / 2 - 38, 18, ww - (ww / 2 - 12), 32);
}

function on_playback_order_changed(new_order) {
window.RepaintRect(ww - 18, 38, 18, 12);
}

function on_playback_time(time) {
info.setPBTime();
window.RepaintRect(ww / 2 - 38, 30, 120, 20);
}

function on_playback_dynamic_info() {
info.setBitrate()
window.RepaintRect(ww - 94, 30, 69, 20);
}

function on_playback_edited() {
info.setInfo();
window.Repaint();
}

function on_playback_new_track(metadb) {
if (metadb) g_active = fb.PlaybackLength <= 0 ? false : true;
info.setInfo();
window.Repaint();
}

function on_playback_pause(state) {
window.RepaintRect(ww / 2 - 62, 30, 18, 20);
}

function on_playback_stop(reason) {
if (fileinfo) fileinfo.Dispose();

if (reason != 2) {
g_active = false;
info.setInfo();
fb.RunMainMenuCommand("ELPlaylist/Redraw");
}

window.Repaint();
}

function on_playlist_stop_after_current_changed(state) {
window.RepaintRect(ww - 18, 21, 18, 12);
}

function on_notify_data(name, info) {
if (name == "remTime") {
window.SetProperty("Remain Time on", info == true ? true : false);
t_rem = window.GetProperty("Remain Time on");
window.RepaintRect(ww / 2 - 38, 18, 120, 38);
}
}

function on_script_unload() {
g_trackNoImage && g_trackNoImage.dispose();
g_totalNoImage && g_totalNoImage.dispose();
g_timeImage && g_timeImage.dispose();
g_bitrateImage && g_bitrateImage.dispose();
g_volumeImage && g_volumeImage.dispose();
g_signs && g_signs.Dispose();
}
dimon212909
Репутация: 0
С нами: 5 лет 9 месяцев

Сообщение #2375 Mr. Plohish » 04.07.2018, 23:36

Всем привет, скриптом "Last.fm Playcount Sync" марка2003 никто не занимался? интересует полная двухсторонняя синхронизация с профилем на сервисе
Mr. Plohish M
Аватара
Репутация: 0
С нами: 16 лет 6 месяцев

Сообщение #2376 dimon212909 » 08.07.2018, 22:34

Привет! Подскажите пожалуйста, как заставить работать эту строку в JScript? Без "+ fb.PlaybackOrder * 20" она работает, но не выполняет своей функции.

g_signs && gr.DrawImage(g_signs, ww - 18, 38, 18, 12, 668 + fb.PlaybackOrder * 20, d_col * 22, 18, 12, 0, p_alpha);
dimon212909
Репутация: 0
С нами: 5 лет 9 месяцев

Сообщение #2377 seriousstas » 09.07.2018, 16:24

kgena_ua Привет!
Спрошу еще по скрипту "ПОИСК" под палец(и не только, я на домашке пользуюсь),
хороший и даже отличный поиск, пригодился не только мне судя по отзывам в сборке,
остались два момента :
1 Поиск в плейлистах радиостанций.
2 Старый вопрос : после поиска - переход на искомый трек в активном плейлисте, вместо создания отдельного плейлиста search , как сейчас.
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2378 kgena_ua » 10.07.2018, 18:25

seriousstas, привет.
В плейлистах радиостанций я даже не знаю. Например если поиск по названию, то название (%title%) мы получаем только во время проигрывания данной станции, а так %title% возвращает название станции. Если имеется ввиду поиск станции - то, наверное, можно.
По переходу на искомый трек, то тут у меня глухо :smile:
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2379 seriousstas » 10.07.2018, 18:38

kgena_ua:kgena_ua » 6 минут назад

seriousstas, привет.
В плейлистах радиостанций я даже не знаю. Например если поиск по названию, то название (%title%) мы получаем только во время проигрывания данной станции, а так %title% возвращает название станции. Если имеется ввиду поиск станции - то, наверное, можно.
По переходу на искомый трек, то тут у меня глухо
Я все понял :smile:
вопрос этот задавал ранее, а один парень напомнил :
Надо чтоб было так, зашел в поиск, набрал то что тебе надо, создался плейлист с поиском, ты тапнул на трек который искал, сразу поиск закрылся и открылся твой текущий плейлист с включенным треком который ты выбрал
Ну подождем , может и Марк чего добавит в JS Panel ..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2380 kgena_ua » 12.07.2018, 13:47

Исправление мелких ошибок.

"Get Covers (Artwork) radio logos"
version "12072018"


Get Covers (Artwork) radio logos 12072018.rar
(11.56 КБ) Скачиваний: 246
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Пред.След.

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