X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=lib%2FApp%2FMPD%2FFeeder.pm;h=ed5d27658da5a27a6a9d2a88b9ca5b4372f059c8;hb=e72d5851c56146ac78be91b720ed7d7451fcc0d0;hp=777c95bf10d79b2b561ad57acd1437e4d605aa71;hpb=86e0a7c0de5300f8e72a8f1d70fbb59080d31fe9;p=mpd-feeder.git diff --git a/lib/App/MPD/Feeder.pm b/lib/App/MPD/Feeder.pm index 777c95b..ed5d276 100644 --- a/lib/App/MPD/Feeder.pm +++ b/lib/App/MPD/Feeder.pm @@ -132,6 +132,8 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; my $rows = $mpd->send('listallinfo')->get; + $log->trace('got all songs from MPD'); + $db->start_update; try { my $song_count; @@ -142,14 +144,20 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; $self->db->store_song( $entry->{file}, $entry->{AlbumArtist} // $entry->{Artist}, $entry->{Album} ); + $song_count++; } - $log->info("Updated data about $song_count songs"); + my ($total_songs, $total_artists, $total_albums, + $new_songs, $new_artists, $new_albums + ) = $self->db->finish_update; - $self->db->remove_stale_entries; + $log->info( + "Updated data about $song_count songs (including $new_songs new), " + . "$total_artists artists (including $new_artists new) " - $self->db->finish_update; + . "and $total_albums albums (including $new_albums new)" + ); $db_needs_update = 0; } @@ -166,7 +174,7 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; $self->connect_mpd; $mpd->send('playlist')->on_done( sub { - my $present = scalar @{ $_[0] }; + my $present = scalar @{ $_[0] // [] }; $log->notice( "Playlist contains $present songs. Wanted: " . $opt->target_queue_length ); @@ -247,11 +255,6 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; ); } - method run { - - $self->prepare_to_wait_idle; - } - method stop { undef $mpd; @@ -259,10 +262,11 @@ use constant DEFAULT_CONFIG_FILE => '/etc/mpd-feeder/mpd-feeder.conf'; } method run_loop { + $self->connect_mpd; $self->connect_db; for ( ;; ) { - $self->queue_songs( undef, sub { $self->run } ); + $self->queue_songs( undef, sub { $self->prepare_to_wait_idle } ); $log->debug("Entering event loop. PID=$$");