music-kraken-core/src/url_to_path.py

56 lines
1.4 KiB
Python
Raw Normal View History

import os.path
2022-11-06 22:01:03 +00:00
import logging
UNHIDE_CHAR = ','
def unhide(part: str):
if len(part) == 0:
return ""
if part[0] == ".":
part[0] = UNHIDE_CHAR
return part
class UrlPath:
2022-11-06 22:01:03 +00:00
def __init__(self, database, logger: logging.Logger, genre: str):
self.database = database
self.logger = logger
self.genre = genre
2022-11-06 22:01:03 +00:00
for row in self.database.get_tracks_without_filepath():
2022-10-17 22:27:30 +00:00
file, path = self.get_path_from_row(row)
2022-11-06 22:01:03 +00:00
self.database.set_filepath(row['id'], file, path, genre)
def get_path_from_row(self, row):
"""
genre/artist/song.mp3
:param row:
:return: path:
"""
2022-11-06 22:01:03 +00:00
return os.path.join(self.get_genre(), self.get_artist(row), self.get_album(row),
f"{self.get_song(row)}.mp3"), os.path.join(self.get_genre(), self.get_artist(row),
self.get_album(row))
def escape_part(self, part: str):
return unhide(part.replace("/", " "))
def get_genre(self):
return self.escape_part(self.genre)
2022-10-17 22:27:30 +00:00
def get_album(self, row):
return self.escape_part(row['album'])
def get_artist(self, row):
artists = [artist['name'] for artist in row['artists']]
return self.escape_part(artists[0])
def get_song(self, row):
return self.escape_part(row['title'])
if __name__ == "__main__":
UrlPath("dsbm")