Hello.
I'm trying to use Virtual Libraries to rebuild a couple of menus I had
previously created with Erland's plugin. I don't have any experience
with SQL but I'm quite willing to learn.
So if I understand all this correctly, I have to 'master' 3 steps to get
my own custom menus/virtual libraries:
> 1) use the Library demo as a starting point to create the -Plugin.pm-,
> -install.xml- and -strings.txt- I need for my own plugin
>
> 2) figure out the correct SQL to be used in the plugin in each case
>
> 3) create the menus in LMS
Some typical examples of menus I would like to create are:
- a *comments based menu -group-* "AAA" with *submenus artists,
albums, genres, years, songs* for all tracks that *include comment*
AAA but *not* comment BBB and *not* comment CCC
By "songs" I mean a submenu for virtual libraries (with few
songs) which when clicked upon shows only the tracks (like in the
Favorites menu).
- a menu -group- "*Compilations*" with *submenus artists, albums,
genres, years* (for all compilations)
- a menu "*Random Compilations*" - exactly like the built-in -random
albums- menu, only for compilations = *20 random compilation albums*
- a menu -group- "*3 Stars+*" with *submenus artists, albums, genres,
years* for all *tracks rated 3 stars or higher*
Unfortunately, I already got stuck with the comments based menu AAA. The
4 menus show up (on the top menu level) but the entries are all wrong or
even empty (on the track level). I didn't manage to create a "songs"
submenu so far.
Here's my -Plugin.pm- (without comments):
Code:
--------------------
package Plugins::MyCustomMenus::Plugin;
use strict;
use base qw(Slim::Plugin::Base);
use Slim::Menu::BrowseLibrary;
use Slim::Music::VirtualLibraries;
use Slim::Music::Import;
use Slim::Utils::Log;
sub initPlugin {
my $class = shift;
foreach ( {
id => 'AAA',
name => 'All AAA Tracks',
# %s is being replaced with the library's ID
sql => qq{
INSERT OR IGNORE INTO library_track (library, track)
SELECT '%s', tracks.id
FROM tracks
LEFT JOIN comments ON
WHERE
comments.track = tracks.id
AND comments.value LIKE '%AAA%'
AND not exists (select * from comments
where
comments.track=tracks.id and
comments.value like
'%BBB%' and
comments.value like '%CCC%'
)
group by tracks.id
}
} ) {
Slim::Music::VirtualLibraries->registerLibrary($_);
}
my @menus = ( {
name => 'AAA_ARTISTS',
icon => 'html/images/artists.png',
feed => \&Slim::Menu::BrowseLibrary::_artists,
id => 'AAA_TracksByArtist',
weight => 25,
virtualID => 'AAA',
},{
name => 'AAA_ALBUMS',
icon => 'html/images/albums.png',
feed => \&Slim::Menu::BrowseLibrary::_albums,
id => 'AAA_TracksByAlbum',
weight => 25,
virtualID => 'AAA',
},{
name => 'AAA_GENRES',
icon => 'html/images/genres.png',
feed => \&Slim::Menu::BrowseLibrary::_genres,
id => 'AAA_TracksByGenres',
weight => 25,
virtualID => 'AAA',
},{
name => 'AAA_YEARS',
icon => 'html/images/years.png',
feed => \&Slim::Menu::BrowseLibrary::_years,
id => 'AAA_TracksByYears',
weight => 25,
virtualID => 'AAA',
} );
foreach (@menus) {
Slim::Menu::BrowseLibrary->registerNode({
type => 'link',
name => $_->{name},
params => { library_id =>
Slim::Music::VirtualLibraries->getRealId($_->{virtualID}) },
feed => $_->{feed},
icon => $_->{icon},
jiveIcon => $_->{icon},
homeMenuText => $_->{name},
condition =>
\&Slim::Menu::BrowseLibrary::isEnabledNode,
id => $_->{id},
weight => $_->{weight},
cache => 1,
});
}
$class->SUPER::initPlugin(@_);
}
1;
--------------------
My questions for this one:
1) where are the mistakes in my SQL?
2) How do I manage to make all 5 menus (artists, albums, genres, years,
songs) submenus of 1 menu group AAA:
Code:
--------------------
AAA > artists
> albums
> genres
> years
> songs
--------------------
It is possible I think (because one of Erland's plugins used to do that)
but I don't know how.
And finally, would it even be possible to group all of my custom made
menus under 1 menu entry, like My Custom Menus > AAA >all of AAA
submenus, My Custom Menus > Compilations > all of "Compilations'
submenus... ?
Thank you very much for your much needed help.
------------------------------------------------------------------------
afriend's Profile: http://forums.slimdevices.com/member.php?userid=39306
View this thread: http://forums.slimdevices.com/showthread.php?t=109334
_______________________________________________
discuss mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/discuss