ЗЫ. Отдельное спасибо AHAPXICT, за помощь в допиливании сборки.

Список разделов › foobar2000 › Секреты foobar2000
Если речь про МОД - то просто отключи загрузку . Останется кавер из папки (один) .нужно через контекстное меню реализовать переключение показа album cover с last.fm и локальной папки с музыкальными файлами где есть картинки типа, front
Как вариант в будущем. Мне казалось существующий вариант удобнее:сделать пунктик вкл/выкл auto cycle images
Aliado_71, нетМожно сделать что бы в приоритете был показ сначала картинок из папки с муз.файлами
Вернее не правильное описание к альбомам - название и т.д.подгружаются "не те альбомы"
vladj, тут я не понял, обложки качаются те, что есть на странице LastFM для выбранного исполнителя. back и CD там нет.ибо качнутся могут каверы от нескольких альбомов и не качнутся back и CD
seriousstas, да пропустил.Полагаю ещё get_fn нужна
function get_fn(p) {
if (!p) return;
return p.replace(/.*\\|\..*/g,'');
}
Режим № 1 - для изображений небольшого размера. Суть - в массиве хранятся пути к изображения. При переключении они быстро обрабатываются.чем отличаются Mode 1 от Mode 2
Да подтверждаю, теперь удобно. Спасибоkgena_ua, для Aliado_71 я вчера сделал этот пункт в меню (он просто не написал что этот вопрос снят)
// ==PREPROCESSOR==
// @name "Biography Text & Album Info & Picture. www.last.fm"
// @author "kgena_ua"
// @version "01122016"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }
function getRed(color) {return ((color >> 16) & 0xff);};
function getGreen(color) {return ((color >> 8) & 0xff);};
function getBlue(color) {return (color & 0xff);};
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;
MF_ENABLED = 0x00000000;
MF_GRAYED = 0x00000001;
MF_SEPARATOR = 0x00000800;
var ww = 200, wh = 200;
var font_name_h = window.GetProperty(" font name: artist", "Arial");
var font_name_t = window.GetProperty(" font name: biography", "Arial");
var font_size_h = window.GetProperty("font size: artist", 12);
var font_size_t = window.GetProperty("font size: biography", 12);
var h_font_style = window.GetProperty(" font style: artist", 1);
var t_font_style = window.GetProperty(" font style: biography", 0);
var min_font_size = 12;
var max_font_size = 16;
var txt_shadow = window.GetProperty(" shadow of the font", true);
var h_font, t_font;
get_font();
function get_font(){
h_font = gdi.Font(font_name_h, font_size_h, h_font_style);
h2_font = gdi.Font(font_name_t, font_size_t, h_font_style);
t_font = gdi.Font(font_name_t, font_size_t, t_font_style);
}
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);
h_color = window.GetColorCUI(ColorTypeCUI.text);
t_color = window.GetColorCUI(ColorTypeCUI.inactive_selection_text);
} else if (window.InstanceType == 1) {
bgcolor = window.GetColorDUI(ColorTypeDUI.background);
h_color = window.GetColorDUI(ColorTypeDUI.text);
t_color = window.GetColorDUI(ColorTypeDUI.highlight);
}
window.Repaint();
};
get_color();
function on_colors_changed(){
get_color();
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tmp_b_path = fb.ProfilePath + "\\tmp_Biography\\";
if (!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};
var script_path = tmp_b_path + "_download\\";
if (!fso.FolderExists(script_path)) {fso.CreateFolder(script_path)};
if (!fso.FileExists(script_path + "download.vbs")) {create_download_file()};
var doc = new ActiveXObject("htmlfile");
var WshShell = new ActiveXObject("WScript.Shell");
var vbs = "cscript //nologo \"" + script_path + "download.vbs\"";
var default_img_path = window.GetProperty(" default img path",".\\maybe\\textures\\nocover\\nocover.png");
var default_img = window.GetProperty(" default img", false);
var default_img_transparent = window.GetProperty(" default img transparent (0-255)", 100);
load_last_fm_logo();
var logo_img = gdi.Image(script_path + "footer_logo.png");
var artist, tf_artist, old_artist, album;
var path, directory_path;
function clean_name(n) {
if (!n) return;
return n.replace(/[\/\:\*\?\"\<\>\|]/g,'').replace(/^\s+|\s+$/g,"").substr(0,200);
}
function artist_folder_path(n) {
if (!n) return;
return tmp_b_path + n;
}
function check_folder(n) {
if (!n) return;
try {
if(!fso.FolderExists(n)) {fso.CreateFolder(n)};
} catch(e) {}
}
function get_fn(p) {
if (!p) return;
return p.replace(/.*\\|\..*/g,'');
}
function get_fnext(p) {
if (!p) return;
return p.replace(/.*\\/g,'');
}
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 g_img = null;
var p_margin = window.GetProperty(" margin: picture", 0);
var align_mode_a = new Array("adjust", "adjust top - center", "adjust top - left", "centre", "centre - top", "stretch");
var align_mode = window.GetProperty("align mode", 1);
var selected = 0;
var files = [];
var images = [];
var save_images = window.GetProperty("save images", false);
var limit = window.GetProperty(" download limit",5);
var cycle = window.GetProperty("auto cycle (sec)", 0);
if (cycle > 0) set_cycle_timer();
var fader = 255;
var fade_effect = window.GetProperty("fade effect", false);
var fade_step = window.GetProperty("fade step", 25);
var on_pic = false;
var download_quality = window.GetProperty("download quality", 1);
var quality = [
[ "low", "avatar170s" , "avatar300s"],
[ "medium", "300x300" , "300x300"],
[ "high", "770x0" , ""]
];
var scrollbar = window.GetProperty(" scrollbar", true);
var scrollbar_w = window.GetProperty(" scrollbar width ", 4);
var scrollbar_k;
var st_x = 0;
var sb_posy = 0;
var on_sb = false;
var on_sb_down = false;
var st_color;
var bg_transparent = window.GetProperty(" bg transparent (0-255)", 200);
var t_margin = window.GetProperty(" margin: text", 10);
var txt_x = window.GetProperty("txt_x", window.Width / 2);
var old_txt_x = 0;
var txt_y = window.GetProperty("txt_y", window.Height / 2);
var delta_x, delta_y;
var h_x, h1_y, h2_y, t_x, t_x;
var text = "";
var text_not_found = new Array(". . .", ". . .", ". . .");
var s_text = 0;
var h_text_row_height = 0;
var text_row_height = 0;
var text_rows = 0;
var text_visable_rows = 0;
var text_visable_height = 0;
var text_array = [];
var on_text = false;
var on_header = false;
var on_text_down = false;
var refresh_txt = true;
var album_info = window.GetProperty("album info", true);
var lang_query = new Array("", "ru/");
var lang_text = new Array("in", "ru");
//var lang_query = new Array("", "ru/", "zh/");
//var lang_text = new Array("in", "ru", "zh");
var lang = window.GetProperty("lang", 0);
var select_p_a = window.GetProperty("artist/album", 0);
var p_a = new Array("images", "albums");
var panel_on = true;
var selection_mode = window.GetProperty("selection mode", 0);
var metadb;
on_item_focus_change();
function on_paint(gr){
!window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);
draw_image(gr);
if(set_cycle){
gr.FillSolidRect(0, 0, ww, wh, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),bg_transparent));
var txt_cycle = cycle == 0 ? "off" : cycle + " sec";
set_cycle && gr.GdiDrawText("auto cycle: " + txt_cycle, t_font, t_color, 0, 20, ww, wh, DT_CENTER | DT_WORD_ELLIPSIS );
} else{
gr.FillSolidRect(txt_x, txt_y, ww - txt_x, wh - txt_y, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),bg_transparent));
}
draw_scrollbar(gr);
txt_shadow && gr.GdiDrawText( tf_artist, h_font, RGB(0,0,0), h_x + 1, h1_y + 2, ww - h_x - t_margin, wh, DT_LEFT | DT_WORD_ELLIPSIS | DT_NOPREFIX );
gr.GdiDrawText( tf_artist, h_font, h_color, h_x, h1_y, ww - h_x - t_margin, wh, DT_LEFT | DT_WORD_ELLIPSIS | DT_NOPREFIX );
if (album_info && select_p_a == 1){
txt_shadow && gr.GdiDrawText( album, h2_font, RGB(0,0,0), h_x + 1, h2_y + 2, ww - h_x - t_margin, wh, DT_LEFT | DT_WORD_ELLIPSIS | DT_NOPREFIX );
gr.GdiDrawText( album, h2_font, t_color, h_x, h2_y, ww - h_x - t_margin, wh, DT_LEFT | DT_WORD_ELLIPSIS | DT_NOPREFIX );
}
for (var i = 0; i < text_visable_rows * 2; i += 2) {
try {
txt_shadow && gr.GdiDrawText( text_array[i + s_text * 2].replace(/^\s+|\s+$/g, ""), t_font, RGB(0,0,0), t_x + 1, t_y + text_row_height * i / 2 + 2, ww, wh, DT_LEFT | DT_NOPREFIX );
gr.GdiDrawText( text_array[i + s_text * 2].replace(/^\s+|\s+$/g, ""), t_font, t_color, t_x, t_y + text_row_height * i / 2 , ww, wh, DT_LEFT | DT_NOPREFIX );
} catch(e) {}
}
//gr.GdiDrawText( "files " + files.length, gdi.Font("Arial",12, 0), t_color, 10, 0, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
//gr.GdiDrawText( "images " + images.length, gdi.Font("Arial",12, 0), t_color, 10, 20, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
//gr.GdiDrawText( selected, gdi.Font("Arial",12, 0), t_color, 10, 40, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
gr.GdiDrawText( "", gdi.Font("Arial",12, 0), t_color, 10, 60, ww, wh, DT_LEFT | DT_WORDBREAK );
gr.GdiDrawText( "", gdi.Font("Arial",12, 0), t_color, 10, 80, ww, wh, DT_LEFT | DT_WORDBREAK );
gr.GdiDrawText( "", gdi.Font("Arial",12, 0), t_color, 10, 100, ww, wh, DT_LEFT | DT_WORDBREAK );
gr.GdiDrawText( "", gdi.Font("Arial",12, 0), t_color, 10, 120, ww, wh, DT_LEFT | DT_WORDBREAK );
}
function draw_image(gr){
if (g_img && images.length > 0){
var size = calc_img_size(g_img);
gr.DrawRect(size.x, size.y, size.width, size.height, 1, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),fader));
gr.DrawImage(g_img, size.x, size.y, size.width, size.height, size.cx, size.cy, size.cwidth, size.cheight, 0, fader);
}
if (logo_img && images.length == 0 && !default_img){
gr.DrawImage(logo_img, 10, 10, logo_img.Width * 1, logo_img.Height * 1, 0, 0, logo_img.Width, logo_img.Height, 0, 100);
}
if (images.length == 0 && default_img){
try {
nc_img = gdi.Image(default_img_path);
var size = calc_img_size(nc_img);
gr.DrawImage(nc_img, size.x, size.y, size.width, size.height, size.cx, size.cy, size.cwidth, size.cheight, 0, default_img_transparent);
} catch(e) {};
}
}
function draw_scrollbar(gr){
scrollbar_h = text_rows > text_visable_rows ? text_visable_height * (text_visable_rows / text_rows) : 0;
if (text_rows > text_visable_rows){ scrollbar_h = Math.max(5, scrollbar_h)}
scrollbar_y = s_text > 0 ? s_text * scrollbar_k : 0;
st_x = ww - t_margin - scrollbar_w;
sb_t = on_sb || on_sb_down ? 150 : 50;
st_color = RGBA(getRed(h_color), getGreen(h_color), getBlue(h_color), sb_t);
scrollbar && gr.FillSolidRect(st_x, t_y + scrollbar_y, scrollbar_w, scrollbar_h, st_color);
}
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 on_item_focus_change() {
switch (selection_mode) {
case 0:
metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
break;
case 1:
metadb = fb.GetFocusItem();
break;
}
if (metadb) on_metadb_changed();
}
function Eval(field) {
if (!metadb) return;
path = fb.Titleformat("%path%").EvalWithMetadb(metadb);
directory_path = fb.Titleformat("$directory_path(%path%)").EvalWithMetadb(metadb);
return path.indexOf('://') > 0 ? fb.TitleFormat("[" + field + "]").Eval(true) : fb.TitleFormat("[" + field + "]").EvalWithMetadb(metadb);
}
function on_metadb_changed() {
if (!panel_on) return;
if (!metadb) return;
artist = Eval("%artist%");
if (artist) {artist = clean_name(artist); tf_artist = Eval("%artist%")} else {artist = ""; tf_artist = ""};
if (artist != old_artist){
check_folder(artist_folder_path(artist));
if (!save_images) del_folders(artist);
get_pic();
old_artist = artist;
}
}
function get_pic() {
clear_txt_var();
images = [];
files = [];
selected = 0;
g_img = null;
window.Repaint();
if (fso.FolderExists(artist_folder_path(artist))){
get_files_from_dir(artist_folder_path(artist));
if (!g_img && images.length > 0) {
next_image(0);
get_text();
} else {
get_lastFM_pic(artist_folder_path(artist));
}
}
}
function get_lastFM_pic(p){
var xmlhttp1 = new ActiveXObject("Microsoft.XMLHTTP");
var url1 = ("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/+" + p_a[select_p_a]+ "?page=" + 1);
xmlhttp1.open("GET", url1, true );
xmlhttp1.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp1.send(null);
xmlhttp1.onreadystatechange = function () {
if (xmlhttp1.readyState == 4) {
if (xmlhttp1.status == 200) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = xmlhttp1.responsetext;
var data = div.getElementsByTagName("img");
var an = div.getElementsByTagName("p");
var urls = [];
var name = [];
for (i = 0; i < an.length; i++) {
if (an[i].className == "album-grid-item-main-text" ){
//name.push(an[i].innerHTML);
}
}
for (i = 0; i < data.length; i++) {
if (data[i].className == "image-list-image" && select_p_a == 0){
if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/avatar170s") == 0 || data[i].src.indexOf("https://lastfm-img2.akamaized.net/i/u/avatar170s") == 0) {
urls.push(data[i].src.replace("avatar170s", quality[download_quality][1]));
}
}
if (data[i].className == "album-grid-album-art" && select_p_a == 1){
if ((data[i].src.indexOf("http://img2-ak.lst.fm/i/u/300") == 0 || data[i].src.indexOf("https://lastfm-img2.akamaized.net/i/u/300") == 0) && data[i].src.indexOf("c6f59c1e5e7240a4c0d427abd71f3dbb") < 0) {
//if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/300") == 0 || data[i].src.indexOf("https://lastfm-img2.akamaized.net/i/u/300") == 0) {
urls.push(data[i].src.replace("300x300", quality[download_quality][2]));
name.push(data[i].alt.replace(/^(.*)'.*$/g,'$1').replace(/^(.*?)'/g,''));
}
}
}
if (name) utils.WriteINI( p + "\\" + artist + "_album_info.ini", "albums_name", "albums", name);
var found = urls.length;
for (i = 0; i < Math.min(urls.length, limit); i++) {
if (select_p_a == 0){
var file = "\"" + p + "\\" + artist + "_" + i + "_" + p_a[select_p_a] + ".jpg" + "\"";
WshShell.Run(vbs + " " + urls[i] + " " + file, 0, false);
}
if (select_p_a == 1){
var file2 = "\"" + p + "\\" + artist + "_" + i + "_" + p_a[select_p_a] + ".jpg" + "\"";
WshShell.Run(vbs + " " + urls[i] + " " + file2, 0, false);
utils.WriteINI( p + "\\" + artist + "_album_info.ini", "album_name", i, name[i]);
}
}
doc.close();
if (found > 0) get_files_if_loaded(p);
}
}
get_text();
}
}
function get_files_from_dir(p) {
if (!artist) return;
files = utils.Glob(p + "\\" + artist + "*" + p_a[select_p_a] + ".jpg").toArray();
if (files.length > images.length){
images = [];
files = naturalSort(files);
for (var i = 0; i < files.length; i += 1) {
try {
images.push(resize_image(gdi.Image(files[i])));
} catch(e) {}
}
}
}
function next_image(d){
fader = fade_effect ? 0 : 255;
if (d < 0) {selected = selected <= 0 ? images.length - 1 : selected = selected - 1};
if (d > 0) {selected = selected >= images.length - 1 ? 0 : selected = selected + 1};
g_img = images[selected];
if (g_img && fade_effect) fader_timer();
window.Repaint();
if (album_info && select_p_a == 1) get_a_text(selected);
}
function resize_image(img){
if (!img) return;
var scale_w = (ww - p_margin * 2) / img.Width;
var scale_h = (wh - p_margin * 2) / img.Height;
var scale = Math.min(scale_w, scale_h);
var nww = img.Width * scale;
var nwh = img.Height * scale
var temp_bmp = gdi.CreateImage(nww, nwh);
var temp_gr = temp_bmp.GetGraphics();
temp_gr.SetSmoothingMode(2);
temp_gr.SetInterpolationMode(7);
temp_gr.DrawImage(img, 0, 0, nww, nwh, 0, 0, img.width, img.height);
temp_bmp.ReleaseGraphics(temp_gr);
CollectGarbage();
return temp_bmp;
temp_bmp.Dispose();
temp_gr = null;
temp_bmp = null;
}
function get_text(){
if (album_info && select_p_a == 1){
get_a_text(selected);
} else {
get_b_text();
}
}
function clear_txt_var() {
album = "";
s_text = 0;
text = "";
text_array = [];
window.Repaint();
}
function get_b_text() {
clear_txt_var();
refresh_txt = true;
var b_text_file = artist_folder_path(artist) + "\\" + artist + "_biography_" + lang_text[lang] + ".txt";
if (fso.FolderExists(artist_folder_path(artist))){
if (fso.FileExists(b_text_file)){
text = utils.ReadTextFile(b_text_file);
get_text_array();
} else{
get_lastFM_b_text(b_text_file);
}
}
}
function get_lastFM_b_text(p){
xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
url2 = ("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/+wiki");
xmlhttp2.open("GET", url2, true);
xmlhttp2.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp2.send(null);
xmlhttp2.onreadystatechange = function () {
if (xmlhttp2.readyState == 4) {
if (xmlhttp2.status == 200) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = xmlhttp2.responsetext;
var data = div.getElementsByTagName("div");
for (i = 0; i < data.length; i++) {
if (data[i].className == "wiki-content") {
text = strip_tags(data[i].innerHTML).replace(/^\s+|\s+$/g,"");
break;
}
}
doc.close();
}
if (text != "") save_txt_file(text, p);
if (text == "") text = text_not_found[lang];
get_text_array();
}
}
}
function strip_tags(t) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = t.replace(/<[Pp][^>]*>/g, "").replace(/<\/[Pp]>/g, "<br>").replace(/\n/g, "<br>");
var text = div.innerText;
doc.close();
return text;
}
function get_text_array() {
h_x = txt_x + t_margin;
h1_y = txt_y + t_margin;
temp_bmp = gdi.CreateImage(1, 1);
temp_gr = temp_bmp.GetGraphics();
h_text_row_height = temp_gr.CalcTextHeight("Text", h_font);
text_row_height = temp_gr.CalcTextHeight("Text", t_font);
h2_y = h1_y + h_text_row_height;
t_x = txt_x + t_margin;
t_y = (album_info && select_p_a == 1 ? h2_y + h_text_row_height : h1_y + h_text_row_height) + text_row_height;
string_width = scrollbar ? Math.max(ww - t_x - t_margin - scrollbar_w - 10, 0) : Math.max(ww - t_x - t_margin, 0);
if (Math.abs(txt_x - old_txt_x) > 5 || refresh_txt){
text_array = [];
if (text) text_array = temp_gr.EstimateLineWrap(text.replace(/^\s+|\s+$/g,""), t_font, string_width).toArray();
old_txt_x = txt_x;
refresh_txt = false;
}
text_rows = text_array.length / 2;
b_text_visable_area = Math.floor(Math.max(0, window.Height - t_margin - t_y));
text_visable_rows = Math.floor(b_text_visable_area / text_row_height);
text_visable_height = text_visable_rows * text_row_height;
if (text_visable_rows + s_text > text_rows && s_text > 0) {
s_text = (text_rows - text_visable_rows);
}
scrollbar_k = text_visable_height / text_rows;
temp_bmp.ReleaseGraphics(temp_gr);
temp_bmp.Dispose();
temp_gr = null;
temp_bmp = null;
window.Repaint();
}
function save_txt_file(t, p){
if (!artist) return;
try {
file = fso.OpenTextFile( p, 2, true, -1)
file.WriteLine(t);
file.Close();
} catch(e) {
return;
}
}
function on_mouse_rbtn_up (x, y){
var _menu = window.CreatePopupMenu();
_menu.AppendMenuItem(MF_ENABLED, 10, lang_text[0] + " text");
_menu.AppendMenuItem(MF_ENABLED, 11, lang_text[1] + " text");
//_menu.AppendMenuItem(MF_ENABLED, 12, lang_text[2] + " text");
_menu.CheckMenuRadioItem(10, 12, lang + 10);
_menu.EnableMenuItem(lang + 10, 1);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 20, "Prefer now playing");
_menu.AppendMenuItem(MF_ENABLED, 21, "Follow selected track");
_menu.CheckMenuRadioItem(20, 21 , selection_mode + 20);
_menu.EnableMenuItem(selection_mode + 20, 1);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 30, "Artist pictures");
_menu.AppendMenuItem(MF_ENABLED, 31, "Albums pictures");
_menu.CheckMenuRadioItem(30, 31 , select_p_a + 30);
_menu.EnableMenuItem(select_p_a + 30, 1);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 40, "Album info");
_menu.CheckMenuItem(40, album_info);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
IS_ARTIST = artist ? MF_ENABLED : MF_GRAYED;
_menu.AppendMenuItem(IS_ARTIST, 50, "last.fm Artist");
_menu.AppendMenuItem(IS_ARTIST, 51, "last.fm Albums");
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 60, "Fade effect");
_menu.CheckMenuItem(60, fade_effect);
_firstgroup = window.CreatePopupMenu();
_firstgroup.AppendTo(_menu,MF_ENABLED, "Align : " + align_mode_a[align_mode]);
_firstgroup.AppendMenuItem(MF_ENABLED, 70, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 71, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 72, align_mode_a[2]);
_firstgroup.AppendMenuItem(MF_ENABLED, 73, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 74, align_mode_a[4]);
_firstgroup.AppendMenuItem(MF_ENABLED, 75, align_mode_a[5]);
_firstgroup.CheckMenuRadioItem(70, 75, align_mode + 70);
_firstgroup.EnableMenuItem(align_mode + 70, 1);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_secondgroup = window.CreatePopupMenu();
_secondgroup.AppendTo(_menu,MF_ENABLED, "Download quality : " + quality[download_quality][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 80, "Low");
_secondgroup.AppendMenuItem(MF_ENABLED, 81, "Medium");
_secondgroup.AppendMenuItem(MF_ENABLED, 82, "High");
_secondgroup.CheckMenuRadioItem(80, 82, download_quality + 80);
_secondgroup.EnableMenuItem(download_quality + 80, 1);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_thirdgroup = window.CreatePopupMenu();
MF_STRING = images.length > 0 ? MF_ENABLED : MF_GRAYED;
_thirdgroup.AppendTo(_menu,MF_STRING, "Copy to folder containing track...");
_thirdgroup.AppendMenuItem(MF_STRING, 90, "Copy file");
_thirdgroup.AppendMenuItem(MF_STRING, 91, "Copy files");
_menu.AppendMenuItem(MF_STRING, 100, "Open image");
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 110, "Save images and text");
_menu.CheckMenuItem(110, save_images);
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 120, "Load album image (in work)");
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 500, "Reload");
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 510, "Properties");
_menu.AppendMenuItem(MF_ENABLED, 520, "Configure ...");
ret = _menu.TrackPopupMenu(x,y);
switch (ret) {
case 10:
case 11:
case 12:
lang = ret - 10;
window.SetProperty("lang", lang);
get_text();
break;
case 20:
selection_mode = 0;
window.SetProperty("selection mode", selection_mode);
on_item_focus_change();
break;
case 21:
selection_mode = 1;
window.SetProperty("selection mode", selection_mode);
on_item_focus_change();
break;
case 30:
select_p_a = 0;
window.SetProperty("artist/album", select_p_a);
get_pic();
break;
case 31:
select_p_a = 1;
window.SetProperty("artist/album", select_p_a);
get_pic();
break;
case 40:
window.SetProperty("album info", ! album_info);
album_info = window.GetProperty("album info");
get_text();
break;
case 50:
WshShell.run("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist));
break;
case 51:
WshShell.run("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/" + "+albums");
break;
case 60:
window.SetProperty("fade effect", !fade_effect);
fade_effect = window.GetProperty("fade effect");
break;
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
align_mode = ret - 70;
window.SetProperty("align mode", align_mode);
window.Repaint();
break;
case 80:
case 81:
case 82:
download_quality = ret - 80;
window.SetProperty("download quality", download_quality);
break;
case 90:
select_file = 0;
copy_files();
break;
case 91:
select_file = 1;
copy_files();
break;
case 100:
try {
if (images[selected]) WshShell.run( '"' + artist_folder_path(artist)+ "\\" + artist + "_" + selected + "_" + p_a[select_p_a] + ".jpg" + '"' );
} catch(e) {}
break;
case 110:
window.SetProperty("Save images", !save_images);
save_images = window.GetProperty("Save images");
break;
case 120:
search_lastFM_album_img();
break;
case 500:
window.Reload();
break;
case 510:
window.ShowProperties();
break;
case 520:
window.ShowConfigure();
break;
}
_menu.Dispose();
return true;
}
var timer;
function get_files_if_loaded(p){
timer && window.ClearInterval(timer);
timer = window.SetInterval(function() {
get_files_from_dir(p);
for (var i = 0; i < files.length; i += 1) {
if (get_fn(files[i]).replace(/^(.*?)_|_.*/g,'') == 0 && images.length > 0) {
next_image(0);
window.ClearInterval(timer);
break;
}
}
}, 500 );
}
var set_cycle = false;
function on_key_down(vkey) {
if (vkey == 16){
set_cycle = true;
dis_set();
window.Repaint();
}
}
var cycle_timer, step = 0;
function set_cycle_timer(){
cycle_timer && window.ClearInterval(cycle_timer);
cycle_timer = window.SetInterval(function() {
step = set_cycle ? 0 : step + 1;
if (cycle > 0 && step >= cycle){
get_files_from_dir(artist_folder_path(artist));
if (images.length > 1){
next_image(1);
step = 0;
}
}
window.Repaint();
}, 1000 );
}
var dis_timer, dis = 0;
function dis_set(){
dis = 0;
dis_timer && window.ClearInterval(dis_timer);
dis_timer = window.SetInterval(function() {
if (set_cycle) {
dis++;
if(dis == 1) {
set_cycle = false;
if (cycle > 0) set_cycle_timer();
if (cycle == 0) window.ClearInterval(cycle_timer);
window.ClearInterval(dis_timer)
window.Repaint();
};
}
}, 1000 );
}
var delay = false;
function fdelay(){
var delay_timer = window.SetTimeout(function() {
delay = false;
window.ClearTimeout(delay_timer);
}, 200);
}
var ftimer;
function fader_timer(){
fader = 0;
ftimer && window.ClearInterval(ftimer);
ftimer = window.SetInterval(function() {
fader = fader + fade_step;
if (fader >= 255) {
fader= 255;
window.ClearInterval(ftimer);
}
window.Repaint();
}, 42 );
}
function load_last_fm_logo(){
if(!fso.FileExists(script_path + "footer_logo.png")) {
var url = "http://static-web.last.fm/static/images/favicon.702b239b6194.ico"
var file = "\"" + script_path + "last_fm_ico.ico" + "\"";
WshShell.Run(vbs + " " + url + " " + file, false);
var url = "http://static-web.last.fm/static/images/footer_logo.ddcfd65712a6.png"
var file = "\"" + script_path + "footer_logo.png" + "\"";
WshShell.Run(vbs + " " + url + " " + file, false);
}
}
function create_download_file() {
try {
file = fso.CreateTextFile(script_path + "download.vbs" )
var text =
"If (WScript.Arguments.Count <> 2) Then" + "\n\r" +
" WScript.Quit" + "\n\r" +
"End If" + "\n\r" + "\n\r" +
"url = WScript.Arguments(0)" + "\n\r" +
"file = WScript.Arguments(1)" + "\n\r" + "\n\r" +
"Set objFSO = Createobject(" + '"Scripting.FileSystemObject"' + ")" + "\n\r" +
"If objFSO.Fileexists(file) Then" + "\n\r" +
" Set objFSO = Nothing" + "\n\r" +
" WScript.Quit" + "\n\r" +
"End If" + "\n\r" + "\n\r" +
"Set objXMLHTTP = CreateObject(" + '"MSXML2.XMLHTTP"' + ")" + "\n\r" +
"objXMLHTTP.open " + '"GET"' + ", url,false" + "\n\r" +
"objXMLHTTP.send()" + "\n\r" + "\n\r" +
"If objXMLHTTP.Status = 200 Then" + "\n\r" +
" Set objADOStream = CreateObject(" + '"ADODB.Stream"' + ")" + "\n\r" +
" objADOStream.Open" + "\n\r" +
" objADOStream.Type = 1" + "\n\r" +
" objADOStream.Write objXMLHTTP.ResponseBody" + "\n\r" +
" objADOStream.Position = 0" + "\n\r" +
" objADOStream.SaveToFile file" + "\n\r" +
" objADOStream.Close" + "\n\r" +
" Set objADOStream = Nothing" + "\n\r" +
"End If" + "\n\r" + "\n\r" +
"Set objFSO = Nothing" + "\n\r" +
"Set objXMLHTTP = Nothing"
;
file.WriteLine(text);
file.Close();
} catch(e) {};
}
function on_mouse_move(x, y) {
window.SetCursor(32649);
on_header = x >= txt_x && x < st_x && y >= h1_y && y < t_y ? true : false;
on_text = x >= txt_x && x < st_x && y >= t_y ? true : false;
on_sb = x >= st_x && x < ww && y >= txt_y && y < wh ? true : false;
on_pic = !on_text && !on_header && !on_sb ? true : false;
if (on_text_down){
txt_x = x - delta_x;
txt_y = y - delta_y;
txt_x = txt_x <= 0 ? 0 : txt_x >= ww - 50 ? ww - 50: txt_x;
txt_y = txt_y <= 0 ? 0 : txt_y >= wh - (h_text_row_height + t_margin * 1) ? wh - (h_text_row_height + t_margin * 1) : txt_y;
get_text_array();
}
if (on_sb_down && scrollbar && text_rows > text_visable_rows){
sb_posy = y + delta_y;
s_text = y + delta_y >= 0 ? y + delta_y <= (text_rows - text_visable_rows) * scrollbar_k ? Math.round(sb_posy / scrollbar_k) : text_rows - text_visable_rows : 0;
window.RepaintRect(txt_x, txt_y, ww - txt_x, wh - txt_y);
}
window.RepaintRect(st_x, txt_y, ww, wh);
}
function on_mouse_wheel(delta) {
ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
if (on_pic && !ShiftDown && !delay){
get_files_from_dir(artist_folder_path(artist));
if (files.length > 1){
delay = true;
fdelay();
next_image(delta);
if (cycle > 0) step = 0;
}
}
if ((on_header || on_text) && !ShiftDown){
if (text_rows > text_visable_rows){
if (delta < 0) {s_text = text_rows - s_text <= text_visable_rows ? text_rows - text_visable_rows : s_text += 1}
if (delta > 0) {s_text = s_text <= 0 ? 0 : s_text -= 1}
}
window.RepaintRect(txt_x, txt_y, ww - txt_x, wh - txt_y);
}
if ((on_header || on_text) && ShiftDown && !delay){
delay = true;
fdelay();
if (on_header && delta < 0) {font_size_h = font_size_h <= min_font_size ? min_font_size : font_size_h - 2;};
if (on_header && delta > 0) {font_size_h = font_size_h >= max_font_size ? max_font_size : font_size_h + 2;};
window.SetProperty("font size: artist", font_size_h);
if (on_text && delta < 0) {font_size_t = font_size_t <= min_font_size ? min_font_size : font_size_t - 2;};
if (on_text && delta > 0) {font_size_t = font_size_t >= max_font_size ? max_font_size : font_size_t + 2;};
window.SetProperty("font size: biography", font_size_t);
get_font();
refresh_txt = true;
get_text_array();
}
if (set_cycle && on_pic) {
if (delta < 0) {cycle = cycle <= 0 ? 0 : cycle - 5;};
if (delta > 0) {cycle = cycle >= 60 ? 60 : cycle + 5;};
window.SetProperty("auto cycle (sec)", cycle);
window.Repaint();
}
}
function on_mouse_lbtn_down(x,y){
if (on_header || on_text){
on_text_down = true;
delta_x = x - txt_x;
delta_y = y - txt_y;
}
if (on_sb){
on_sb_down = true;
sb_posy = s_text * scrollbar_k;
delta_y = sb_posy - y;
}
}
function on_mouse_lbtn_up(x,y){
window.SetProperty("txt_x", txt_x);
window.SetProperty("txt_y", txt_y);
on_text_down = false;
on_sb_down = false;
}
function on_mouse_lbtn_dblclk (x,y){
if (on_text){
lang = lang == 1 ? 0 : 1;
window.SetProperty("lang", lang);
get_text();
}
if (on_pic){
select_p_a = select_p_a == 1 ? 0 : 1;
window.SetProperty("artist/album", select_p_a);
get_pic();
}
}
function on_mouse_leave() {
window.SetCursor(32512);
on_sb = false;
window.Repaint();
}
function on_size(){
ww = window.Width;
wh = window.Height;
txt_x = window.GetProperty("txt_x");
txt_y = window.GetProperty("txt_y");
txt_x = txt_x >= ww - 50 && txt_x >= 0 ? ww - 50 : txt_x;
txt_y = txt_y >= wh - (h_text_row_height + t_margin * 1) && txt_y >= 0 ? wh - (h_text_row_height + t_margin * 1) : txt_y;
refresh_txt = true;
get_text_array();
}
function del_folders(n){
var dir = fso.GetFolder(tmp_b_path);
var e = new Enumerator( dir.SubFolders );
try {
for(; !e.atEnd(); e.moveNext() ) {
var name = e.item().Name;
if (name.indexOf("_download") < 0){
if (name.indexOf(n) < 0){
fso.deleteFolder(tmp_b_path + name, true);
}
}
}
} catch(e) {};
}
function calc_img_size(img){
if(!img) return;
var size = {x:0, y:0, width:0, height:0, cx:0, cy:0, cwidth:0, cheight:0};
switch(align_mode) {
case 0: // adjust
var sw = ww / img.Width;
var sh = wh / img.Height;
var s = Math.min(sw, sh);
var x = 0;
var y = 0;
if (sw > sh) x = (ww - img.Width * s) / 2;
else if (sw < sh) y = (wh - img.height * s) / 2;
var width = img.Width * s;
var height = img.Height * s;
var cx = 0;
var cy = 0;
var cwidth = img.Width;
var cheight = img.Height;
break;
case 1: // adjust top - center
var sw = ww / img.Width;
var sh = wh / img.Height;
var s = Math.min(sw, sh);
var x = 0;
if (sw > sh) x = (ww - img.Width * s) / 2;
var y = 0;
var width = img.Width * s;
var height = img.Height * s;
var cx = 0;
var cy = 0;
var cwidth = img.Width;
var cheight = img.Height;
break;
case 2: // adjust top - left
var sw = ww / img.Width;
var sh = wh / img.Height;
var s = Math.min(sw, sh);
var x = 0;
var y = 0;
var width = img.Width * s;
var height = img.Height * s;
var cx = 0;
var cy = 0;
var cwidth = img.Width;
var cheight = img.Height;
break;
case 3: // centre
var sr = img.Width / img.Height;
var dr = ww / wh;
if (sr < dr) {
var r = img.Width / ww;
var cheight = wh * r;
var cy = Math.round((img.Height - cheight) / 2);
var cwidth = img.Width;
var cx = 0;
} else {
var r = img.Height / wh;
var cwidth = ww * r;
var cx = Math.round((img.Width - cwidth) / 2);
var cheight = img.Height;
var cy = 0;
}
var x = 0;
var y = 0;
var width = ww;
var height = wh;
break;
case 4: // centre - top
var sr = img.Width / img.Height;
var dr = ww / wh;
if (sr < dr) {
var r = img.Width / ww;
var cheight = wh * r;
var cy = 0;
var cwidth = img.Width;
var cx = 0;
} else {
var r = img.Height / wh;
var cwidth = ww * r;
var cx = Math.round((img.Width - cwidth) / 2);
var cheight = img.Height;
var cy = 0;
}
var x = 0;
var y = 0;
var width = ww;
var height = wh;
break;
case 5: // stretch
var x = 0;
var y = 0;
var width = ww;
var height = wh;
var cx = 0;
var cy = 0;
var cwidth = img.Width;
var cheight = img.Height;
break;
}
size.x = x + p_margin;
size.y = y + p_margin;
size.width = width - p_margin * 2;
size.height = height - p_margin * 2;
size.cx = cx;
size.cy = cy;
size.cwidth = cwidth;
size.cheight = cheight;
return size;
}
var select_file = 0;
function copy_files(){
var destination_path;
var tmp_files = [];
var tmp_artist = artist;
var tmp_p_a = p_a[select_p_a];
var tmp_directory_path;
if (path.indexOf('://') > 0 || path.indexOf('youtube') == 0 || path.indexOf('cdda') == 0) {
tmp_directory_path = fb.ProfilePath + tmp_p_a + "\\";
} else {
tmp_directory_path = directory_path + "\\" + tmp_p_a + "\\";
}
var nl = "\" + chr(10) + \"";
if (select_file == 0){
files = naturalSort(files);
tmp_files.push(files[selected]);
var input_box_text = "Copy " + nl + nl + get_fnext(tmp_files[0]) + nl + "file to";
} else {
tmp_files = files;
var input_box_text = "Copy " + nl + nl + tmp_artist + " " + tmp_p_a + ".jpg" + nl + "files to";
}
var string = input_box(input_box_text, tmp_directory_path, "Foobar 2000");
if (string){
destination_path = folder_exists(string);
if(fso.FolderExists(destination_path)) {
copy_files_to_folder(destination_path, tmp_files, tmp_p_a);
}else{
copy_files();
}
}
}
function copy_files_to_folder(p, f, pa){
for (i in f) {
if (f[i].indexOf(pa) > 0){
try {
fso.CopyFile (f[i], p , 1 );
} catch(e) {}
}
}
}
function input_box(p_text, d_text, w_title){
vbe = new ActiveXObject('ScriptControl');
vbe.Language = 'VBScript';
return vbe.eval( "InputBox(\"" + p_text + "\",\"" + w_title + "\",\"" + d_text + "\")");
}
function clean_path_name(n) {
if (!n) return;
return n.replace(/[\/\:\*\?\"\<\>\|]/g,'');
}
function folder_exists(n) {
var driver = fso.GetDriveName(n);
if (!fso.DriveExists(driver)) {
return "";
} else {
var p = "";
var split_string = [];
split_string = n.replace(/\\$/g, "").split("\\");
for (var i = 1; i < split_string.length; i += 1) {
p = p + clean_path_name(split_string[i]) + "\\";
try {
if(!fso.FolderExists(driver + "\\" + p)) fso.CreateFolder(driver + "\\" + p);
} catch(e) {};
}
return driver + "\\" + p;
}
}
function on_notify_data(name, info) {
if(name == "panel") {
if (info == "bio"){
panel_on = true;
artist = "";
on_metadb_changed();
} else{
panel_on = false;
}
}
}
function naturalSort(stringArray) {
var xor = function(a, b) {
return a ? !b : b;
}
var isDigit = function(chr) {
var charCode = function(ch) {
return ch.charCodeAt(0);
};
var code = charCode(chr);
return (code >= charCode('0')) && (code <= charCode('9'));
}
var splitString = function(str) {
var from = 0;
var index = 0;
var count = 0;
var splitter = {};
splitter.count = function () {
return count;
}
splitter.next = function() {
if (index === str.length) {
return null;
}
while(++index) {
var currentIsDigit = isDigit(str.charAt(index - 1));
var nextChar = str.charAt(index);
var currentIsLast = (index === str.length);
var isBorder = currentIsLast || xor(currentIsDigit, isDigit(nextChar));
if (isBorder) {
var part = str.slice(from, index);
from = index;
count++;
return {
IsNumber: currentIsDigit,
Value: currentIsDigit ? Number(part) : part
}
}
}
}
return splitter;
}
var compareStrings = function(str1, str2) {
var compare = function(a, b) {
return (a < b) ? -1 : (a > b) ? 1 : 0;
}
var splitter1 = splitString(str1);
var splitter2 = splitString(str2);
while (true) {
var first = splitter1.next();
var second = splitter2.next();
if (null !== first && null !== second) {
if (xor(first.IsNumber, second.IsNumber)) {
return first.IsNumber ? -1 : 1;
} else {
var comp = compare(first.Value, second.Value);
if (comp != 0) {
return comp;
}
}
} else {
return compare(splitter1.count(), splitter2.count());
}
}
}
var arr = stringArray;
return arr.sort(compareStrings);
}
function get_a_text(s) {
clear_txt_var();
refresh_txt = true;
var a_text_file = artist_folder_path(artist) + "\\" + artist + "_" + s + "_albums_" + lang_text[lang] + ".txt";
album = utils.ReadINI( artist_folder_path(artist) + "\\" + artist + "_album_info.ini", "album_name", s );
if (fso.FileExists(a_text_file)){
text = utils.ReadTextFile(a_text_file);
get_text_array();
} else{
get_lastFM_a_text(album, a_text_file);
}
}
function get_lastFM_a_text(album, p){
xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
url3 = ("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/" + encodeURIComponent(album) + "/+wiki");
xmlhttp3.open("GET", url3, true);
xmlhttp3.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp3.send(null);
xmlhttp3.onreadystatechange = function () {
if (xmlhttp3.readyState == 4) {
if (xmlhttp3.status == 200) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = xmlhttp3.responsetext;
var data = div.getElementsByTagName("div");
for (i = 0; i < data.length; i++) {
if (data[i].className == "wiki-content" && album) {
text = strip_tags(data[i].innerHTML).replace(/^\s+|\s+$/g,"");
if (text != "") save_txt_file(text, p);
break;
}
}
doc.close();
}
if (text == "") text = text_not_found[lang];
get_text_array();
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
var albums_pages;
function search_lastFM_album_img(){
if (!metadb) return;
var tf_album = Eval("%album%");
var string;
if (tf_album){
string = input_box("Load album image", tf_album, "Foobar 2000");
if (string){
if (string) get_lastFM_albums_pages(string);
}
}
}
function get_lastFM_albums_pages(a){
xmlhttp0 = new ActiveXObject("Microsoft.XMLHTTP");
url0 = ("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/" + "+albums");
xmlhttp0.open("GET", url0, true );
xmlhttp0.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp0.send(null);
xmlhttp0.onreadystatechange = function () {
if (xmlhttp0.readyState == 4) {
if (xmlhttp0.status == 200) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = xmlhttp0.responsetext;
var data = div.getElementsByTagName("li");
for (i = 0; i < data.length; i++) {
if (data[i].className == "pages"){
albums_pages = data[i].innerHTML.replace(/^\s+|\s+$/g,"").replace(/^(.*\s)/g,'');
}
}
}
doc.close();
for (i = 1; i <= albums_pages; i++) {
get_lastFM_album(i, a);
}
}
}
}
function get_lastFM_album(i, a){
var xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
var url3 = ("http://www.last.fm/" + lang_query[lang] + "music/" + encodeURIComponent(artist) + "/" + "+albums" + "?page=" + i);
xmlhttp3.open("GET", url3, true );
xmlhttp3.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp3.send(null);
xmlhttp3.onreadystatechange = function () {
if (xmlhttp3.readyState == 4) {
if (xmlhttp3.status == 200) {
doc.open();
var div = doc.createElement("div");
div.innerHTML = xmlhttp3.responsetext;
var data = div.getElementsByTagName("img");
var urls = [];
for (i = 0; i < data.length; i++) {
if (data[i].className == "album-grid-album-art"){
if ((data[i].src.indexOf("http://img2-ak.lst.fm/i/u/300") == 0 || data[i].src.indexOf("https://lastfm-img2.akamaized.net/i/u/300") == 0) && data[i].src.indexOf("c6f59c1e5e7240a4c0d427abd71f3dbb") < 0) {
if (data[i].alt.replace(/^(.*?)'|'$/g,'').replace(/\s/,'').toLowerCase() == a.replace(/\s/,'').toLowerCase()){
p = tmp_b_path;
var url = data[i].src.replace("300x300", quality[download_quality][2]);
var file = "\"" + p + "\\" + clean_name(artist) + "_" + clean_name(a) + ".jpg" + "\"";
WshShell.Run(vbs + " " + url + " " + file, 0, false);
}
}
}
}
doc.close();
}
}
}
}
adislav, стр. 152,adislav:чтоб по умолчанию было "сохранять картинки и текст"?
var save_images = window.GetProperty("save images", false);
var save_images = window.GetProperty("save images", true);
kgena_ua:- добавлен пункт меню "загрузить обложку выбранного (воспроизводимого) альбома". Грузит в папку tmp_Biography,
Ты про сортировку для альбомов ? :AHAPXICT:Смотрю мой вопрос не обсуждается, значит снимаю его как глупый.
все ок в последней версииВот сам сейчас не могу понять о каких "массивах" вы говорите
При зажатом шифте нужно было добавить, для новичков что-бы не искались что и как.kgena_ua:размер шрифта колесом мыши отдельно для артиста и текст
Да, vladj, конечно.vladj:При зажатом шифте нужно было добавить
Какую зеленьvladj:Зелень в тексте Био где можно поменять на нормальный цвет, то-же по хитрому ?
bgcolor = window.GetColorCUI(ColorTypeCUI.background);
h_color = window.GetColorCUI(ColorTypeCUI.text);
t_color = window.GetColorCUI(ColorTypeCUI.inactive_selection_text);
И не было никогда.vladj:Не работает удобная фишка как у Стаса...щелчком по названию сворачивать-разворачивать Био.Или у меня что-то не порядке ?
AHAPXICT, не обсуждаетсяAHAPXICT:Смотрю мой вопрос не обсуждается,
adislav, очень много ситуаций могут возникнуть, как результат много проверок.хотелось бы исправить запрос, чтоб имя артиста бралось до знака "&"
Нет, нельзя. Это текст можно сохранить в переменной и не сохранять на диск (так раньше и было). С картинками так не получится - нужно загрузить из сайта на диск, а потом уже с диска отображать.можно ли вклбчить сохранение и ЗАГРУЗКУ ТОЛЬКО текста (без картинок)?
Нет,adislav, нельзя, и не потому, что я не хочу. В имени файла или папки не могут присутствовать определенные символы.можно ли отключить "упрощение" имен файлов\папок при сохранении?
.........чтоб наоборот прописать везде именно оригинальные имена со всеми диакритическими знаками и тд
Возможно. Можно сохранять прямо в паку...... А если это РАДИО. Тогда все время проверять..... теоретически возможно.менять путь сохранения текстовых файлов и картинок
}
doc.close();
if (found > 0) get_files_if_loaded(p);
get_text(); // вставил
}
}
//get_text(); заремил
}
}
Спасибо...блин, когда я успел там галочку сунуть в изменение активного фрейма, да еще и зеленыйkgena_ua:у Вас CUI, настройки берутся из настройки панели Columns UI - Colors and Fonts:
kgena_ua:хотелось бы исправить запрос, чтоб имя артиста бралось до знака "&"
adislav, очень много ситуаций могут возникнуть, как результат много проверок.
только с оговоркой, начиная с версии 01122016, в предыдущих не проходит такой вариант.kgena_ua:И главное. Я по поводу вызова get_text(); из function get_lastFM_pic(p)
Я склоняюсь делать так :
- Код: Выделить всё
}
doc.close();
if (found > 0) get_files_if_loaded(p);
get_text(); // вставил
}
}
//get_text(); заремил
}
}
Я пока тоже там )Сам пока сижу на 18112016
Вернуться в Секреты foobar2000