Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2101 vladj » 13.01.2018, 13:54

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

Сообщение #2102 vladj » 14.01.2018, 00:36

Стас, спасибо за плейлист менеджер, все прекрасно работает. Для меня осталась еще одна хотелка... в плейлисте ( JS Smooth Playlist) при воспроизведении сборки все отображается как нужно, артист и название трека, но при воспроизведении альбома одного артиста убивает стройный ряд одного и того-же. Тут нужно как-то поправить, имхо конечно, если запустили альбом артиста, не писать артиста перед названием трека, если уж забыли кто исполнитель альбома, то в шапке он показан ведь, ну и панельки инфо есть. Хотя прикинул глядя на сборку, второй скрипт отрабатывает так, как мне нужно (WSH Playlist Viewer" @version "2.1.0 by Br3tt"), при запуске сборки название трека и артист, при запуске альбома только название трека.
Этот скрипт скорей всего от [bduzzy][/b], тоже есть масштабирование шрифтов, прогресс бар в строке проигрываемой, работает перестановка в плейлисте
инет станций, треков....только что-то удаления не вижу выделенной позиции. Блин...делаешь - готовишь для машины, а получается что на рабочем юзать начинаешь почти всегда.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #2103 seriousstas » 14.01.2018, 01:58

но при воспроизведении альбома одного артиста убивает стройный ряд одного и того-же
Нужно "подтянуть" titleformat .. Пока это "на потом"
Блин...делаешь - готовишь для машины, а получается что на рабочем юзать начинаешь почти всегда.
Дык аналогично, я уже и на работе пристроил .. Хочу подогнать размеры шрифтов, заголовков , для домашки .

Добавлено спустя 2 часа 5 минут:
AHAPXICT
Enable Windows XP support. Also, support for Vista/7/WINE with IE7/IE8 has
been restored.
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2104 AHAPXICT » 14.01.2018, 07:01

seriousstas, читал, читал)) Только нечего не проверял, на меня какая-то жуткая лень напала, пару месяцев просто не прикасаюсь ни к скриптам ни к фубару вообще, хотя времени полно. Заглядываю на форум, да по другим закладкам "фубаровским". Даже радио станции переключать облом, тыцну на угад и слушаю в фоновом режиме. Вот сейчас посмотрел, три часа уже играет одна станция)) Вот такой офтоп. Ну и со Старым Новым Годом 2018!
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #2105 seriousstas » 16.01.2018, 02:05

kgena_ua Biography & Albums & Similar
У меня в какой-то момент начало просить функцию lang_query , понял , что массив дублирует её название и скорей всего лишний :
var lang_query = new Array("", "ru/");
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2106 seriousstas » 16.01.2018, 11:38

разобрался))
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2107 maniac736 » 19.01.2018, 16:13

Уже голову сломал. Может кто-нибудь сможет подсказать как привести в нормальный вид выделенный мною на картинке шрифт в данном скрипте WSH?
Спойлер
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Playlist Tabs Panel / Updated: 15-02-2013

// ==PREPROCESSOR==
// @feature "dragdrop"
// ==/PREPROCESSOR==

window.MinHeight = window.MaxHeight = 21;

DT_TOP = 0x00000000;
DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_BOTTOM = 0x00000008;
DT_WORDBREAK = 0x00000010;
DT_SINGLELINE = 0x00000020;
DT_EXPANDTABS = 0x00000040;
DT_TABSTOP = 0x00000080;
DT_NOCLIP = 0x00000100;
DT_EXTERNALLEADING = 0x00000200;
DT_CALCRECT = 0x00000400;
DT_NOPREFIX = 0x00000800;
DT_INTERNAL = 0x00001000;
DT_EDITCONTROL = 0x00002000;
DT_PATH_ELLIPSIS = 0x00004000;
DT_END_ELLIPSIS = 0x00008000;
DT_MODIFYSTRING = 0x00010000;
DT_RTLREADING = 0x00020000;
DT_WORD_ELLIPSIS = 0x00040000;
DT_NOFULLWIDTHCHARBREAK = 0x00080000;
DT_HIDEPREFIX = 0x00100000;
DT_PREFIXONLY = 0x00200000;

MF_SEPARATOR = 0x00000800;
MF_ENABLED = 0x00000000;
MF_GRAYED = 0x00000001;
MF_DISABLED = 0x00000002;
MF_UNCHECKED = 0x00000000;
MF_CHECKED = 0x00000008;
MF_STRING = 0x00000000;
MF_POPUP = 0x00000010;
MF_MENUBARBREAK = 0x00000020;
MF_MENUBREAK = 0x00000040;

var blue_1 = RGB(33,35,40);
var blue_1b = RGB(33,35,40);

var blue_5 = RGB(110,135,90);
var blue_5b = RGB(73,111,25);

// Loading images
try { page_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\playlist-full.png" ); }
catch(e) { page_image = false; }

try { page_white = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\playlist-empty.png" ); }
catch(e) { page_white = false; }

try { page_image_add = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\playlist-add.png" ); }
catch(e) { page_image_add = false; }

try { page_white_link = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\playlist-auto.png" ); }
catch(e) { page_white_link = false; }

try { music_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\music.png" ); }
catch(e) { music_image = false; }

try { quit_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\cross.png" ); }
catch(e) { music_image = false; }

try { green_arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_down_green.png" ); }
catch(e) { green_arrow_image = false; }

try { blue_arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\blue_arrow_image.png" ); }
catch(e) { blue_arrow_image = false; }

try { grey_arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\grey_arrow_image.png" ); }
catch(e) { grey_arrow_image = false; }

try { arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_down_black.png" ); }
catch(e) { arrow_image = false; }

try { cross_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\cross_black.png" ); }
catch(e) { cross_image = false; }


var tooltip = window.CreateTooltip();
tooltip.SetMaxWidth(200);

var font = gdi.Font("Tahoma", 11, 0);
var font_bold = gdi.Font("Tahoma", 11, 0);

function RGBA(r, g, b, a) {
return ((a << 24) | (r << 16) | (g << 8) | (b));
}

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

function unique(arr) {
var o = {}, i, l = arr.length, r = [];
for(i=0; i<l;i+=1) o[arr[i]] = arr[i];
for(i in o) r.push(o[i]);
return r;
}

function PlaylistTabs() {

this.GetPlaylists = function() {

var pls = [];

for ( i = 0; i < fb.PlaylistCount; i++ ) {
pls[ pls.length ] = fb.GetPlaylistName(i);
}

this.Playlists = pls;

}

this.AvailableWidth = ww - 62;

this.Update = function() {

this.GetPlaylists();

this.MaxWidth = 250;
this.MinWidth = 135;
this.MaxTabs = Math.floor( (ww - 62) / 135 );

this.PlaylistsDrawnNumber = Math.max( Math.min( this.Playlists.length, this.MaxTabs), 3 );

this.TabWidth = Math.round( Math.min( this.AvailableWidth / this.PlaylistsDrawnNumber, this.MaxWidth) );

this.TabsWidth = this.TabWidth * this.Playlists.length;

}

this.Update();

this.Offset = 0;

this.AdjustOffset = function() {

if ( Tabs.Playlists.length > 0 ) {

if ( !fb.GetPlaylistName( fb.ActivePlaylist ) ) fb.ActivePlaylist = 0;

var new_tab_x = ( fb.ActivePlaylist + 1) * this.TabWidth;
var tab_center_x = new_tab_x - this.TabWidth / 2;
var tab_x1 = new_tab_x - this.TabWidth;
var tab_x2 = new_tab_x;
var view_x1 = this.Offset;
var view_x2 = this.Offset + this.AvailableWidth;

//fb.trace( 'Offset = ' + this.Offset + '\ntab_x1 = ' + tab_x1 + '\ntab_x2 = ' + tab_x2 + '\nview_x2=' + view_x2 + '\ntab_center_x = ' + tab_center_x );

if ( tab_x1 < view_x1 || tab_x2 < view_x1 ) {
this.Offset = tab_x1;
}
else if ( tab_x1 > view_x2 || tab_x2 > view_x2 ) {
this.Offset = view_x1 + tab_x2 - view_x2;
}
else if ( tab_x1 < 0 ) {
this.Offset = 0;
}
else if ( tab_x2 > this.TabsWidth && tab_center_x > this.AvailableWidth ) {
this.Offset = this.TabsWidth - this.AvailableWidth;
}

} else this.Offset = 0;

}

this.DeleteTab = function( tab ) {

var hovertab_cached = tab;

var active_cached = fb.ActivePlaylist;
fb.RemovePlaylist( hovertab_cached - 1 );

this.Update();
this.Offset = ( this.TabsWidth > this.AvailableWidth ) ? ( (this.Offset > this.TabsWidth - this.AvailableWidth ) ? this.TabsWidth - this.AvailableWidth : this.Offset) : 0;

if ( ( hovertab_cached - 1 ) == active_cached ) {

if ( fb.GetPlaylistName( hovertab_cached ) ) {
fb.ActivePlaylist = hovertab_cached;
}
else if ( fb.GetPlaylistName( hovertab_cached - 2 ) ) {
fb.ActivePlaylist = hovertab_cached - 2;
}
}

}

this.CreateTab = function() {

var new_playlist_idx = fb.CreatePlaylist( fb.PlaylistCount, "Плейлист " + ( fb.PlaylistCount + 1 ) );
fb.ActivePlaylist = new_playlist_idx;

this.Update();

var new_tab_x = ( new_playlist_idx + 1 ) * this.TabWidth;
if ( new_tab_x > this.AvailableWidth ) this.Offset = new_tab_x - this.AvailableWidth;

}

this.HiddenOffset = 20;

this.HoverTab = null;
this.HoverTabCached = null;
this.HoverTabCloseButton = 0;

this.Clicked = 0;
this.DragOver = 0;
this.DragTabFrom = 0;
this.DragTabTo = 0;

}

var ww, wh, Tabs, x1, x2;

function on_size() {

wh = window.Height;
ww = window.Width;
Tabs = new PlaylistTabs();
Tabs.AdjustOffset();

}

function on_paint(gr) {

//gr.SetSmoothingMode(3);
gr.SetTextRenderingHint(5);
gr.FillSolidRect( -1, -1, ww+2, wh + 2, RGB(33,35,40));
//gr.DrawLine(0, 21, window.Width, 21, 1, RGB(255, 0, 0));

for ( a in Tabs.Playlists ) {

var x = Math.round( Tabs.HiddenOffset + a * Tabs.TabWidth - Tabs.Offset );
var y_offset = -1;

if ( fb.ActivePlaylist != a && a != fb.PlayingPlaylist ) {

gr.FillSolidRect(x, y_offset, Tabs.TabWidth, wh, Tabs.HoverTab - 1 != a ? blue_1 : blue_1b );

}
if ( fb.PlayingPlaylist == a && fb.ActivePlaylist != fb.PlayingPlaylist ) {

gr.FillSolidRect(x, y_offset, Tabs.TabWidth, wh, Tabs.HoverTab - 1 != a ? blue_5 : blue_5b );

}

if ( fb.ActivePlaylist == a ) gr.DrawLine(x, wh - 1, x + Tabs.TabWidth, wh - 1, 1, RGB(155,155,155));

gr.DrawRect(x, 0 + y_offset, Tabs.TabWidth, wh, 1, RGB(118,119,120));

// Tab bottom line
gr.DrawLine(x, wh - 1, x + Tabs.TabWidth, wh - 1, 1, RGB(118,119,120));
if ( fb.ActivePlaylist == a ) gr.DrawLine(x + 1, wh - 1, x + Tabs.TabWidth, wh - 1, 1, RGB(155,15,155));

// Playlist icon
if ( Tabs.DragOver && a == Tabs.HoverTab - 1 && page_image_add ) {

gr.DrawImage( page_image_add, x + 5, (wh - 16) / 2, 16, 16, 0, 0, 16, 16, 0, 255);

}
else if ( page_image && music_image && page_white_link && page_white ) gr.DrawImage( ( fb.PlayingPlaylist == a ) ? music_image : ( fb.IsAutoPlaylist(a) ? page_white_link : ( fb.PlaylistItemCount(a) > 0 ? page_image : page_white ) ) , x + 5, (wh - 16) / 2, 16, 16, 0, 0, 16, 16, 0, 175); //defolt треугольник

if ( (fb.ActivePlaylist ) == a ) {

if ( Tabs.HoverTabCloseButton == 1 && Tabs.HoverTab - 1 == a ) {

gr.DrawRect(x + Tabs.TabWidth - 20, (wh - 18) / 2, 16, 17, 1, RGB(118,119,120));

}
if ( quit_image ) gr.DrawImage( quit_image, x + Tabs.TabWidth - 16.5, (wh - 8) / 2 - 1, 10, 10, 0, 0, 16, 16, 0, 255); //иконки на плейлистах
var text_sub = 20;

}
else text_sub = 6;

try {

gr.GdiDrawText( Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')', ( fb.ActivePlaylist == a ) ? font_bold : font, ( fb.ActivePlaylist == a || fb.PlayingPlaylist == a ) ? RGB(210,220,200) : RGB(70,70,70), x + 24, 0, Tabs.TabWidth - 26 - text_sub, wh, DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_END_ELLIPSIS );
gr.GdiDrawText( Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')', ( fb.ActivePlaylist == a ) ? font_bold : font, ( fb.ActivePlaylist == a || fb.PlayingPlaylist == a ) ? RGB(210,220,200) : RGB(70,70,70), x + 24, -2, Tabs.TabWidth - 26 - text_sub, wh, DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_END_ELLIPSIS )
gr.GdiDrawText( Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')', ( fb.ActivePlaylist == a ) ? font_bold : font, ( fb.ActivePlaylist == a || fb.PlayingPlaylist == a ) ? RGB(210,220,200) : RGB(70,70,70), x + 22, 0, Tabs.TabWidth - 26 - text_sub, wh, DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_END_ELLIPSIS );
gr.GdiDrawText( Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')', ( fb.ActivePlaylist == a ) ? font_bold : font, ( fb.ActivePlaylist == a || fb.PlayingPlaylist == a ) ? RGB(210,220,200) : RGB(70,70,70), x + 22, -2, Tabs.TabWidth - 26 - text_sub, wh, DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_END_ELLIPSIS );;
gr.GdiDrawText( Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')', ( fb.ActivePlaylist == a ) ? font_bold : font, ( fb.ActivePlaylist == a || fb.PlayingPlaylist == a ) ? RGB(151,200,215) : RGB(151,200,215), x + 23, -1, Tabs.TabWidth - 26 - text_sub, wh, DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_END_ELLIPSIS );

} catch(e) { fb.trace( e.message ); fb.trace( Tabs.Playlists[a] ); }

if ( Tabs.DragOver && a == Tabs.HoverTab - 1 ) {
//gr.DrawImage( green_arrow_image, x = Tabs.HiddenOffset + a * Tabs.TabWidth - Tabs.Offset + Tabs.TabWidth / 2, 0, 16, 16, 0, 0, 16, 16, 0, 255);
}

}

gr.FillSolidRect( 2, 2, 19, 9, RGB(140,150,120)); //левая кнопка <
gr.FillSolidRect( 2, 10, 19, 9, RGB(70,90,60)); //левая кнопка <
gr.FillSolidRect( ww - 41, 2, 39, 9, RGB(140,150,120)); //правая + и >
gr.FillSolidRect( ww - 41, 10, 39, 9, RGB(70,90,60)); //правая + и >

// BUTTONS

gr.DrawRoundRect( 1, 1, 20, 18, 3, 3, 1, RGB(38,49,20)); //левая кнопка < ободок
if ( arrow_image ) gr.DrawImage( arrow_image, 2, (wh - 10)/2, 14, 10, 0, 0, 16, 16, 90, Tabs.Offset > 0 ? 255 : 55);
gr.FillSolidRect( 0, -1,1, wh + 3, RGB(225,235,211));

gr.DrawRoundRect( ww - 42, 1, 20, 18, 3, 3, 1, RGB(38,49,20)); //правая кнопка + ободок
if ( cross_image ) gr.DrawImage( cross_image, ww - 39, (wh - 16)/2, 16, 16, 0, 0, 16, 16, 0, 255);

gr.DrawRoundRect( ww - 22, 1, 20, 18, 3, 3, 1, RGB(38,49,20)); //правая кнопка > ободок
if ( arrow_image ) gr.DrawImage( arrow_image, ww - 17, (wh - 10)/2 - 1, 14, 10, 0, 0, 16, 16, -90, ( Tabs.Offset + 30 > Tabs.TabsWidth - Tabs.AvailableWidth ) ? 115 : 255);

// Underlining buttons
gr.DrawLine(0, wh - 1, 20, wh - 1, 1, RGB(38,49,20));
gr.DrawLine(ww-42, wh - 1, ww, wh - 1, 1, RGB(38,49,20));
gr.DrawLine(Tabs.HiddenOffset + Tabs.Playlists.length * Tabs.TabWidth - Tabs.Offset, wh - 1, ww - 40, wh - 1, 1, RGB(38,38,20));

// DRAG TAB ICON
if ( Tabs.DragTabFrom && Tabs.DragTabTo && Tabs.DragTabFrom != Tabs.DragTabTo && blue_arrow_image && grey_arrow_image ) {
var с = ( Tabs.DragTabTo > Tabs.DragTabFrom ) ? 0 : 1;
//( Tabs.DragTabFrom != Tabs.DragTabTo ) ? blue_arrow_image : grey_arrow_image
gr.DrawImage( grey_arrow_image, x = Tabs.HiddenOffset + ( Tabs.DragTabTo - с ) * Tabs.TabWidth - Tabs.Offset - 8, -4, 16, 16, 0, 0, 16, 16, 0, 255);
}

}

function trackmouse( x ) {

if ( Tabs.Playlists.length > 0 ) {

var real_x = Tabs.Offset - Tabs.HiddenOffset + x;
var tab_num = Math.ceil( real_x / Tabs.TabWidth );

if ( !fb.GetPlaylistName(tab_num - 1) ) tab_num = null;

if ( tab_num != null ){
var close_x = Tabs.TabWidth - (real_x - ( (tab_num - 1) * Tabs.TabWidth));
var closehover = ( close_x < 22 && close_x > 4 ) ? 1 : 0;
} else {
var closehover = 0;
}

return new Array(tab_num, closehover);

} else return false;

}

function on_mouse_move( x, y) {

var got = trackmouse(x);
x2 = x;

if ( got && ( got[0] != Tabs.HoverTab || Tabs.HoverTabCloseButton != got[1] ) ) {

tooltip.Deactivate();

Tabs.HoverTabCached = Tabs.HoverTab;
Tabs.HoverTab = got[0];
Tabs.HoverTabCloseButton = got[1];

if ( Tabs.DragTabFrom && Tabs.DragTabFrom != Tabs.HoverTab && got[0] ) Tabs.DragTabTo = Tabs.HoverTab;
else if ( Tabs.DragTabFrom && Tabs.DragTabFrom == Tabs.HoverTab ) Tabs.DragTabTo = Tabs.DragTabFrom;

if ( Tabs.HoverTab != null ) {

// Activating Tooltip
var pn = Tabs.Playlists[Tabs.HoverTab - 1];
var pc = fb.PlaylistItemCount( Tabs.HoverTab - 1 );
var text = 'Name: ' + pn + '\nItems: ' + pc;
tooltip.Text = text;

tooltip.Activate();

}
else {

// Deactivating Tooltip
tooltip.Deactivate();

}

window.Repaint();

}
//else if ( Tabs.DragTabFrom == Tabs.HoverTab && !Tabs.DragTabTo && Math.abs(x1 - x2) > 16 ) {

//Tabs.DragTabTo = Tabs.HoverTab;
//window.Repaint();

//}

if ( Tabs.HoverTab != null || x > ww - 42 || x < 20 || Tabs.DragTabFrom ) {

// Changing cursor
window.SetCursor(32649);

}
else {

// Reversing cursor
window.SetCursor(32512);

}

}

function on_mouse_leave() {

Tabs.HoverTab = null;
Tabs.HoverTabCloseButton = 0;

Tabs.DragTabTo = 0;
Tabs.DragTabFrom = 0;

window.SetCursor(32512);
window.Repaint();

tooltip.Deactivate();

}

function on_playlists_changed() {

Tabs.Update();

window.Repaint();

}

function on_playlist_switch() {

Tabs.Update();

if ( !Tabs.Clicked ) Tabs.AdjustOffset();

window.Repaint();

}

function on_mouse_wheel( delta ) {

// Down
if ( delta < 0 && Tabs.Offset < Tabs.TabsWidth - Tabs.AvailableWidth ) {
( Tabs.Offset - delta * 50 > Tabs.TabsWidth - Tabs.AvailableWidth ) ? Tabs.Offset = Tabs.TabsWidth - Tabs.AvailableWidth : Tabs.Offset -= delta * 50;
window.Repaint();
}
// Up
else if ( delta > 0 && Tabs.Offset > 0 ) {
( Tabs.Offset - delta * 50 > 0 ) ? Tabs.Offset -= delta * 50 : Tabs.Offset = 0;
window.Repaint();
}

//fb.trace( Tabs.Offset );
//fb.trace( Tabs.TabsWidth - Tabs.AvailableWidth );
}

function on_mouse_lbtn_up(x, y) {

// End x coordinate
x2 = x;

if ( x > ww - 21 && !Tabs.Clicked ) {

if ( Tabs.TabsWidth > Tabs.AvailableWidth ) ( Tabs.Offset + 60 > Tabs.TabsWidth - Tabs.AvailableWidth ) ? Tabs.Offset = Tabs.TabsWidth - Tabs.AvailableWidth : Tabs.Offset += 60;
fb.trace( Tabs.Offset );
window.Repaint();

}
else if ( x > ww - 42 && x < ww - 21 && !Tabs.Clicked ) {

var _menu = window.CreatePopupMenu();
var i = 1;
var ret;
var metadb = fb.GetNowPlaying() ? fb.GetNowPlaying() : ( fb.GetFocusItem() ? fb.GetFocusItem() : false);

var _firstgroup = window.CreatePopupMenu();
var _secondgroup = window.CreatePopupMenu();

_menu.AppendMenuItem(MF_STRING, i++, "Создать пустой плейлист");

if ( metadb ) {

_menu.AppendMenuSeparator();

// ARTIST
var artist = fb.TitleFormat("[%artist%]").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Артист (" + (artist ? artist : 'Unknown') + ')');
if ( !artist ) _firstgroup.EnableMenuItem( i - 1, 1);

// GENRE
var genre = fb.TitleFormat("[%genre%]").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Жанр (" + (genre ? genre : 'Unknown') + ')');
if ( !genre ) _firstgroup.EnableMenuItem( i - 1, 1);

// STYLE
var style = fb.TitleFormat("[%style%]").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Стиль (" + (style ? style : 'Unknown') + ')');
if ( !style ) _firstgroup.EnableMenuItem( i - 1, 1);

// DATE
var date = fb.TitleFormat("[%date%]").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Дата (" + (date ? date : 'Unknown') + ')');
if ( !date ) _firstgroup.EnableMenuItem( i - 1, 1);

// LABEL
var label = fb.TitleFormat("$if3(%LABEL%,%PUBLISHER%,%DISCOGS_LABEL_LINK%,)").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Название /Label/ (" + (label ? decodeURIComponent( label ) : 'Unknown') + ')');
if ( !label ) _firstgroup.EnableMenuItem( i - 1, 1);

// COUNTRY
var country = fb.TitleFormat("$if3(%COUNTRY%,%DISCOGS_COUNTRY%,)").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Страна (" + (country ? country : 'Unknown') + ')');
if ( !country ) _firstgroup.EnableMenuItem( i - 1, 1);

// FORMAT
var codec = fb.TitleFormat("[$codec()]").EvalWithMetadb( metadb );

_firstgroup.AppendMenuItem(MF_STRING, i++, "Формат (" + (codec ? codec : 'Unknown') + ')');
if ( !codec ) _firstgroup.EnableMenuItem( i - 1, 1);

_menu.AppendMenuItem(MF_STRING | MF_POPUP, _firstgroup.ID, "Создать автоплейлист для...");

}

ret = _menu.TrackPopupMenu(x, y);

if (ret == 1 ) {

Tabs.CreateTab();

}
else if (ret == 2 ) {

var artists = artist.split(', ');

if ( artists.length > 1 ) var query = artists.join('" ИЛИ Артист "');
else var query = artist;

query = 'artist HAS "' + query + '"';

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + artist, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 3) {

var genres = genre.split(', ');

if ( genres.length > 1 ) var query = genres.join('" ИЛИ жанр "');
else var query = genre;

query = 'genre HAS "' + query + '"';

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + genre, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 4 ) {

var styles = style.split(', ');

if ( styles.length > 1 ) var query = styles.join('" ИЛИ %style% HAS "');
else var query = style;

query = '%style% HAS "' + query + '"';

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + style, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 5) {

date = date.replace(/.*(\d{4}).*/g, "$1");
query = 'date HAS ' + date;

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + date, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 6 ) {

label = decodeURIComponent( label );
query = '%LABEL% HAS "' + label + '" OR %PUBLISHER% HAS "' + label + '" OR %DISCOGS_LABEL_LINK% HAS "' + encodeURIComponent( label ) + '"';

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + label, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 7 ) {

query = '%COUNTRY% IS "' + country + '" OR %DISCOGS_COUNTRY% IS "' + country + '"';

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + country, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}
else if (ret == 8 ) {

query = '%codec% IS ' + codec;

fb.CreateAutoPlaylist( fb.PlaylistCount, "Автоплейлист для " + codec, query, "%album artist% $sub(9999,%date%) %album% %discnumber% %tracknumber%");
fb.ActivePlaylist = fb.PlaylistCount - 1;

}

}
else if ( x < 20 && !Tabs.Clicked ) {

( Tabs.Offset - 60 > 0 ) ? Tabs.Offset -= 60 : Tabs.Offset = 0;
window.Repaint();

}
else {

if ( Tabs.HoverTabCloseButton == 1 && Tabs.HoverTab - 1 == fb.ActivePlaylist ) {

Tabs.DeleteTab( Tabs.HoverTab );

}
else if ( Tabs.DragTabFrom && Tabs.DragTabTo && Math.abs(x1 - x2) > 16 ) {

fb.MovePlaylist( Tabs.DragTabFrom - 1, Tabs.DragTabTo - 1);

}
else if ( Tabs.HoverTab != null && Tabs.HoverTab - 1 == fb.ActivePlaylist && !Tabs.DragTabTo ) {

fb.RunMainMenuCommand('Edit/Select all');
Tabs.AdjustOffset();

}
else if ( Tabs.Clicked && !Tabs.DragTabTo ) {

fb.ActivePlaylist = Tabs.HoverTab - 1;

}

// Emptying useless vars
Tabs.DragTabFrom = 0;
Tabs.DragTabTo = 0;

}

Tabs.Clicked = 0;

}

function on_mouse_lbtn_down(x, y) {

if ( x > 20 && x < ww - 40 && Tabs.HoverTab != null ) {

Tabs.Clicked = 1;
Tabs.DragTabFrom = Tabs.HoverTab;
x1 = x;

}

}

function on_mouse_mbtn_down(x, y, mask) {

if ( x > 20 && x < ww - 40 ) {

if ( Tabs.HoverTab != null ) {

Tabs.DeleteTab( Tabs.HoverTab );

}
else {

Tabs.CreateTab();

}

}

}

function on_playback_new_track( metadb ) {

window.Repaint();

}

function on_playback_starting(cmd, is_paused) {

window.Repaint();

}

function on_playlist_items_added(playlist) { window.Repaint(); }

function on_playlist_items_removed(playlist, new_count) { window.Repaint(); }

function on_playback_stop(reason) {

if ( reason == 0 ) {
fb.PlayingPlaylist = 4294967295;
window.Repaint();
}

}

function on_mouse_lbtn_dblclk(x, y, mask) {

if ( x > 20 && x < ww - 40 ) {
if ( Tabs.HoverTab != null ) {

if ( fb.IsAutoPlaylist( Tabs.HoverTab - 1 ) ) fb.ShowAutoPlaylistUI( Tabs.HoverTab - 1 );
else fb.RunMainMenuCommand( 'View/Playlist Manager' );

}
else fb.RunMainMenuCommand( 'View/Playlist Manager' );
}

}

function on_mouse_rbtn_up(x, y, mask) {

var _menu = window.CreatePopupMenu();
var _submenu = window.CreatePopupMenu();
var _newplaylistmenu = window.CreatePopupMenu();
var selected_tracks = plman.GetPlaylistSelectedItems( fb.ActivePlaylist );
var i = 1;
var ret;

// Saving tab ID
Tabs.HoverTabCached = Tabs.HoverTab;

// Creating menu items
_menu.AppendMenuItem(MF_STRING, i++, "Создать пустой плейлист");

_newplaylistmenu.AppendMenuItem(MF_STRING, i++, '... и копировать выделенные треки');
_newplaylistmenu.AppendMenuItem(MF_STRING, i++, '... и переместить выделенные треки');
_newplaylistmenu.AppendTo( _menu, MF_STRING | ( selected_tracks.Count > 0 ? MF_ENABLED : MF_DISABLED ), "Создать новый плейлист...");

if ( selected_tracks.Count > 0 ) {

var artist = [];
function iterate( item ) {

info = item.GetFileInfo();
var artist_current = info.MetaValue( info.MetaFind('artist'), 0);
if ( artist_current ) artist.push( artist_current );

}

function duff(iterations) {
var i = iterations % 8;
var n = 0;
if( i>0 ) {
do {
var item = selected_tracks.Item( n++ );
iterate(item);
}
while(--i);
}
i = parseInt( iterations / 8 );
if( i>0 ) {
do {

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

var item = selected_tracks.Item( n++ );
iterate(item);

}
while(--i);
}
}

duff( selected_tracks.Count );
//fb.trace(artist);
artist = unique(artist);
if ( artist.length > 1 ) artist = 'Various artists';
else {
artist = artist[0];
}

}

if ( Tabs.Playlists.length > 0 ) {

_menu.AppendMenuSeparator();

for ( a in Tabs.Playlists ) {

_submenu.AppendMenuItem(MF_STRING, i++, Tabs.Playlists[a] + ' (' + fb.PlaylistItemCount(a) + ')');

}

if ( fb.ActivePlaylist < i ) {
_submenu.EnableMenuItem( fb.ActivePlaylist + 4, 1, bypos = false);
_submenu.CheckMenuItem( fb.ActivePlaylist + 4, 1, bypos = false);
}

_submenu.AppendTo( _menu, MF_STRING, "Выбрать плейлист");

}

if ( fb.PlaylistItemCount( Tabs.HoverTabCached - 1 ) > 0 ) {
_menu.AppendMenuSeparator();
_menu.AppendMenuItem(MF_STRING, i++, "Очистить “" + fb.GetPlaylistName( Tabs.HoverTabCached - 1 ) + "”" );
if ( fb.IsAutoPlaylist( Tabs.HoverTabCached - 1 ) ) _menu.EnableMenuItem( i-1, 1, bypos = false);
}

if ( Tabs.HoverTab != null ) {
_menu.AppendMenuSeparator();
_menu.AppendMenuItem(MF_STRING, i, "Удалить “" + fb.GetPlaylistName( Tabs.HoverTabCached - 1 ) + "”" );
n = 1;
}

ret = _menu.TrackPopupMenu(x, y);

if (ret == 1 ) {

Tabs.CreateTab();

}
else if ( ret == 2 ) {

var new_playlist = fb.CreatePlaylist(fb.PlaylistCount, artist);
plman.InsertPlaylistItems( new_playlist, 0, selected_tracks, true);
fb.ActivePlaylist = new_playlist;

}
else if ( ret == 3 ) {

var new_playlist = fb.CreatePlaylist(fb.PlaylistCount, artist);
plman.InsertPlaylistItems( new_playlist, 0, selected_tracks, true);
plman.RemovePlaylistSelection( fb.ActivePlaylist );
fb.ActivePlaylist = new_playlist;

}
else if ( ret >= 4 && ret < i-1 ) {

fb.ActivePlaylist = ret - 4;

}
else if ( ret == i-1 ) {

b = [];
for ( p = 0; p < fb.PlaylistItemCount( Tabs.HoverTabCached - 1 ); p++) {
b.push( p );
}

plman.SetPlaylistSelection( Tabs.HoverTabCached - 1, b, true);
plman.RemovePlaylistSelection( Tabs.HoverTabCached - 1 );


}
else if ( ret == i ) {

Tabs.DeleteTab( Tabs.HoverTabCached );

}
return true;

}

function on_drag_over( Drag, x, y, mask) {

Tabs.DragOver = 1;
on_mouse_move(x, y);

}

function on_drag_drop( Drag, x, y, mask) {

on_mouse_move(x, y);

Drag.Parsable = true;
Drag.ToSelect = true;

//fb.trace('Tabs.HoverTab = ' + Tabs.HoverTab);

Drag.Playlist = Tabs.HoverTab - 1;
Drag.ToPlaylist();
fb.ActivePlaylist = Tabs.HoverTab - 1;
Tabs.DragOver = 0;

}

function on_drag_leave() {
Tabs.DragOver = 0;
on_mouse_leave();
}
Вложения
Pl_tab_script.jpg
maniac736 M
Аватара
Откуда: Россия Иркутск
Репутация: 11
С нами: 7 лет 1 месяц

Сообщение #2108 vladj » 19.01.2018, 19:45

maniac736:Уже голову сломал. Может кто-нибудь сможет подсказать как привести в нормальный вид выделенный мною на картинке шрифт в данном скрипте
Подсказать сможет только тот, у кого эта сборка установлена, в других не проверить т.к. скрипт крашится будет, там папки -картинки нужны по пути s7e_files\\images, ради ответа сборку ставить в ломы.... а что, правой по окну и в Properties разве нет настройки изменения цвета в этом месте ?
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #2109 maniac736 » 19.01.2018, 20:18

vladj, данный скрипт не крашится. в данном случае мною за основу была взята Сборка foobar2000 RU Индиго от San-dr версии 1.3.1 + Foobar 2000 1.3.17/ Просто я добавил в него CUI + PSS. Все необходимые картинки там есть. Но вопрос к картинкам не касается - речь исключительно о цветовой настройка шрифта средства WSH. Мышью там ничего не настроишь. Я многое менял и настраивал вручную меняя код. Просто WSH для меня пока как большая черная книга и я с цветами ни разу даже вне скриптов с такой проблемой не сталкивался.
maniac736 M
Аватара
Откуда: Россия Иркутск
Репутация: 11
С нами: 7 лет 1 месяц

Сообщение #2110 MC Web » 19.01.2018, 22:10

maniac736, если нужен Менеджер плейлистов в виде вкладок, вот еще вариант (настройка цвета в Свойства WSH):

Изображение

WSH Tabbed Playlist Manager_3.3.0_Rus
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #2111 vladj » 19.01.2018, 22:56

Ты зачем напостил в двух темах, смотри в другой, где я ответил....только путаницу вносишь...
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #2112 maniac736 » 20.01.2018, 05:33

MC Web, Благодарю вас. Попробую. Но этот скрипт пока оставлю все же.

Добавлено спустя 4 часа 1 минуту:
vladj,
Ты зачем напостил в двух темах, смотри в другой, где я ответил....только путаницу вносишь...
Сей вопрос относится к скрипту взятому из сборки Индиго взятой с другого сайта. Нахожусь в процессе поиска подходящего скрипта, поэтому пробую разные. Вопрос заданный мною в другой теме относился именно к 2 скриптам из сборки S8E

Добавлено спустя 5 минут 55 секунд:
vladj, кстати данный вами совет в той теме дал результат. Спасибо вам от души :smile:
Вложения
Pl_tab_script.jpg
maniac736 M
Аватара
Откуда: Россия Иркутск
Репутация: 11
С нами: 7 лет 1 месяц

Сообщение #2113 kgena_ua » 21.01.2018, 15:50

master_fb2k:kgena_ua у Вас тут ошибочка вышла $directory_path(%path%)я заменил на это, теперь норма[%path%]
Какая же то ошибка, просто $directory_path(%path%) так себя ведет для url. В любом случае я делал скрипт "Properties & properties file (ml)" так, чтобы каждый мог построить под себя, редактируя массив tfname.

vladj:Автор скрипта противится такой возможности...
Да автор и не противится :smile: , просто у меня нет тача, и соответственно нет возможности тестировать на тач-мониторе.

vladj:...этот скрипт био качает картинки в любом случае, даже если и панель био не в работе
Я никогда, наверное, не упоминал , но в скрипте предусмотрено отключение работы скрипта если панель со скриптом не открыта:
есть
Код: Выделить всё
var panel_on = true;
есть в function on_metadb_changed()
Код: Выделить всё
    if (!panel_on) return;
и сама функция
Код: Выделить всё
function on_notify_data(name, info) {
    if(name == "panel") {
        if (info == "bio"){
            panel_on = true;
            artist = "";
            on_metadb_changed();
        } else{
            panel_on =  false;
        }
    }
}
Это возможно если кнопки для выбора панели на WSH или JS, т.е. через передачу данных между скриптами notify.
В скрипте для кнопок у меня прописано, если выбрана панель БИО
Код: Выделить всё
window.NotifyOthers("panel", "bio");
для других кнопок выбора панели соответственно
Код: Выделить всё
window.NotifyOthers("panel", "панель такая...");

seriousstas:if (!window.IsVisible)
seriousstas, наверное не подойдет. Нужно периодически проверять значение. По какому критерию или событию
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2114 sudden » 21.01.2018, 16:07

kgena_ua,
kgena_ua:Я никогда, наверное, не упоминал , но в скрипте предусмотрено отключение работы скрипта если панель со скриптом не открыта:
какое значение надо изменить? потому что при таких значениях идет скачивание био
kgena_ua:есть
Код: Выделить всё
var panel_on = true;
есть в function on_metadb_changed()
Код: Выделить всё
if (!panel_on) return;
и сама функция
Код: Выделить всё
function on_notify_data(name, info) {
    if(name == "panel") {
        if (info == "bio"){
            panel_on = true;
            artist = "";
            on_metadb_changed();
        } else{
            panel_on =  false;
        }
    }
}
sudden M
Репутация: 22
С нами: 17 лет 9 месяцев

Сообщение #2115 vladj » 21.01.2018, 16:54

kgena_ua:просто у меня нет тача, и соответственно нет возможности тестировать
Так тач и не нужен, тычек по тачу тождественнен на обычном мониторе щелчку мышей по месту расположения курсора. Если не изменяет память в твоих крайних скриптах при закрытии-свертывании текста Био название альбому улетает вниз-вправо. На скрипте, который Стас модифицировал мы вытягиваем текст Био до верха и закрываем щелчком по заглавию (названию). Текст сворачивается вниз-влево. Размер запоминается выведенного на всю панель текста и если не менять размер окна, то одним тычком-щелчком разворачиваем-сворачиваем. По крайней мере мне и на рабочем удобней пользоватся скриптом модифицированным. Так-же на рабочем обычном мониторе работает протяжка...ставим курсор и тянем мышей текст. А на таче мы вместо курсора тянем пальцем. Так-же можно и листать фото артиста...на таче движением пальца, на обычном движение по картинке влево-вправо меняем картинки.
Просто "выцарапывать" из левого-нижнего угла проблематичней....даже на обычном мониторе.
"отключение работы скрипта если панель со скриптом не открыта" - меня тоже очень интересует, достаточно включать - отключать и без кнопки, а в контекстном Properties.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #2116 maniac736 » 22.01.2018, 14:02

vladj, MC Web, спасибо вам за помошь со скриптом. В конечном итоге остановился на скрипте со сборки S8E

Спойлер
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Playlist Tabs Panel / Updated: 15-02-2013

// ==PREPROCESSOR==
// @feature "dragdrop"
// ==/PREPROCESSOR==
Вложения
My_Foobar14.jpg
Вот такой вот итог
maniac736 M
Аватара
Откуда: Россия Иркутск
Репутация: 11
С нами: 7 лет 1 месяц

Сообщение #2117 seriousstas » 23.01.2018, 03:23

kgena_ua :hi:
Скрипт Biography & Albums & Similar artist info. www.last.fm - без вмешательств , настройки сброшены.
Картинки к радиостанциям (после первого запуска плеера) загружаются только посте рестарта скрипта или смены трека ,где "подпилить" ?

С обычными треками на первый взгляд норм - перезапуск - картинка , НО если оставить курсор на другом треке , скажем другого альбома , то - перезапуск пустой экран (через раз, см видео).


На Вашей сборке все ОК, но это полагаю связано со скоростью загрузки скрипта ..
У Вас через PSS сплиттер есть милисекундные задежки, а в моём случае из МПС скрипт стартует мгновенно и что-то идет не так.
Текст при этом загружается .
ВИДЕО
Вложения
Снимок экрана (27)-1.png
Это при первом старте плеера
Снимок экрана (27)-1.png (9.02 КБ) Просмотров: 2515
Снимок экрана (28)-2.png
После перезапуска скрипта
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2118 seriousstas » 24.01.2018, 03:53

Если убрать
Код: Выделить всё
// get_img_files_from_dir(artist_folder_path(artist), artist);
из function get_img() , то загружает картинки радио станций.
С фокусом на другом треке - недогруз остается.

cycle_timer у вас 1500 , почему не 1000 ? )
И было-бы здорово сбрасывать таймер цикла при смене тегов , чтоб не моргало две картинки подряд при малом интервале ..

и еще function get_files_if_loaded
здесь можно таймер поставить и 50 ..
у меня отлично работает.Получаем картинку на пол секи быстрее
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2119 seriousstas » 25.01.2018, 18:57

Готов мод биографии на основе /viewtopic.php?p=67641#p67641 .
Все прошлые плюшки :
1 • Кнопки сверху для быстрого доступа.
2 • Открытие-раскрытие одним кликом (усовершенствованное))
3 • Автосмена языка на английский (если нет русского ,пример в конце видео)
и возврат при смене трека
4 • Автосмена на картинки альбомов (если нет картинок артиста)
и возврат при смене трека
5 • Фронт картинка из папки (или кавер станции) пока грузим или нет на сервере
6 • Возможность управлять на тач панелях .
7 • Адаптирован под новую панельку (будет работать и на старых) :
https://github.com/marc2k3/foo_jscript_panel/releases

phpBB [media]


Download
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2120 Marakobes » 26.01.2018, 10:57

kgena_ua, привет. Использую Ваш скрипт
// @name "Biography Text & Album Info & Picture. www.last.fm" (модифицирован для радиостанций)
// @version "06102017"
// @feature "v1.4"
пока не обновлял, боюсь чего то перестанет работать)))
прошу помочь со скачиванием картинок и текста с ластов, вот в чем вопрос - иногда файловая структура содержит вложенные папки Исполнитель\Альбом\CD1, CD2, а иногда файлы альбома лежат в Исполнитель\Альбом. Хочу чтобы фото качались всегда в корневую папку %artist%\Images, а описание в %artist%\Bio
пример:
Industrial (пра-пра-дедушкина папка)
|
+ Rammstein (пра-дедушкина папка)
>>>|
>>>>+ 2017 - Paris (дедушкина папка)
>>>>>>|
>>>>>>+ CD1 (родительская папка)
>>>>>>+ CD2 (родительская папка)
Marakobes
Репутация: 1
С нами: 12 лет 3 месяца

Пред.След.

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