added couple functions to fetch data from database
This commit is contained in:
parent
2d6061dc04
commit
0baca19e02
@ -13,7 +13,8 @@ def get_temp_dir():
|
|||||||
return temp_dir
|
return temp_dir
|
||||||
|
|
||||||
|
|
||||||
DATABASE_STRUCTURE_FILE = "database_structure.sql"
|
# DATABASE_STRUCTURE_FILE = "database_structure.sql"
|
||||||
|
DATABASE_STRUCTURE_FILE = "src/metadata/database_structure.sql"
|
||||||
TEMP_DIR = get_temp_dir()
|
TEMP_DIR = get_temp_dir()
|
||||||
DATABASE_FILE = "metadata.db"
|
DATABASE_FILE = "metadata.db"
|
||||||
db_path = os.path.join(TEMP_DIR, DATABASE_FILE)
|
db_path = os.path.join(TEMP_DIR, DATABASE_FILE)
|
||||||
@ -124,9 +125,14 @@ def add_track(
|
|||||||
cursor.execute(query, values)
|
cursor.execute(query, values)
|
||||||
connection.commit()
|
connection.commit()
|
||||||
|
|
||||||
|
def get_custom_track_querry(custom_where: list) -> str:
|
||||||
|
where_args = [
|
||||||
|
"track.release_id == release_.id",
|
||||||
|
"release_group.id == release_.release_group_id"
|
||||||
|
]
|
||||||
|
where_args.extend(custom_where)
|
||||||
|
|
||||||
def get_track_metadata(musicbrainz_releasetrackid: str):
|
where_arg = " AND ".join(where_args)
|
||||||
# this would be vulnerable if musicbrainz_releasetrackid would be user input
|
|
||||||
query = f"""
|
query = f"""
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
track.id as musicbrainz_releasetrackid,
|
track.id as musicbrainz_releasetrackid,
|
||||||
@ -149,21 +155,36 @@ SELECT DISTINCT
|
|||||||
release_group.album_artist_id as album_artist_id
|
release_group.album_artist_id as album_artist_id
|
||||||
FROM track, release_, release_group, artist
|
FROM track, release_, release_group, artist
|
||||||
WHERE
|
WHERE
|
||||||
track.id == "{musicbrainz_releasetrackid}" AND
|
{where_arg};
|
||||||
track.release_id == release_.id AND
|
|
||||||
release_group.id == release_.release_group_id;
|
|
||||||
"""
|
"""
|
||||||
|
return query
|
||||||
|
|
||||||
resulting_tracks = list(cursor.execute(query))
|
def get_custom_track(custom_where: list):
|
||||||
|
query = get_custom_track_querry(custom_where=custom_where)
|
||||||
|
return [dict(i) for i in cursor.execute(query)]
|
||||||
|
|
||||||
|
def get_track_metadata(musicbrainz_releasetrackid: str):
|
||||||
|
# this would be vulnerable if musicbrainz_releasetrackid would be user input
|
||||||
|
resulting_tracks = get_custom_track([f'track.id == "{musicbrainz_releasetrackid}"'])
|
||||||
if len(resulting_tracks) != 1:
|
if len(resulting_tracks) != 1:
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
return dict(resulting_tracks[0])
|
return dict(resulting_tracks[0])
|
||||||
|
|
||||||
|
def get_tracks_to_download():
|
||||||
|
return get_custom_track(["track.downloaded == 0"])
|
||||||
|
|
||||||
|
def get_tracks_without_isrc():
|
||||||
|
return get_custom_track(["track.isrc IS NULL"])
|
||||||
|
|
||||||
init_db(cursor=cursor, connection=connection, reset_anyways=False)
|
init_db(cursor=cursor, connection=connection, reset_anyways=False)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
||||||
print(get_track_metadata("a85d5ed5-20e5-4f95-8034-d204d81a36dd"))
|
# get_track(["track.downloaded == 0", "track.isrc IS NOT NULL"])
|
||||||
|
#
|
||||||
|
for track in get_tracks_without_isrc():
|
||||||
|
print(track['track'])
|
||||||
|
|
||||||
|
#print(get_track_metadata("a85d5ed5-20e5-4f95-8034-d204d81a36dd"))
|
||||||
|
@ -43,8 +43,11 @@ CREATE TABLE release_ (
|
|||||||
DROP TABLE IF EXISTS track;
|
DROP TABLE IF EXISTS track;
|
||||||
CREATE TABLE track (
|
CREATE TABLE track (
|
||||||
id TEXT PRIMARY KEY NOT NULL,
|
id TEXT PRIMARY KEY NOT NULL,
|
||||||
|
downloaded BOOLEAN NOT NULL DEFAULT 0,
|
||||||
release_id TEXT NOT NULL,
|
release_id TEXT NOT NULL,
|
||||||
track TEXT,
|
track TEXT,
|
||||||
isrc TEXT
|
isrc TEXT,
|
||||||
|
filepath TEXT,
|
||||||
|
url TEXT,
|
||||||
|
src TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user