]> git.ktnx.net Git - mpd-feeder.git/blobdiff - bin/mpd-feeder
fix handling of database info
[mpd-feeder.git] / bin / mpd-feeder
index 7c796c71f4f1e5e65eba5a66dd774eb5f3fb6add..3cc220668c996f3b500015e068c216c299a3d84d 100755 (executable)
@@ -150,11 +150,11 @@ use Net::Async::MPD;
         $opt->parse_command_line;
 
         unless ($opt->dump_config) {
-            $mpd = Net::Async::MPD->new(
-                host         => $opt->mpd_host,
-                port         => $opt->mpd_port,
-                auto_connect => 1,
-            );
+            my %conn = ( auto_connect => 1 );
+            $conn{host} = $opt->mpd_host if $opt->mpd_host;
+            $conn{port} = $opt->mpd_port if $opt->mpd_port;
+
+            $mpd = Net::Async::MPD->new(%conn);
 
             $self->connect_db;
             $self->update_db unless $self->opt->skip_db_update;
@@ -236,26 +236,18 @@ SQL
         $mpd->send('listallinfo')->on_done(
             sub {
                 try {
-                    $db->begin;
+                    my $rows = shift;
+                    $db->begin_work;
 
                     $db_generation++;
 
-                    my ($song, $artist, $album);
-
-                    foreach my $row (@_) {
-                        chomp($row);
-
-                        if ($row =~ s/^file:\s*//) {
-                            $self->db_store_song( $song, $artist, $album );
-                            $song = $row;
-                            $artist = $album = undef;
-                        }
-                        elsif ( $row =~ s/^Artist:\s*// ) {
-                            $artist = $row;
-                        }
-                        elsif ( $row =~ s/^Album:\s*// ) {
-                            $album = $row;
-                        }
+                    my $song_count;
+
+                    foreach my $entry (@$rows) {
+                        next unless exists $entry->{file};
+                        $self->db_store_song( $entry->{file},
+                            $entry->{Artist}, $entry->{Album} );
+                        $song_count++;
                     }
 
                     $self->db_store_song($song, $artist, $album);