diff --git a/client.sh b/client.sh index 5dc41ea..8123b1d 100755 --- a/client.sh +++ b/client.sh @@ -15,8 +15,10 @@ for i in {1..$QUEUE_LENGTH}; do closest_song=`sqlite3 "$mpdbliss_data_home/db.sqlite3" "SELECT filename FROM (SELECT s2.filename AS filename, distances.distance AS distance FROM distances INNER JOIN songs AS s1 ON s1.id=distances.song1 INNER JOIN songs AS s2 on s2.id=distances.song2 WHERE s1.filename='$current_song' UNION SELECT s1.filename AS filename, distances.distance as distance FROM distances INNER JOIN songs AS s1 ON s1.id=distances.song1 INNER JOIN songs AS s2 on s2.id=distances.song2 WHERE s2.filename=\"$current_song\") ORDER BY distance ASC LIMIT 1"` if [ ! -z "$closest_song" ]; then # Push it on the queue - mpc add "$closest_song" + mpc add "$closest_song" 2>&1 > /dev/null # Continue using latest pushed song as current song current_song="$closest_song" + # Note: if song could not be found by mpd, it is just not added to the + # queue and skipped fi done diff --git a/src/main.c b/src/main.c index 1dd0638..1247944 100644 --- a/src/main.c +++ b/src/main.c @@ -316,6 +316,12 @@ int main(int argc, char** argv) { // Check if a full rescan is needed if (1 == args_info.rescan_flag) { + dberr = sqlite3_exec(dbh, "BEGIN TRANSACTION; DELETE FROM distances; DELETE FROM songs; COMMIT"); + if (SQLITE_OK != dberr) { + fprintf(stderr, "Error purging existing data in db: %s.\n", sqlite3_errmsg(dbh)); + sqlite3_close(dbh); + return EXIT_FAILURE; + } update_database(conn, last_mtime, mpd_base_path); } // Else, if we requested an update of the db