feat: optimized autoplay with Lartz

This commit is contained in:
Terry Geng
2020-03-08 21:25:30 +08:00
parent e1a00bf236
commit 22ba308b14
6 changed files with 60 additions and 76 deletions

View File

@ -217,27 +217,15 @@ class MusicDatabase:
"WHERE %s" % condition_str, filler).fetchall()
conn.close()
if len(results) > 0:
music_dicts = []
for result in results:
music_dict = json.loads(result[3])
music_dict['type'] = result[1]
music_dict['title'] = result[2]
music_dict['tags'] = result[4].strip(",").split(",")
music_dict['id'] = result[0]
music_dicts.append(music_dict)
return music_dicts
else:
return None
return self._result_to_dict(results)
def query_music_by_keywords(self, keywords):
condition = []
filler = []
for keyword in keywords:
condition.append('title LIKE ?')
filler.append("%{:s}%".format(keyword))
condition.append('LOWER(title) LIKE ?')
filler.append("%{:s}%".format(keyword.lower()))
condition_str = " AND ".join(condition)
@ -248,30 +236,15 @@ class MusicDatabase:
"WHERE %s" % condition_str, filler).fetchall()
conn.close()
if len(results) > 0:
music_dicts = []
for result in results:
music_dict = json.loads(result[3])
music_dict['type'] = result[1]
music_dict['title'] = result[2]
music_dict['id'] = result[0]
music_dict['tags'] = result[4].strip(",").split(",")
if not music_dict['tags'][0]:
music_dict['tags'] = []
music_dicts.append(music_dict)
return music_dicts
else:
return None
return self._result_to_dict(results)
def query_music_by_tags(self, tags):
condition = []
filler = []
for tag in tags:
condition.append('tags LIKE ?')
filler.append("%{:s},%".format(tag))
condition.append('LOWER(tags) LIKE ?')
filler.append("%{:s},%".format(tag.lower()))
condition_str = " AND ".join(condition)
@ -282,22 +255,7 @@ class MusicDatabase:
"WHERE %s" % condition_str, filler).fetchall()
conn.close()
if len(results) > 0:
music_dicts = []
for result in results:
music_dict = json.loads(result[3])
music_dict['type'] = result[1]
music_dict['title'] = result[2]
music_dict['id'] = result[0]
music_dict['tags'] = result[4].strip(",").split(",")
if not music_dict['tags'][0]:
music_dict['tags'] = []
music_dicts.append(music_dict)
return music_dicts
else:
return None
return self._result_to_dict(results)
def query_tags_by_id(self, id):
conn = sqlite3.connect(self.db_path)
@ -313,6 +271,34 @@ class MusicDatabase:
else:
return None
def query_random_music(self, count):
conn = sqlite3.connect(self.db_path)
cursor = conn.cursor()
results = cursor.execute("SELECT id, type, title, metadata, tags FROM music "
"WHERE id IN (SELECT id FROM music ORDER BY RANDOM() LIMIT ?)", (count,)).fetchall()
conn.close()
return self._result_to_dict(results)
def _result_to_dict(self, results):
if len(results) > 0:
music_dicts = []
for result in results:
music_dict = json.loads(result[3])
music_dict['type'] = result[1]
music_dict['title'] = result[2]
music_dict['id'] = result[0]
music_dict['tags'] = result[4].strip(",").split(",")
if not music_dict['tags'][0]:
music_dict['tags'] = []
music_dicts.append(music_dict)
return music_dicts
else:
return None
def delete_music(self, **kwargs):
condition = []
filler = []