=== modified file '__init__.py' --- __init__.py 2010-05-11 18:58:21 +0000 +++ __init__.py 2010-05-13 10:57:21 +0000 @@ -236,28 +236,31 @@ orig_library_path = urllib.unquote(self.db.entry_get(entry_to_add, rhythmdb.PROP_LOCATION)[7:]) symlink_file_rb = "file://%s" % urllib.quote(symlink_file) - new_entry = self.db.entry_new(self.entry_type, symlink_file_rb ) - - # Now create the actual symlink in the file system - if not os.path.isdir(os.path.dirname(symlink_file)): - os.makedirs(os.path.dirname(symlink_file)) - if not os.path.islink(symlink_file): - if not os.path.exists(symlink_file): - print "Attempting to symlink %s to %s" % (symlink_file, orig_library_path) - os.symlink(orig_library_path, symlink_file) - else: - os.remove(symlink_file) - print "Attempting to symlink %s to %s" % (symlink_file, orig_library_path) - os.symlink(orig_library_path, symlink_file) - self.symlinks[symlink_file_rb] = self.db.entry_get(entry_to_add, rhythmdb.PROP_LOCATION) + # Add the entry only if it does not exist already in db + existing_entry = self.db.entry_lookup_by_location(symlink_file_rb) + if existing_entry == None: + # Add entry to the db + new_entry = self.db.entry_new(self.entry_type, symlink_file_rb) + # Now create the actual symlink in the file system + if not os.path.isdir(os.path.dirname(symlink_file)): + os.makedirs(os.path.dirname(symlink_file)) + if not os.path.islink(symlink_file): + if not os.path.exists(symlink_file): + print "Attempting to symlink %s to %s" % (symlink_file, orig_library_path) + os.symlink(orig_library_path, symlink_file) + else: + os.remove(symlink_file) + print "Attempting to symlink %s to %s" % (symlink_file, orig_library_path) + os.symlink(orig_library_path, symlink_file) + self.symlinks[symlink_file_rb] = self.db.entry_get(entry_to_add, rhythmdb.PROP_LOCATION) - self.db.set(new_entry, rhythmdb.PROP_ARTIST, self.db.entry_get(entry_to_add, rhythmdb.PROP_ARTIST)) - self.db.set(new_entry, rhythmdb.PROP_TITLE, self.db.entry_get(entry_to_add, rhythmdb.PROP_TITLE)) - self.db.set(new_entry, rhythmdb.PROP_ALBUM, self.db.entry_get(entry_to_add, rhythmdb.PROP_ALBUM)) - self.db.set(new_entry, rhythmdb.PROP_GENRE, self.db.entry_get(entry_to_add, rhythmdb.PROP_GENRE)) - self.db.set(new_entry, rhythmdb.PROP_TRACK_NUMBER, self.db.entry_get(entry_to_add, rhythmdb.PROP_TRACK_NUMBER)) - self.db.set(new_entry, rhythmdb.PROP_DURATION, self.db.entry_get(entry_to_add, rhythmdb.PROP_DURATION)) - self.db.commit() + self.db.set(new_entry, rhythmdb.PROP_ARTIST, self.db.entry_get(entry_to_add, rhythmdb.PROP_ARTIST)) + self.db.set(new_entry, rhythmdb.PROP_TITLE, self.db.entry_get(entry_to_add, rhythmdb.PROP_TITLE)) + self.db.set(new_entry, rhythmdb.PROP_ALBUM, self.db.entry_get(entry_to_add, rhythmdb.PROP_ALBUM)) + self.db.set(new_entry, rhythmdb.PROP_GENRE, self.db.entry_get(entry_to_add, rhythmdb.PROP_GENRE)) + self.db.set(new_entry, rhythmdb.PROP_TRACK_NUMBER, self.db.entry_get(entry_to_add, rhythmdb.PROP_TRACK_NUMBER)) + self.db.set(new_entry, rhythmdb.PROP_DURATION, self.db.entry_get(entry_to_add, rhythmdb.PROP_DURATION)) + self.db.commit() """ Takes 2 duplicates of each other as arguments, returns the one with lower quality / unknown album (-> the one that should be deleted)