From 51238b191bb59c3913a372b22758f3297e3fb848 Mon Sep 17 00:00:00 2001 From: Terry Geng Date: Sat, 21 Mar 2020 00:37:12 +0800 Subject: [PATCH] feat: added special tag 'recent added' --- database.py | 20 ++++++++++++++++++-- media/cache.py | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/database.py b/database.py index 7f3c50a..4df3ee1 100644 --- a/database.py +++ b/database.py @@ -246,6 +246,7 @@ class MusicDatabase: self.db_path = db_path self.db_version_check_and_create() + self.manage_special_tags() def has_table(self, table): conn = sqlite3.connect(self.db_path) @@ -298,8 +299,6 @@ class MusicDatabase: else: self.create_table() - - def insert_music(self, music_dict): conn = sqlite3.connect(self.db_path) cursor = conn.cursor() @@ -373,6 +372,15 @@ class MusicDatabase: return self._result_to_dict(results) + def _query_music_by_plain_sql_cond(self, sql_cond): + conn = sqlite3.connect(self.db_path) + cursor = conn.cursor() + results = cursor.execute("SELECT id, type, title, metadata, tags, path, keywords FROM music " + "WHERE %s" % sql_cond).fetchall() + conn.close() + + return self._result_to_dict(results) + def query_music_by_id(self, _id): results = self.query_music(Condition().and_equal("id", _id)) if results: @@ -396,6 +404,14 @@ class MusicDatabase: return self.query_music(condition) + def manage_special_tags(self): + for tagged_recent in self.query_music_by_tags(['recent added']): + tagged_recent.tags.remove('recent added') + recent_items = self._query_music_by_plain_sql_cond("id != 'info' AND create_at > date('now', '-1 day')") + for recent_item in recent_items: + recent_item['tags'].append('recent added') + self.insert_music(recent_item) + def query_tags(self, condition): # TODO: Can we keep a index of tags? conn = sqlite3.connect(self.db_path) diff --git a/media/cache.py b/media/cache.py index 5297925..4189e59 100644 --- a/media/cache.py +++ b/media/cache.py @@ -83,6 +83,7 @@ class MusicCache(dict): def save(self, id): self.log.debug("library: music save into database: %s" % self[id].format_debug_string()) self.db.insert_music(self[id].to_dict()) + self.db.manage_special_tags() def free_and_delete(self, id): item = self.get_item_by_id(None, id)