-if ( $mpfiresettings{'ACTION'} eq "scan" )
-{
-delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'};delete $mpfiresettings{'PAGE'};
-&General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings);
-open(DATEI, "<${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden";
-my @Zeilen = <DATEI>;
-close(DATEI);
-open(DATEI, ">${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden";
-foreach (@Zeilen){
-if ( $_ =~ /music_directory/){print DATEI "music_directory \"".$mpfiresettings{'MUSICDIR'}."\"\n";}
-else {print DATEI $_;}
-}
-close(DATEI);
-
-$message=system("/usr/local/bin/mpfirectrl scan 2>/dev/null");
-refreshpage();
-}
-elsif ( $mpfiresettings{'ACTION'} eq ">" ){$message=system("/usr/local/bin/mpfirectrl","play","\"$mpfiresettings{'FILE'}\"","2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "x" ){$message=system("/usr/local/bin/mpfirectrl stop 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "|>" ){$message=system("/usr/local/bin/mpfirectrl toggle 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "<<" ){$message=system("/usr/local/bin/mpfirectrl prev 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq ">>" ){$message=system("/usr/local/bin/mpfirectrl next 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "+" ){$message=system("/usr/local/bin/mpfirectrl volup 5 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "-" ){$message=system("/usr/local/bin/mpfirectrl voldown 5 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "++" ){$message=system("/usr/local/bin/mpfirectrl volup 10 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "--" ){$message=system("/usr/local/bin/mpfirectrl voldown 10 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "playweb" ){$message=system("/usr/local/bin/mpfirectrl","playweb","\"$mpfiresettings{'FILE'}\"","2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "playlist" ){$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "emptyplaylist" ){$message=system("/usr/local/bin/mpfirectrl clearplaylist 2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "addtoplaylist" ){$message=system("/usr/local/bin/mpfirectrl","playadd","\"$mpfiresettings{'FILE'}\"","2>/dev/null");}
-elsif ( $mpfiresettings{'ACTION'} eq "playall" ){
-my @temp = ""; my @song = "";
-
-foreach (keys(%songs)){
- @song = split(/\|/,$songs{$_});push(@temp,$song[0])
- }
-open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist";
-print DATEI @temp;
-close(DATEI);
-
-$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");
-}
-elsif ( $mpfiresettings{'ACTION'} eq "playalbum" )
-{
-my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'album'});
-
-foreach (keys(%songs)){
- @song = split(/\|/,$songs{$_});$song[4] =~ s/\W/ /g;
-
- foreach (@select){
- $_ =~ s/\W/ /g;
- if ( $song[4] =~ /$_/ ){push(@temp,$song[0]);}
- }
-}
-
-open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist";
-print DATEI @temp;
-close(DATEI);
-$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");
-}
-elsif ( $mpfiresettings{'ACTION'} eq "playartist" )
-{
-my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'artist'});
-
-foreach (keys(%songs)){
- @song = split(/\|/,$songs{$_});$song[2] =~ s/\W/ /g;
-
- foreach (@select){
- $_ =~ s/\W/ /g;
- if ( $song[2] =~ /$_/ ){push(@temp,$song[0]);}
- }
-}
-
-open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist";
-print DATEI @temp;
-close(DATEI);
-$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");
-}
-elsif ( $mpfiresettings{'ACTION'} eq "playyear" )
-{
-my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'year'});
-
-foreach (keys(%songs)){
- @song = split(/\|/,$songs{$_});$song[6] =~ s/\W/ /g;
-
- foreach (@select){
- $_ =~ s/\W/ /g;
- if ( $song[6] =~ /$_/ ){push(@temp,$song[0]);}
- }
-}
-
-open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist";
-print DATEI @temp;
-close(DATEI);
-$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");
-}
-elsif ( $mpfiresettings{'ACTION'} eq "playgenre" )
-{
-my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'genre'});
-
-foreach (keys(%songs)){
- @song = split(/\|/,$songs{$_});$song[7] =~ s/\W/ /g;
-
- foreach (@select){
- $_ =~ s/\W/ /g;
- if ( $song[7] =~ /$_/ ){push(@temp,$song[0]);}
- }
+if ( $mpfiresettings{'ACTION'} eq "scan" ){
+
+# on keypress scan the given directory and store the path to the mpd config
+ &General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings);
+ &Header::getcgihash(\%mpfiresettings);
+ delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'};
+ delete $mpfiresettings{'PAGE'}; delete $mpfiresettings{'FRAME'};
+ &General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings);
+
+ open(DATEI, "<${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden";
+ my @Zeilen = <DATEI>;
+ close(DATEI);
+
+ open(DATEI, ">${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden";
+ foreach (@Zeilen){
+ if ( $_ =~ /music_directory/){
+ print DATEI "music_directory \"".$mpfiresettings{'MUSICDIR'}."\"\n";
+ }else {
+ print DATEI $_;
+ }
+ }
+ close(DATEI);
+
+ $mpd->updatedb();
+ refreshpage();
+}elsif ( $mpfiresettings{'ACTION'} eq "playweb" ){
+ $message=system("/usr/local/bin/mpfirectrl","playweb","\"$mpfiresettings{'FILE'}\"","2>/dev/null");
+}elsif ( $mpfiresettings{'ACTION'} eq "playlist" ){
+ $mpd->play();
+}elsif ( $mpfiresettings{'ACTION'} eq "emptyplaylist" ){
+# on keypress clear the playlist
+ $mpd->playlist->clear();
+}elsif ( $mpfiresettings{'ACTION'} eq "addtoplaylist" ){
+ $mpd->playlist->add($mpfiresettings{'FILE'});
+}elsif ( $mpfiresettings{'ACTION'} eq "playalbum" ){
+# on keypress play the selected albums
+ my @select = split(/\|/,$mpfiresettings{'album'});
+ $mpd->playlist->clear();
+ foreach (@select){
+ foreach ($mpd->collection->filenames_by_album($_)){
+ if ( $_ ne "" ){
+ $mpd->playlist->add($_);
+ }
+ }
+ }
+ $mpd->play();
+}elsif ( $mpfiresettings{'ACTION'} eq "playartist" ){
+# on keypress play the selected artist
+ my @select = split(/\|/,$mpfiresettings{'artist'});
+ $mpd->playlist->clear();
+ foreach (@select){
+ foreach ($mpd->collection->filenames_by_artist($_)){
+ if ( $_ ne "" ){
+ $mpd->playlist->add($_);
+ }
+ }
+ }
+ $mpd->play();
+}elsif ( $mpfiresettings{'ACTION'} eq "playyear" ){
+# on keypress play the selected year
+ my @select = split(/\|/,$mpfiresettings{'year'});
+ $mpd->playlist->clear();
+ foreach (@select){
+ foreach ($mpd->collection->filenames_by_year($_)){
+ if ( $_ ne "" ){
+ $mpd->playlist->add($_);
+ }
+ }
+ }
+ $mpd->play();
+}elsif ( $mpfiresettings{'ACTION'} eq "playgenre" ){
+# on keypress play the selected genre
+ my @select = split(/\|/,$mpfiresettings{'genre'});
+ $mpd->playlist->clear();
+ foreach (@select){
+ foreach ($mpd->collection->filenames_by_genre($_)){
+ if ( $_ ne "" ){
+ $mpd->playlist->add($_);
+ }
+ }
+ }
+ $mpd->play();
+}elsif ( $mpfiresettings{'ACTION'} eq ">" ){
+ $mpd->playlist->clear();
+ $mpd->playlist->add($mpfiresettings{'FILE'});
+ $mpd->play();