Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: *Browsable* similar artists  (Read 2870 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

*Browsable* similar artists

Hoping @jazzthieve could share some tips and tricks in how he made this sweet *feature* in his config. (green border frame in the right)



Currently using marc2003's lovely Last.fm jscript, but originally had something more like this in mind, using custom tags. But didn't know how to do it exactly. Hope that'll change.

EDIT: Maybe better suited in the General board?

Re: *Browsable* similar artists

Reply #1
This is using panel stack and columns ui and requires knowledge on how to use these components. It also involves jscript both using bio script from Wilb and from marc2003.
That panel on the right is actually simply a panel stack with 5 separate jscript panels within in. It really is a hack solution as I'm no coder at all.

First off, the similar artists are based on tags, specifically a multi value tag called %similar artist%. The way I get foobar to tell me which artists are present and which are not is by using Wilb's biography jscript script. That script saves a text file locally for each artist biography found of an artist in your library (played at least one). Using the $findfile function I let foobar search for these text files and whichever biography text file isn't present means I don't have this artist present in my library.

Note: I did spend some time to get all artists played at least once for a few seconds to get a txt file. Tip, you can color code artists which don't have a txt file locally (again using $findfile) to get all your artists played and present.

This part shows "artist in library" and "artist not in library"

Code: [Select]
$font(Segoe ui,11,italic)
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y1),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y1),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y2),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y2),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y3),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y3),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y4),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y4),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y5),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y5),20),380,25,200-200-200,))

Change the path after the $findfile function to the location of your locally saved bio text file and of course the x,y,w,h positions. This is just my script lifted from my config as an example.

I drew my artist names:
Code: [Select]
$drawtextex($meta(similar artist,0),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,1),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,2),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,3),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,4),x,y,w,h,103-170-223,end_ellipsis)

And then overlapped these artist name position with a jscript panel set to transparent and made blank. Make sure for the size of the jscript panel to be the size of the area to match somewhat the size of your artist frame/name. If the panels are too large and overlap it won't match up with the names you want to click.
The code is courtesy to marc2003's contribution (which I butchered a bit ;) ).

Code: [Select]
// ==PREPROCESSOR==
// @import "%fb2k_profile_path%js_marc2003\js\lodash.min.js"
// @import "%fb2k_profile_path%js_marc2003\js\helpers.js"
// @import "%fb2k_profile_path%js_marc2003\js\panel.js"
// @import "%fb2k_profile_path%js_marc2003\js\lastfm.js"
// @import "%fb2k_profile_path%js_marc2003\js\list.js"
// ==/PREPROCESSOR==

var panel = new _.panel("test", ["metadb"]);
var list = new _.list("test", 0, -20, 0, 0);

list.update = function () {
this.data = [];
if (panel.metadb) {

{
            var tmp = panel.tf("$meta(similar artist," + 0 + ")");
this.data.push({
name : "",
url : "artist HAS " + tmp,
width : _.textWidth(tmp, panel.fonts.normal)
});
}
}
this.items = this.data.length;
window.Repaint();
}

panel.item_focus_change();

function on_size() {
panel.size();
list.w = panel.w - 20;
list.h = panel.h + 30;
list.size();
}

function on_paint(gr) {
panel.paint(gr);
list.paint(gr);
}

function on_metadb_changed() {
list.update();
}

function on_mouse_wheel(s) {
list.wheel(s);
}

function on_mouse_move(x, y) {
list.move(x, y);
}

function on_mouse_lbtn_up(x, y) {
list.lbtn_up(x, y);
}

function on_key_down(k) {
list.key_down(k);
}

function on_mouse_rbtn_up(x, y) {
return panel.rbtn_up(x, y, list);
}

Change this part var tmp = panel.tf("$meta(similar artist," + 0 + ")");  the number should correspond to the similar artist multi value position (0 is the first one, 1 is the second position within the multi value field)

Use the $showpanel fucntion in conjunction with $findfile again to let the jscript panel show or not. like this:

Code: [Select]
$showpanel_c(SIMILAR1,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),1,0))
$showpanel_c(SIMILAR2,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),1,0))
$showpanel_c(SIMILAR3,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),1,0))
$showpanel_c(SIMILAR4,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),1,0))
$showpanel_c(SIMILAR5,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),1,0))

Using $findfile you can do different things to dress it up a bit. For example I color code the roundrectangle frame depending on the presence of a txt bio file for easy visibility.
As I mention, it's a bit involved but it works great for me.

Re: *Browsable* similar artists

Reply #2
edit: not relevant anymore

Re: *Browsable* similar artists

Reply #3
This is the entire script from top to bottom for the similar artist frames, this won't work by just copy pasting as many things are depended on locally set things (paths and panel names and such):

Code: [Select]
$puts(x.frame,19)
$puts(wh.frame,13)
$puts(similar.y.gap,77)
$puts(similar.y1,9)
$puts(similar.y2,$add($get(similar.y1),$get(similar.Y.gap)))
$puts(similar.y3,$add($get(similar.y2),$get(similar.Y.gap)))
$puts(similar.y4,$add($get(similar.y3),$get(similar.Y.gap)))
$puts(similar.y5,$add($get(similar.y4),$get(similar.Y.gap)))
$puts(similar.x,-7)
$puts(similar.wh,13)



//SIMILAR ARTISTS
$puts(similar.panel.w,340)

$showpanel_c(SIMILAR1,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),1,0))
$showpanel_c(SIMILAR2,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),1,0))
$showpanel_c(SIMILAR3,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),1,0))
$showpanel_c(SIMILAR4,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),1,0))
$showpanel_c(SIMILAR5,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),1,0))

$movepanel_c(SIMILAR1,$add($get(similar.x),10),$add($get(similar.y1),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR2,$add($get(similar.x),10),$sub($get(similar.y2),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR3,$add($get(similar.x),10),$add($get(similar.y3),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR4,$add($get(similar.x),10),$add($get(similar.y4),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR5,$add($get(similar.x),10),$add($get(similar.y5),5),$get(similar.panel.w),67)


$puts(roundrect.X,0)
$puts(roundrectY.gap,77)
$puts(roundrectY1,0)
$puts(roundrect.H,74)
$puts(roundrect.W,$sub(%_width%,1))
$puts(roundrectY2,$add($get(roundrectY1),$get(roundrectY.gap)))
$puts(roundrectY3,$add($get(roundrectY2),$get(roundrectY.gap)))
$puts(roundrectY4,$add($get(roundrectY3),$get(roundrectY.gap)))
$puts(roundrectY5,$add($get(roundrectY4),$get(roundrectY.gap)))
$puts(line.color.present,%_COLOR%)
$puts(line.color.nonpresent,%_COLOR%)
$puts(fill.color.present,20-20-20)
$puts(fill.color.nonpresent,20-20-20)
$puts(frame.path,D:\foobar2000_music\skins\Acerbus\Images\White\cover_frame.png)
$puts(artist.img.path,G:\IMG\Artist_images)


////WIDER FRMAE COLORS
//LINES
$puts(line.color0,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color1,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color2,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color3,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color4,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$get(line.color.present),$get(line.color.nonpresent)))

//FILLS
$puts(fill.color0,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color1,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color2,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color3,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color4,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))


///////WIDE FRAMES
$drawroundrect($get(roundrect.X),$get(roundrectY1),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color0),$get(line.color0),)
$drawroundrect($get(roundrect.X),$get(roundrectY2),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color1),$get(line.color1),)
$drawroundrect($get(roundrect.X),$get(roundrectY3),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color2),$get(line.color2),)
$drawroundrect($get(roundrect.X),$get(roundrectY4),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color3),$get(line.color3),)
$drawroundrect($get(roundrect.X),$get(roundrectY5),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color4),$get(line.color4),)


/////FRAME BACKGROUND
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY1),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY2),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY3),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY4),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY5),5),62,62,10,10,255-255-255,255-255-255,)


///////ARTIST IMAGES
$imageabs(345,$add($get(roundrectY1),7),60,60,$get(artist.img.path)\$meta(similar artist,0)\$meta(similar artist,0)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY2),7),60,60,$get(artist.img.path)\$meta(similar artist,1)\$meta(similar artist,1)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY3),7),60,60,$get(artist.img.path)\$meta(similar artist,2)\$meta(similar artist,2)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY4),7),60,60,$get(artist.img.path)\$meta(similar artist,3)\$meta(similar artist,3)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY5),7),60,60,$get(artist.img.path)\$meta(similar artist,4)\$meta(similar artist,4)_0.jpg,nokeepaspect ,,,)


//BLANK ARTIST IMAGES
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,0)\$meta(similar artist,0)_0.jpg),,
$imageabs(345,$add($get(roundrectY1),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,1)\$meta(similar artist,1)_0.jpg),,
$imageabs(345,$add($get(roundrectY2),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,2)\$meta(similar artist,2)_0.jpg),,
$imageabs(345,$add($get(roundrectY3),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,3)\$meta(similar artist,3)_0.jpg),,
$imageabs(345,$add($get(roundrectY4),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,4)\$meta(similar artist,4)_0.jpg),,
$imageabs(345,$add($get(roundrectY5),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))


///////FRAME
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY1),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY2),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY3),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY4),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY5),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)


//TEXT
$font(Segoe ui,12,bold)
$drawtextex($meta(similar artist,0),10,$sub($get(similar.y1),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,1),10,$sub($get(similar.y2),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,2),10,$sub($get(similar.y3),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,3),10,$sub($get(similar.y4),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,4),10,$sub($get(similar.y5),3),320,25,103-170-223,end_ellipsis)

$font(Segoe ui,11,italic)
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y1),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y1),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y2),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y2),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y3),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y3),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y4),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y4),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y5),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y5),20),380,25,200-200-200,))

Re: *Browsable* similar artists

Reply #4
This is great, thanks a lot. Can't wait to play with it.

Re: *Browsable* similar artists

Reply #5
Think I got most of how you did it, and inspired thinking there by the way, just can't make the jscript button to do anything.



Very likely I'm missing something obvious.

EDIT: Ouch, went to install newest version of JScript, got an error and now lost every Jscript panel I had. Will take a while to remake them. And plus, didn't helped with the above.

Re: *Browsable* similar artists

Reply #6
Not sure sure how you "lost" panels??

v1.2.0 did break compatibility with Falstaff's JSplaylist and JS-Smooth scripts but updated versions are bundled with the component and you only have to replace the script inside each panel with the updated version. I'm pretty sure just about everyone else's scripts were unaffected by the change.

Re: *Browsable* similar artists

Reply #7
Really not sure what happened.

I had 1.1.1 I think, and downloaded 1.2.3.3, went to components and hit install, browsed to file and was prompted to apply. And then the error came: "could not update components file is already in use", retried a few times, didn't work, and then aborted. Opened foobar, and every instance of jscript was gone. Columns UI -> Layout, missing from there too. Few more tries to install and it worked, and now I have 1.2.3.3 installed.

Brought almost all of them back now. Though, Jsmooth Playlist manager isn't as smooth as before, and it's double click now, plus, for some reason, Library selection (playing) is not visible if not selected (only that playlist).


Re: *Browsable* similar artists

Reply #8
Odd, I've not made any functional changes to the JS Smooth scripts at all - main reason is that I don't use them. Perhaps you had a previous version before Falstaff release his latest/last.

I must admit I did tweak some of the defaults in JSplaylist but nothing that would have made any real world difference.

Re: *Browsable* similar artists

Reply #9
Luckily, smoothness can be easily adjusted to anyone's liking in jsspm.js, and that Library selection (playing) thing seems to be fixed now after a restart. Just now to have a single click to select but I can easily get used to double. I believe that actually Falstaff originally made it double click, and I just had a version that someone on one dead forum now helped me *hack* to be a single click.

EDIT: And for all this small bother, still feels good to have everything now up to newest version.

Re: *Browsable* similar artists

Reply #10
Can anyone help me determine what I did wrong with the transparent JScript button above? Being transparent or not doesn't matter, song playing or not, same, used %artist%, no big change - just the tooltip changes as well "%artist% HAS so and so"...

Re: *Browsable* similar artists

Reply #11
Is this what you're getting?



I use jscript 1.2.3 btw.


Re: *Browsable* similar artists

Reply #12
Here's the the thread where I asked about similar artists and marc2003 shared his original solution.

Alternatively you can use marc2003's original version which shows the artist name. I chose to make it blank and overlap with $drawtext in PSS simply because that way I could control font type,size and color better. I couldn't do that with jscript since I'm a dummy in that field.

Re: *Browsable* similar artists

Reply #13
Hey there, @jazzthieve .

I was getting only "artist HAS ..." part, without "Autoplaylist: " at the front with jscript configuration you posted above. Will check out marc's original script. EDIT: They sorta work, but button appear scrollable with multiple *buttons* within that one with more values - if I described that properly. Here's a small gif of it (both versions next to each other).



I'd prefer your way, as there's indeed more freedom with formatting and look, think I'd like to try with images only as well. Btw, PSS is always set on "Now playing" for selection mode?

Re: *Browsable* similar artists

Reply #14
Jazzthieve, is your $meta(similar artist) tag automatically retrieved from last.fm, or it's maintained manually?

As far as I can tell WilB's biography script doesn't expose similar artists as an actual tag foobar can see. An older, non Jscript based component (foo_uie_biography) does, but it's only accessible as %lastfm_similar_artist% meaning $meta(lastfm_similar_artist) and similar does not work, making it useless for what I want.

So I was wondering if anyone has a solution for this. I'd like to query last.fm, retrieve the similar artist attribute then write the values to a user defined tag permanently or simply expose it as a virtual tag as long as the track is playing. The latter is probably better. I'd just like to use $meta(tag,0) and similar operations on it as jazzthieve did in his scripts.

Re: *Browsable* similar artists

Reply #15
Daeron %similar artist% is retrieved from last.fm using foo_uie_biography. It's maintained manually in the sense I right click a selection and make a "scan" with foo_uie_biography to get the tags or I add them myself in the very rare cases I don't agree with last.fm. From time to time I would make a rescan on files but that's not needed very often (every few months) since similar artists on last.fm isn't changing that often and is mostly rather fixed.
Wilb's biography isn't used for tagging purposes of any kind or for reading similar artist tags. It's only used to indicate whether or not an artist is present in the library using $findfile and the locally saved biography txt file as a reference. Logically it wouldn't make sense for a biography txt file to be present if you don't have the artist present in your library so it is a good enough way for me to show library presence in an indirect way.

Re: *Browsable* similar artists

Reply #16
I'd prefer your way, as there's indeed more freedom with formatting and look, think I'd like to try with images only as well. Btw, PSS is always set on "Now playing" for selection mode?

If you're referring to titleformat mode on startup it's set to now playing.


Re: *Browsable* similar artists

Reply #17
Cheers!

Thanks again for all of this, great ideas, and lovely solutions. I'm using marc2003's original script for transparent buttons you linked to, just have to remember not to scroll when on them. ;) (any idea why yours from first post isn't working for me?)

Think this would work great in a single JScript, set all elements to Follow selected track, and browse away quickly (can do that now for some already, but for these buttons and similar artists images, have to click on a playlist first).

And going no text with different border for artists not present, though, if I go with only five on them, not sure if I'll have any missing.


(trying out couple of looks)

And have to remember to delete new playlists often. Forgot a bit, and after testing a bit with browsing between artists, bang, 20 new playlists in a minute! Is it possible to auto-delete them?

Re: *Browsable* similar artists

Reply #18
Open the configuration window and remove the on_mouse_wheel function. That will prevent scrolling.

Re: *Browsable* similar artists

Reply #19
Open the configuration window and remove the on_mouse_wheel function. That will prevent scrolling.

Thank you. Per chance know about limiting the auto-playlists? Auto-deleting would be great.

Re: *Browsable* similar artists

Reply #20
You have to prefix the playlist name with something unique so you know which playlist to delete and leave all the others alone. This uses JSP:

Add this directly after

Code: [Select]
var list = new _.list('lastfm_info', LM, TM, 0, 0);

like this...

Code: [Select]
var list = new _.list('lastfm_info', LM, TM, 0, 0);
list.lbtn_up = function (x, y) {
    if (this.trace(x, y)) {
        switch (true) {
        case this.up_btn.lbtn_up(x, y):
        case this.down_btn.lbtn_up(x, y):
        case !this.in_range:
            break;
        case x > this.x + this.text_x && x < this.x + this.text_x + Math.min(this.data[this.index].width, this.text_width):
            if (this.data[this.index].url.indexOf('http') == 0) {
                _.run(this.data[this.index].url);
            } else {
                var i = 0;
                while (i < plman.PlaylistCount) {
                    if (plman.GetPlaylistName(i).indexOf('JSP:') == 0)
                        plman.RemovePlaylist(i);
                    else
                        i++;
                }
                plman.CreateAutoPlaylist(plman.PlaylistCount, "JSP: " + this.data[this.index].name, this.data[this.index].url);
                plman.ActivePlaylist = plman.PlaylistCount - 1;
            }
            break;
        }
        return true;
    } else {
        return false;
    }
}

Re: *Browsable* similar artists

Reply #21
Thank you yet once again. :)

Re: *Browsable* similar artists

Reply #22
Is there a way to *refresh* transparent buttons that are *over* PSS images without going off panel and coming back?



1-2 and 4-5 are transparent buttons, left 3 just an image in PSS without a button over it for this example. Background borders are also in PSS.

So, I clicked on first button (Bananarama) and below there is a small playlist, and started a song there, as you can see only the image without button over it changed, along with borders. That split second of black screen was me going to different panel (ELPlaylist), and then immediately coming back to this one (Artist), and then the button images refreshed.

So, wondering if they could refresh without changing panels?