Index: Plugins/MusicMagic/Plugin.pm =================================================================== --- Plugins/MusicMagic/Plugin.pm (revision 3582) +++ Plugins/MusicMagic/Plugin.pm (working copy) @@ -381,6 +381,41 @@ return $mmsPath } +sub grabFilters { + + my @filters; + my %filterHash; + + $MMSport = Slim::Utils::Prefs::get('MMSport') unless $MMSport; + $MMSHost = Slim::Utils::Prefs::get('MMSHost') unless $MMSHost; + + $::d_musicmagic && msg("MusicMagic: get filters list\n"); + + my $http = Slim::Player::Protocols::HTTP->new({ + 'url' => "http://$MMSHost:$MMSport/api/filters", + 'create' => 0, + }); + + if ($http) { + @filters = split(/\n/, $http->content()); + $http->close(); + $::d_musicmagic && msg("MusicMagic: found filters:\n"); + use Data::Dumper; + print Dumper(\@filters); + } + + push @filters,"(none)"; + foreach my $filter ( @filters ) { + if ($filter eq "(none)") { + $filterHash{0} = $filter; + next + } + $filterHash{$filter} = $filter; + } + + return %filterHash; +} + sub exportFunction { my $playlist; @@ -891,6 +926,12 @@ variety => Slim::Utils::Prefs::get('MMMVariety'), # Set the variety slider (default 0) ); + my $filter = Slim::Utils::Prefs::get('MMMFilter'); + if ($filter ne '0') { + $::d_musicmagic && msg("MusicMagic: filter $filter in use.\n"); + $args{filter} = $filter; + } + my $argString = join( '&', map { "$_=$args{$_}" } keys %args ); if ($for eq "song") { @@ -902,7 +943,7 @@ } elsif ($for eq "genre") { $mixArgs = "genre=$id"; } else { - $::d_musicmagic && msg("MusicMagic no valid type specified for mix"); + $::d_musicmagic && msg("MusicMagic: no valid type specified for mix\n"); return undef; } @@ -1130,7 +1171,7 @@ }; sub setupCategory { - + my %setupCategory = ( 'title' => Slim::Utils::Strings::string('SETUP_MUSICMAGIC'), @@ -1139,7 +1180,7 @@ 'Groups' => { 'Default' => { - 'PrefOrder' => [qw(MMMSize MMMMixType MMMStyle MMMVariety musicmagicscaninterval MMSport)] + 'PrefOrder' => [qw(MMMSize MMMMixType MMMStyle MMMVariety MMMFilter musicmagicscaninterval MMSport)] # disable remote host access, its confusing and only works in specific cases # leave it here for hackers who really want to try it @@ -1177,6 +1218,12 @@ 'validateArgs' => [0,undef,1000], }, + ,'MMMFilter' => { + 'validate' => \&Slim::Web::Setup::validateInHash + ,'validateArgs' => [\&grabFilters] + ,'options' => {grabFilters()} + }, + 'MMMSize' => { 'validate' => \&Slim::Web::Setup::validateInt, 'validateArgs' => [1,undef,1]