From 37e5c82b8afc2b168620458d9ae6d40a44e071a8 Mon Sep 17 00:00:00 2001 From: Olezhich Date: Mon, 2 Mar 2026 19:27:07 +0300 Subject: [PATCH] fetch by master id function added --- audiotagloader/app.py | 23 +++++++++++++++++++++++ autag | 3 +++ main.py | 3 +++ 3 files changed, 29 insertions(+) diff --git a/audiotagloader/app.py b/audiotagloader/app.py index fdf2f79..29b3828 100644 --- a/audiotagloader/app.py +++ b/audiotagloader/app.py @@ -60,6 +60,19 @@ def _get_albums_by_artist(self, artist: Artist) -> list[Album]: return sorted([i for i in target_albums], key=lambda x: x.year) + @cache + def _get_album_by_id(self, master_id: int) -> Album: + master = self._client.master(master_id) + return Album( + id=master.id, + title=master.title, + year=master.data.get("year", 0), + genres=master.data.get("genre", None), + styles=master.data.get("style", None), + thumb=master.data.get("thumb", ""), + artist="VA", + ) + @cache def _get_cover_image(self, album_id: int) -> Image: master = self._client.master(album_id) @@ -118,3 +131,13 @@ def get_track_tags_by_artist( tracks = self._get_tracklist(current_album.id) return (current_album, image, tracks) + + @track_tags_to_output + def get_track_tags_by_master_id( + self, master_id: int + ) -> tuple[Album, Image, Tracklist]: + current_album = self._get_album_by_id(master_id) + image = self._get_cover_image(current_album.id) + tracks = self._get_tracklist(current_album.id) + + return (current_album, image, tracks) diff --git a/autag b/autag index fbd42f5..12de3ec 100755 --- a/autag +++ b/autag @@ -12,6 +12,9 @@ case "$cmd" in fba) cd $PROJECT poetry run python main.py fba "$1" "$DESTINATION" ;; + fbmi) + cd $PROJECT + poetry run python main.py fbmi "$1" "$DESTINATION" ;; set) cat "$DESTINATION/tags.txt" | "$PROJECT/load_img.sh" "$DESTINATION" > "$DESTINATION/tags.tmp" && mv "$DESTINATION/tags.tmp" "$DESTINATION/tags.txt" "$PROJECT/kid3.sh" "$DESTINATION/tags.txt" diff --git a/main.py b/main.py index 383b15f..be36e19 100644 --- a/main.py +++ b/main.py @@ -12,6 +12,9 @@ if argc == 4 and (sys.argv[1] == "fetch_by_artist" or sys.argv[1] == "fba"): app = audiotagloader.App(Path(sys.argv[3]).resolve()) app.get_track_tags_by_artist(sys.argv[2]) + elif argc == 4 and (sys.argv[1] == "fetch_by_master_id" or sys.argv[1] == "fbmi"): + app = audiotagloader.App(Path(sys.argv[3]).resolve()) + app.get_track_tags_by_master_id(int(sys.argv[2])) elif argc == 2 and (sys.argv[1] == "--help" or sys.argv[1] == "-h"): print("--help, -h: run help") print("fetch_by_artist, fba: load audio tags by artist name and album title")