Shows destinations

This commit is contained in:
2026-09-07 17:26:07 -06:00
parent fad252a099
commit 66144e92d4
2 changed files with 64 additions and 8 deletions
+29 -7
View File
@@ -15,7 +15,7 @@ import mutagen
from mutagen.easyid3 import EasyID3
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC
from flask import Flask, render_template, request, jsonify
from flask import Flask, render_template, request, jsonify, send_file
MUSIC_FOLDER = "Music"
@@ -33,6 +33,7 @@ class ReleaseInfo:
class ReleaseStatus:
info: ReleaseInfo | None
status: str
destinations: set[str]
class RipError(Exception):
@@ -178,7 +179,9 @@ def find_tmp_path() -> str:
return f"{project_root_path}/tmp"
def sort_into_music(path: str, info: ReleaseInfo) -> None:
def sort_into_music(path: str, info: ReleaseInfo) -> set[str]:
destinations: set[str] = set()
try:
for file_name in os.listdir(path):
if file_name == "cover.jpg":
@@ -218,11 +221,15 @@ def sort_into_music(path: str, info: ReleaseInfo) -> None:
source_file_path_cover = os.path.join(path, "cover.jpg")
shutil.copy(source_file_path_cover, release_path)
destinations.add(release_path)
except Exception:
raise RipError("Filesystem error")
return destinations
def rip_worker(rip_queue: list[str], status_callback: Callable[[ReleaseInfo | str, bool],]):
def rip_worker(rip_queue: list[str], status_callback: Callable[[ReleaseInfo | str | set[str], bool],]):
tmp_path = find_tmp_path()
while True:
@@ -259,7 +266,8 @@ def rip_worker(rip_queue: list[str], status_callback: Callable[[ReleaseInfo | st
raise RipError("No content was downloaded")
status_callback("Sorting content", False)
sort_into_music(tmp_path, info)
destinations = sort_into_music(tmp_path, info)
status_callback(destinations, False)
except RipError as e:
status_callback(e.msg, True)
@@ -278,10 +286,12 @@ if __name__ == "__main__":
current_release_info: ReleaseInfo | None = None
current_release_status_message: str = ""
current_release_destinations: set[str] = set()
def get_current_release_status(x: ReleaseInfo | str, finished: bool):
def get_current_release_status(x: ReleaseInfo | str | set[str], finished: bool):
global current_release_info
global current_release_status_message
global current_release_destinations
global finished_queue
if type(x) is ReleaseInfo:
@@ -290,13 +300,19 @@ if __name__ == "__main__":
elif type(x) is str:
current_release_status_message = x
elif type(x) is set:
current_release_destinations = x.copy()
if finished:
if current_release_info is None:
current_release_info = ReleaseInfo("Unknown", "Unknown", "url", False, False)
finished_queue.append(ReleaseStatus(current_release_info, current_release_status_message))
finished_queue.append(
ReleaseStatus(current_release_info, current_release_status_message, current_release_destinations.copy())
)
current_release_info = None
current_release_status_message = "Waiting"
current_release_destinations = set()
if len(finished_queue) > 30:
finished_queue.pop(0)
@@ -325,7 +341,13 @@ if __name__ == "__main__":
continue
data["finishedQueue"].append(
{"artist": q.info.artist, "title": q.info.title, "status": q.status, "art_url": q.info.art_url}
{
"artist": q.info.artist,
"title": q.info.title,
"status": q.status,
"art_url": q.info.art_url,
"destinations": list(q.destinations),
}
)
if current_release_info is not None: