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: [REQUEST USER-COMPONENT] foo_fanart (Read 4233 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

[REQUEST USER-COMPONENT] foo_fanart

Hello devs,

I'm asking here, if anyone would be interested in writing the foo_fanart user-component.
Basically the website http://fanart.tv has album art, cdArt, label and band logos etc.
It would be really awesome, if anyone could write this component and use the fanart API to be able to fetch and download:
- Disc art
- Band logos
- Label logos
- Album art

When downloading and saving the images, they would need to be automatically renamed to:
- For disc art: cd.png, cd1png, cd2png etc. ( make an option to save in root of the artist and/or make multi-cd dirs in root of the artist )
- For band logos: artist name.png ( need to be auto renamed to the current playing artist name )
- For label logos: auto-created directory of the label > label name.png ( name of the label of the current playing artist )
- For album art: cover.jpg or folder.jpg or front.jpg ( an option which of those 3 the user prefers to be saved as )

The component need to have options for selecting custom download directories, which can be configured for all those 4 types of images.
If not set, the default behavior for download is the directory of the current playing artist.
Also an option for auto/manual download of those images.

I need this component to primary auto-download the cdArt for the Georgia-ReBORN theme, so users would not
need to manually download it from the website. All the other stuff would be also cool to have.
It could also have an additional context menu with options to select.
For example, right click:
- Download disc art
- Download band logo
- Download label logo
- Download album cover
- Download all

I'm really certain this would not only benefit my theme, but the whole foobar community would love to have this.
I've taken a quick look at the fanart API and it shouldn't be too hard to write this component.

@MordredKLB wanted to write it, but it seems he is busy with other things...

Is anyone interested, what do you think?

-TT

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #1
I've been looking at the API but can't seem to find a way to look up an artist or album by name. The API only accepts ID's.

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #2
I've been looking at the API but can't seem to find a way to look up an artist or album by name. The API only accepts ID's.

Seems to be MusicBrainz_IDs

https://musicbrainz.org/doc/MusicBrainz_API/Search

Most of us already have files tagged with MusicBrainz with the foobar component that write artist, album, release group and track Ids

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #3
Kodi supports fanart.tv and they have their own addon:
https://www.google.com/search?q=kodi+fanart+tv

Also dunno if this helps, but in my theme I have written a context menu with a simple fanart.tv search query:
Code: [Select]
const query = $('$if3(%album artist%, %artist, %composer%)', fb.GetNowPlaying()).replace(/ /g, '%20');
cmac.append_item('Get disc art', () => {
runCmd(`https://fanart.tv/?s=${query}&sect=2`);
});

This will get you to the current playing artist.

Maybe @MordredKLB can comment on this, as he is also a mod on fanart.tv and has more information how it could work...

-TT

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #4
Seems to be MusicBrainz_IDs

I see.

Doesn't it make more sense to wait a little while for foo_musicbrainz to get this extended API support? Maybe through a pull request, if MordredKLB is open to it and does not have the time to write the code?

Otherwise there will be a lot of extra plumbing code to maintain just to do the fanart.tv calls...

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #5
Seems to be MusicBrainz_IDs

I see.

Doesn't it make more sense to wait a little while for foo_musicbrainz to get this extended API support? Maybe through a pull request, if MordredKLB is open to it and does not have the time to write the code?

Otherwise there will be a lot of extra plumbing code to maintain just to do the fanart.tv calls...

You have a point there, the best place for a functionality based in MusicBrainz_IDs seems to be the MusicBrainz tagger itself. Is difficult to argue this logic  ;)

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #6
Kodi supports fanart.tv and they have their own addon:
https://www.google.com/search?q=kodi+fanart+tv

Also dunno if this helps, but in my theme I have written a context menu with a simple fanart.tv search query:
Code: [Select]
const query = $('$if3(%album artist%, %artist, %composer%)', fb.GetNowPlaying()).replace(/ /g, '%20');
cmac.append_item('Get disc art', () => {
runCmd(`https://fanart.tv/?s=${query}&sect=2`);
});

This will get you to the current playing artist.

Maybe @MordredKLB can comment on this, as he is also a mod on fanart.tv and has more information how it could work...

-TT

Also one can make various entries for "Run Service" component using the mb_ids if available to go directly to the fanart page of the artist from the context menu.

Code: [Select]
$if(%MUSICBRAINZ_ARTISTID%,$puts(link,'https://fanart.tv/artist/'$meta(MUSICBRAINZ_ARTISTID,0)),)Z:\usr\bin\xdg-open $get(link)
in linux do the trick for example

And another to make a search if not

Automatic is better, but meanwhile if one realy need some art can help to get it.

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #7
Seems to be MusicBrainz_IDs

I see.

Doesn't it make more sense to wait a little while for foo_musicbrainz to get this extended API support? Maybe through a pull request, if MordredKLB is open to it and does not have the time to write the code?

Otherwise there will be a lot of extra plumbing code to maintain just to do the fanart.tv calls...

Musicbrainz tagging is a manual process , that a user has to do to get the id's. I dont believe adding fanart calls to the component would be "automatic"


@TT
I used the following in a theme I created back in 2018 called Project2018, I just tested it and it still works (the fanarts api hasn't changed) , if you want a hint to add to Reborn.

Code: [Select]
_.mixin({
fanarttv: function () {

this.get = function (method, metadb) {

if (!metadb || !this.api_key || !this.client_key)
return;

var artist = fb.TitleFormat("$meta(artist,0)").EvalWithMetadb(metadb);

var musicbrainz_artistid = fb.TitleFormat("$if3($meta(musicbrainz_artistid,0),$meta(musicbrainz artist id,0),0)").EvalWithMetadb(metadb);
var musicbrainz_releasegroupid = fb.TitleFormat("$if3($meta(musicbrainz_releasegroupid,0),$meta(musicbrainz release group id,0),0)").EvalWithMetadb(metadb);

if (musicbrainz_releasegroupid == 0 && method == "cover") {
this.console(method + ": " + "Musicbrainz Release ID is missing.");
return;
}
if (musicbrainz_releasegroupid == 0 && method == "disc") {
this.console(method + ": " + "Musicbrainz Release ID is missing.");
return;
}
if (musicbrainz_artistid == 0 && method == "musiclogo") {
this.console(method + ": " + "Musicbrainz Artist ID is missing.");
return;
}
if (musicbrainz_artistid == 0 && method == "artistbackground") {
this.console(method + ": " + "Musicbrainz Artist ID is missing.");
return;
}
if (musicbrainz_artistid == 0 && method == "artistthumb") {
this.console(method + ": " + "Musicbrainz Artist ID is missing.");
return;
}

var path = fb.TitleFormat("$directory_path(%path%)").EvalWithMetadb(metadb);

var cover_files = utils.Glob(path + "\\cover.*").toArray();
var disc_files = utils.Glob(path + "\\disc.*").toArray();
var musiclogo_files = utils.Glob(_.artistFolder(artist) + "musiclogo\\*.*").toArray();
var artistbackground_files = utils.Glob(_.artistFolder(artist) + "artistbackground\\*.*").toArray();
var artistthumb_files = utils.Glob(_.artistFolder(artist) + "artistthumb\\*.*").toArray();

if (method == "cover" && cover_files.length >= this.cover_limit)
return;
if (method == "disc" && disc_files.length >= this.disc_limit)
return;
if (method == "musiclogo" && musiclogo_files.length >= this.musiclogo_limit)
return;
if (method == "artistbackground" && artistbackground_files.length >= this.artistbackground_limit)
return;
if (method == "artistthumb" && artistthumb_files.length >= this.artistthumb_limit)
return;

if (method == "cover" || method == "disc")
var url = this.get_base_url() + "albums/" + musicbrainz_releasegroupid + '?api_key=' + this.api_key + '&client_key=' + this.client_key;
else if (method == "musiclogo" || method == "artistbackground" || method == "artistthumb")
var url = this.get_base_url() + musicbrainz_artistid + '?api_key=' + this.api_key + '&client_key=' + this.client_key;

var xmlhttp = new ActiveXObject('Msxml2.XMLHTTP.6.0');

xmlhttp.open('GET', url, true);
xmlhttp.setRequestHeader('User-Agent', this.ua);

xmlhttp.onreadystatechange = _.bind(function () {
if (xmlhttp.readyState == 4) {
switch (true) {
case xmlhttp.status == 200:
var data = xmlhttp.responseText;
var json_data = _.jsonParse(data);

try {
if (method == "cover") {
var cover_data = [];
var cover = json_data['albums'][musicbrainz_releasegroupid]['albumcover'] || [];
if (cover.length && cover.length > cover_files.length) {
cover_data.push.apply(cover_data, cover);
for (i = 0; i < Math.min(cover_data.length, this.cover_limit); i++) {
image_url = cover_data[i].url;
image_name = cover_data[i].url.substr(cover_data[i].url.lastIndexOf('/') + 1);
image_ext = cover_data[i].url.substr(cover_data[i].url.lastIndexOf('.') + 1);
cmd = "cscript //nologo \"" + this.download_vbs + "\" \"" + decodeURIComponent(cover_data[i].url) + "\" \"" + path + "\\cover." + image_ext + "\"";
this.console(cmd);
_.runCmd(cmd, false);
}
}
}

if (method == "disc") {
var disc_data = [];
var disc = json_data['albums'][musicbrainz_releasegroupid]['cdart'] || [];
if (disc.length && disc.length > disc_files.length) {
disc_data.push.apply(disc_data, disc);
for (i = 0; i < Math.min(disc_data.length, this.disc_limit); i++) {
image_url = disc_data[i].url;
image_name = disc_data[i].url.substr(disc_data[i].url.lastIndexOf('/') + 1);
image_ext = disc_data[i].url.substr(disc_data[i].url.lastIndexOf('.') + 1);
cmd = "cscript //nologo \"" + this.download_vbs + "\" \"" + decodeURIComponent(disc_data[i].url) + "\" \"" + path + "\\disc." + image_ext + "\"";
this.console(cmd);
_.runCmd(cmd, false);
}
}
}

if (method == "musiclogo") {
var musiclogo_data = [];
var musiclogo = json_data['hdmusiclogo'] || [];
if (musiclogo.length && musiclogo.length > musiclogo_files.length) {
musiclogo_data.push.apply(musiclogo_data, musiclogo);
for (i = 0; i < Math.min(musiclogo_data.length, this.musiclogo_limit); i++) {
image_url = musiclogo_data[i].url;
image_name = musiclogo_data[i].url.substr(musiclogo_data[i].url.lastIndexOf('/') + 1);
_.createFolder(_.artistFolder(artist) + "musiclogo\\");
cmd = "cscript //nologo \"" + this.download_vbs + "\" \"" + decodeURIComponent(musiclogo_data[i].url) + "\" \"" + _.artistFolder(artist) + "musiclogo\\" + image_name + "\"";
this.console(cmd);
_.runCmd(cmd, false);
}
}
}

if (method == "artistbackground") {
var artistbackground_data = [];
var artistbackground = json_data['artistbackground'] || [];
if (artistbackground.length && artistbackground.length > artistbackground_files.length) {
artistbackground_data.push.apply(artistbackground_data, artistbackground);
for (i = 0; i < Math.min(artistbackground_data.length, this.artistbackground_limit); i++) {
image_url = artistbackground_data[i].url;
image_name = artistbackground_data[i].url.substr(artistbackground_data[i].url.lastIndexOf('/') + 1);
_.createFolder(_.artistFolder(artist) + "artistbackground\\");
cmd = "cscript //nologo \"" + this.download_vbs + "\" \"" + decodeURIComponent(artistbackground_data[i].url) + "\" \"" + _.artistFolder(artist) + "artistbackground\\" + image_name + "\"";
this.console(cmd);
_.runCmd(cmd, false);
}
}
}

if (method == "artistthumb") {
var artistthumb_data = [];
var artistthumb = json_data['artistthumb'] || [];
if (artistthumb.length && artistthumb.length > artistthumb_files.length) {
artistthumb_data.push.apply(artistthumb_data, artistthumb);
for (i = 0; i < Math.min(artistthumb_data.length, this.artistthumb_limit); i++) {
image_url = artistthumb_data[i].url;
image_name = artistthumb_data[i].url.substr(artistthumb_data[i].url.lastIndexOf('/') + 1);
_.createFolder(_.artistFolder(artist) + "artistthumb\\");
cmd = "cscript //nologo \"" + this.download_vbs + "\" \"" + decodeURIComponent(artistthumb_data[i].url) + "\" \"" + _.artistFolder(artist) + "artistthumb\\" + image_name + "\"";
this.console(cmd);
_.runCmd(cmd, false);
}
}
}
} catch (err) {
this.console(method + ": " + 'None Found');
}
break;

default:
this.console('HTTP error: ' + xmlhttp.status);
xmlhttp.responseText && console.log(xmlhttp.responseText);
this.console(method + ": " + 'HTTP error: ' + xmlhttp.status);
break;
}
}
}, this);
xmlhttp.send();
}

this.get_base_url = function () {
return 'http://webservice.fanart.tv/v3/music/';
}

this.console = function (msg) {
console.log("Fanarttv: " + msg);
}

this.api_key = window.GetProperty('Fanarttv API Key', "");
this.client_key = window.GetProperty('Fanarttv Client Key', "");
this.ua = 'foo_jscript_panel_fanarttv';
this.enabled = window.GetProperty('Fanarttv Auto Download', true);
this.auto_cover = window.GetProperty('Fanarttv Auto Download Cover', false);
this.auto_disc = window.GetProperty('Fanarttv Auto Download Disc', false);
this.auto_musiclogo = window.GetProperty('Fanarttv Auto Download Musiclogo', true);
this.auto_artistbackground = window.GetProperty('Fanarttv Auto Download ArtistBackground', true);
this.auto_artistthumb = window.GetProperty('Fanarttv Auto Download ArtistThumb', true);
this.cover_limit = 1;
this.disc_limit = 1;
this.musiclogo_limit = window.GetProperty('Fanarttv Musiclogo Limit', 3);
this.artistbackground_limit = window.GetProperty('Fanarttv ArtistBackground Limit', 1);
this.artistthumb_limit = window.GetProperty('Fanarttv ArtistThumb Limit', 3);
this.download_vbs = fb.ComponentPath + "samples\\complete\\vbs\\download.vbs";
}
});


Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #8
Doesn't it make more sense to wait a little while for foo_musicbrainz to get this extended API support? Maybe through a pull request, if MordredKLB is open to it and does not have the time to write the code?

Otherwise there will be a lot of extra plumbing code to maintain just to do the fanart.tv calls...

You have a point there, the best place for a functionality based in MusicBrainz_IDs seems to be the MusicBrainz tagger itself. Is difficult to argue this logic  ;)
I disagree :) foo_musicbrainz is a tagger. Downloading artwork is far beyond the scope of what it currently does. Setting aside if it should be in foo_musicbrainz or a new foo_fanart, there's one more REALLY big problem.

If you're anything like me, you're picky about the artwork you download. For example since TT says he wants to download band logos, take a look at the options for Metalllica. That's 33 different logos, and the one that actually looks good in my theme (and is included in Georgia fanart) is #3 in total upvotes. Obviously this is an extreme example, but the problem can be pretty stark in cdArt where say an old image that isn't very good has a few upvotes and a great one recently added with no upvotes wouldn't be chosen. Obviously we can't download them all either because that screws things up. Also, what do we do if we already have artwork and it's different than what's currently on fanart.tv (or elsewhere)? What if my copy is better/worse than what else is available?

So that means we need some kind of comparison picker for this, and that's far beyond my extremely limited UI abilities to code in C++.

So we've got a couple options here:
1) You can use Album Art Downloader with the fanart.tv script I wrote (ships with it) which presents a convenient way to get cover images and cdArt. It doesn't even require your files to have musicbrainz IDs tagged in them as it does a lookup. I launch this from a right click Run services script with this command:
Code: [Select]
"..\..\Program Files\AlbumArtDownloader\AlbumArt.exe" /ar "%artist%" /al "%album%" /path "$directory_path(%path%)\folder.'%extension%'" /autoclose
Only problem with this method is that fanart cdart will want to download as folder.png so you have to manually change the name inside AAD before downloading, and you have to run the whole thing manually every time. It also doesn't get band/label artwork although a script could be added to grab those.

2) Build it into your JS theme or as a standalone JSP/SMP script. This allows you to do all the preview stuff you want, offers a lot better control over naming, etc., and you can do it based on tags or even do your own musicbrainz lookup if you want to support people without well tagged stuff. This is the route that I think is best... but it does have some questions: Does it run on every new song or just on demand? Does it only run if you're missing some specified fanart? Is it going to hammer fanart.tv and drive up their bandwidth costs if a ton of people are using it?

3) Use another 3rd party tagger that does some of this for you. Picard might be extendable to do this, but if it is I don't know if it allows you to pick art (last I played with it it was just on the terminal I think). I wrote my own tagger which allows me to pick fanart and does this all using my own naming conventions:
https://i.imgur.com/32zU41O.png
Drawback to this is the same as #1, there's no way to find out if new/updated artwork has been added unless you manually check.

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #9
I disagree :) foo_musicbrainz is a tagger. Downloading artwork is far beyond the scope of what it currently does. Setting aside if it should be in foo_musicbrainz or a new foo_fanart, there's one more REALLY big problem.

If you're anything like me, you're picky about the artwork you download. For example since TT says he wants to download band logos, take a look at the options for Metalllica. That's 33 different logos, and the one that actually looks good in my theme (and is included in Georgia fanart) is #3 in total upvotes. Obviously this is an extreme example, but the problem can be pretty stark in cdArt where say an old image that isn't very good has a few upvotes and a great one recently added with no upvotes wouldn't be chosen. Obviously we can't download them all either because that screws things up. Also, what do we do if we already have artwork and it's different than what's currently on fanart.tv (or elsewhere)? What if my copy is better/worse than what else is available?

So that means we need some kind of comparison picker for this, and that's far beyond my extremely limited UI abilities to code in C++.

So we've got a couple options here:
1) You can use Album Art Downloader with the fanart.tv script I wrote (ships with it) which presents a convenient way to get cover images and cdArt. It doesn't even require your files to have musicbrainz IDs tagged in them as it does a lookup. I launch this from a right click Run services script with this command:
Code: [Select]
"..\..\Program Files\AlbumArtDownloader\AlbumArt.exe" /ar "%artist%" /al "%album%" /path "$directory_path(%path%)\folder.'%extension%'" /autoclose
Only problem with this method is that fanart cdart will want to download as folder.png so you have to manually change the name inside AAD before downloading, and you have to run the whole thing manually every time. It also doesn't get band/label artwork although a script could be added to grab those.

2) Build it into your JS theme or as a standalone JSP/SMP script. This allows you to do all the preview stuff you want, offers a lot better control over naming, etc., and you can do it based on tags or even do your own musicbrainz lookup if you want to support people without well tagged stuff. This is the route that I think is best... but it does have some questions: Does it run on every new song or just on demand? Does it only run if you're missing some specified fanart? Is it going to hammer fanart.tv and drive up their bandwidth costs if a ton of people are using it?

3) Use another 3rd party tagger that does some of this for you. Picard might be extendable to do this, but if it is I don't know if it allows you to pick art (last I played with it it was just on the terminal I think). I wrote my own tagger which allows me to pick fanart and does this all using my own naming conventions:
https://i.imgur.com/32zU41O.png
Drawback to this is the same as #1, there's no way to find out if new/updated artwork has been added unless you manually check.

I thought that could be some kind of synergy because fanart seems to use the mb_ids, but the quantity of files could be a problem in the tagger.

I used fanart like a plugin in Kody to organize films and TV Shows and download some art, but never really get into the page itself until today. I take a look at Metallica and there is a lot of different covers, cdarts etc for the same release without an apparent form to refer it to some specific catalog number or something similar. I thought that it will follow the mb_id beyond the artist, but It is a fan art page after all, not a curate database ;).
That makes it more difficult to automatize the process. To do good use of it seems necessary some manual intervention, even having some tool that make it easier.

With this in mind, a good option will be an on demand component or script with some kind of selection windows like the one you show. The artist and label only need to run once per reference and the album, well, it will work like the other taggers, you have to do it album by album. Something basic. Destination folders and file names in general option and a picker to the files.

The work of having the last updates must relay to the user, other way we will become lazy.








Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #10
Thanks guys,

@MordredKLB, thanks for your insight how fanart.tv works. I see you already thought about this thoroughly and
I clearly see your pointed out problems, I didn't know about the vote system...
Your described second solution seems to be the best, but I would have no idea how you would implement some sort of preview!?
So I guess manual right click context menu > Download stuff would be the best without hammering fanart.tv.

And then there is @zeremy!
From a quick look of your code you've posted, this seems to be exactly the stuff I need!? I'll definitely try it out, thanks!
There seems to be a great force that has guided me to your stuff zeremy. Believe it or not, I was working on some new
progress bar styles after I've implemented @regor 's waveform bar into Georgia-ReBORN and then by "coincidence",
I've stumbled upon a post you've written as a comment on Mordred's Georgia theme on reddit.
That post included a really cool js script for the old VU Meter component you've offered to Mordred, a modern peak meter script of yours.
Based of your old code, I've rewrote and implemented it in my theme and it's nearly finished as I'm writing this. And now you've introduced your theme Project2018 to me, that already had this cool peak meter and the fanart.tv stuff, this really is some wild "coincidence" :)
I will add additional credits to you zeremy, thanks!

Btw, I only knew about your footuner theme up till now, why did you not publish your theme also on Github like you did with footuner and maintain it?
From the look of your 5 year old reddit post, it looks really cool!

-TT

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #11
I used fanart like a plugin in Kody to organize films and TV Shows and download some art, but never really get into the page itself until today. I take a look at Metallica and there is a lot of different covers, cdarts etc for the same release without an apparent form to refer it to some specific catalog number or something similar. I thought that it will follow the mb_id beyond the artist, but It is a fan art page after all, not a curate database ;).
That makes it more difficult to automatize the process. To do good use of it seems necessary some manual intervention, even having some tool that make it easier.
To be clear artist logos, etc. just use the MUSICBRAINZ_ARTISTID, but releases use MUSICBRAINZ_RELEASEGROUPID. So when you query fanart.tv's API using the RGID from say Back in Black you'd only get front and discArt from that album, even though you can't differentiate between your edition and the ones on fanart.tv.

Quote
With this in mind, a good option will be an on demand component or script with some kind of selection windows like the one you show. The artist and label only need to run once per reference and the album, well, it will work like the other taggers, you have to do it album by album. Something basic. Destination folders and file names in general option and a picker to the files.

The work of having the last updates must relay to the user, other way we will become lazy.
This was always the plan for Georgia, but I never got around to it. API calls are pretty easy to make and I had intended to do something like query once every 24hr per artist/album combo that was played, and display a "Found missing artwork" button after comparing the JSON response to images the theme knows about, and then clicking on that would replace the UI with image previews and allow you to save them to your specified folders.

It's honestly not even THAT hard to do (although scrolling seems like it'd be a problem), but you might have noticed that Georgia updates are few and far between nowadays since most everybody migrated to Georgia-Reborn. You also can't do it in a tiny panel that anyone could add because there's not a great way to display HTML popups (it can theoretically be done, but boy howdy do I not like doing it).

Anyway TT has convinced me that I should probably get off my lazy ass and just do this so once I finish off georgia-http for http-control (which is coming along AMAZINGLY so far) I'll probably try and knock it out and then let TT add something similar to Reborn.

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #12
Thanks guys,

And then there is @zeremy!
From a quick look of your code you've posted, this seems to be exactly the stuff I need!? I'll definitely try it out, thanks!
There seems to be a great force that has guided me to your stuff zeremy. Believe it or not, I was working on some new
progress bar styles after I've implemented @regor 's waveform bar into Georgia-ReBORN and then by "coincidence",
I've stumbled upon a post you've written as a comment on Mordred's Georgia theme on reddit.
That post included a really cool js script for the old VU Meter component you've offered to Mordred, a modern peak meter script of yours.
Based of your old code, I've rewrote and implemented it in my theme and it's nearly finished as I'm writing this. And now you've introduced your theme Project2018 to me, that already had this cool peak meter and the fanart.tv stuff, this really is some wild "coincidence" :)
I will add additional credits to you zeremy, thanks!

Btw, I only knew about your footuner theme up till now, why did you not publish your theme also on Github like you did with footuner and maintain it?
From the look of your 5 year old reddit post, it looks really cool!

-TT

@TT
As for the VU script , it is not mine , the author is @kgena_ua , I modified it though to follow the color switching scheme.

Regarding Project2018 , it was an experiment to combine all known features I wanted in a theme. It was beta and the feedback was limited and have no plans in maintaining it.
The [dropbox link] is still active if anyone wants to .

Suggestions if you guys decide in adding fanart scripts to yours themes :

It would be more efficient if the process was in a sort of report ( selected by user-not automatic) , where all library items are scanned first for existence of  MBID'S and report missing MBID tagging.
Then the files (albums) folders are checked for existing cover,disc.
Then the artists artwork designated folder (common) are checked for existing musiclogo,artistbackground,artistthumb.
The report would show missing artwork from the above and filter the query to call from fanart.tv get any available.
 

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #13
Anyway TT has convinced me that I should probably get off my lazy ass and just do this so once I finish off georgia-http for http-control (which is coming along AMAZINGLY so far) I'll probably try and knock it out and then let TT add something similar to Reborn.

I'm eagerly waiting for your stuff man... can't wait! It's also good to hear that some ass-kicking helps,
actually I did that on purpose to revamp your motivation and I'm not sorry at all :))

- TT


 

Re: [REQUEST USER-COMPONENT] foo_fanart

Reply #14
@zeremy,

thanks for the clarification, suggestions and your link to your theme!
I'm very busy atm doing some really cool stuff, but I'll try all once I've got some free time!

-TT