diff --git a/libsaria/library/library.h b/libsaria/library/library.h index cc94036a..b631ed4b 100644 --- a/libsaria/library/library.h +++ b/libsaria/library/library.h @@ -26,7 +26,7 @@ class LibraryPath string get_path(); void get_info(void (*)(struct libsaria::library::PathInfo &)); bool get_info_id(ino_t &, void (*)(Track &)); - void insert_track(TrackTag &); + void insert_track(ino_t &inode, TrackTag &); bool play_id(ino_t &); void save(OutFile &); void update(); diff --git a/libsaria/library/update.cpp b/libsaria/library/update.cpp index ee1a48e6..a05b72a8 100644 --- a/libsaria/library/update.cpp +++ b/libsaria/library/update.cpp @@ -3,9 +3,10 @@ #include #include "library.h" -void LibraryPath::insert_track(TrackTag &tag) +void LibraryPath::insert_track(ino_t &inode, TrackTag &tag) { - file_list.push_back(tag); + if (find_id(inode) == file_list.end()) + file_list.push_back(tag); } void LibraryPath::update() @@ -31,7 +32,7 @@ void ScanTask::tag_file(file filepath) { try { TrackTag tag(dir + "/" + filepath.name, filepath.d_ino); - library->insert_track(tag); + library->insert_track(filepath.d_ino, tag); } catch (string message) { println(message); }