X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=bin%2Fmpd-feeder;h=be0fc2c073b7e2c0ba466442b535d05afa87dbbe;hb=744b004c547dab563ead08fa0da87dabf6e537e9;hp=097a7a654f3110d2ca1048540285efc5241932eb;hpb=4a27777b350218cfdc794e7390f5ae1b54e56c25;p=mpd-feeder.git diff --git a/bin/mpd-feeder b/bin/mpd-feeder index 097a7a6..be0fc2c 100755 --- a/bin/mpd-feeder +++ b/bin/mpd-feeder @@ -159,7 +159,7 @@ use Net::Async::MPD; $db = DBI->connect( "dbi:Pg:dbname=" . $opt->db_path, $opt->db_user, $opt->db_password, - { RaiseError => 1, AutoCommit => 1 } ); + { RaiseError => 1, PrintError => 0, AutoCommit => 1 } ); $log->info( "Connected to database " . $opt->db_path ); $db_generation = $self->db_get_option('generation'); @@ -244,46 +244,45 @@ SQL $self->connect_mpd; $self->connect_db; - $mpd->send('listallinfo')->on_done( - sub { - try { - my $rows = shift; - $db->begin_work; + my $rows = $mpd->send('listallinfo')->get; + try { + $db->begin_work; - $db_generation++; + $db_generation++; - my $song_count; + my $song_count; - foreach my $entry (@$rows) { - next unless exists $entry->{file}; - $self->db_store_song( $entry->{file}, - $entry->{Artist}, $entry->{Album} ); - $song_count++; - } + foreach my $entry (@$rows) { + next unless exists $entry->{file}; + $self->db_store_song( $entry->{file}, + $entry->{Artist}, $entry->{Album} ); + $song_count++; + } - $log->info("Updated data about $song_count songs"); + $log->info("Updated data about $song_count songs"); - $self->db_remove_stale_entries; + $self->db_remove_stale_entries; - $self->db_set_option( generation => $db_generation ); + $self->db_set_option( generation => $db_generation ); - $db->commit; - } - catch { - my $err = $@; + $db->commit; - $db_generation--; + $db_needs_update = 0; + } + catch { + my $err = $@; - $db->rollback; + $db_generation--; - die $err; - } - } - ); + $db->rollback; + + die $err; + } } method db_find_suitable_songs($num) { $self->connect_db; + $self->update_db; my @result; my $sth = $db->prepare_cached(<connect_mpd; my $f = $mpd->send( \@commands ); - warn "here"; $f->on_fail( sub { die @_ } ); $f->on_done( sub { @@ -372,8 +370,6 @@ SQL $callback->(@_) if $callback; } ); - - warn "here"; } method prepare_to_wait_idle { @@ -382,10 +378,9 @@ SQL sub { warn $_ for @_; my $result = shift; - use JSON; warn to_json($result); if ( $result->{changed} eq 'database' ) { - $self->update_db(1); + $db_needs_update = 1; $self->prepare_to_wait_idle; } elsif ( $result->{changed} eq 'playlist' ) { @@ -443,7 +438,6 @@ if (@ARGV) { } } - $feeder->queue_songs( undef, sub { $feeder->run } ); $feeder->mpd->loop->run;