From a4524d73842e83bcc925baecb7fd8f14881e08c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D1=83=D1=80=D1=83=D0=BF=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F=20=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Sat, 3 Jan 2026 19:54:44 +0300 Subject: [PATCH] tmp --- DataBase.py | 7 ++++--- LinkerPatternGenerator.py | 4 ++-- LocalLibraryIndexer.py | 23 +++++++++++++++-------- SpotifyAuthenticator.py | 4 ++-- main.py | 9 ++++++++- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/DataBase.py b/DataBase.py index 3132b7b..c0f230b 100644 --- a/DataBase.py +++ b/DataBase.py @@ -18,10 +18,11 @@ def get_data(name): data = json.load(file) return data except FileNotFoundError: - return f"File {name}.json not found." + print(f"File {name}.json not found.") + return {} except json.JSONDecodeError: - return f"Error decoding JSON from {name}.json." - + print(f"Error decoding JSON from {name}.json.") + return {} def save_data(data, name): def remove_available_markets(obj): diff --git a/LinkerPatternGenerator.py b/LinkerPatternGenerator.py index 11fdf4e..2f6eba2 100644 --- a/LinkerPatternGenerator.py +++ b/LinkerPatternGenerator.py @@ -1,7 +1,7 @@ from DataBase import * from SpotifyWebAPI import find_song, update_access_token -from fuzzywuzzy import fuzz +from rapidfuzz import fuzz from tqdm import tqdm @@ -99,7 +99,7 @@ def fuzzy_tag_pattern_generator(): album_ratio = fuzz.token_set_ratio(first.album, second.album) / 100 return title_ratio, artist_ratio, album_ratio - with tqdm(total=len(local_library), desc='Searching local songs on spotify') as pbar: + with tqdm(total=len(local_library), desc='fuzzy_tag_pattern_generator') as pbar: for local_track_id, local_track in local_library.items(): mapping = mappings.get(local_track_id, {"score": 1.0, "items": []}) ratios = [] diff --git a/LocalLibraryIndexer.py b/LocalLibraryIndexer.py index 2cc220b..eecdd58 100644 --- a/LocalLibraryIndexer.py +++ b/LocalLibraryIndexer.py @@ -46,13 +46,19 @@ def update_local_library(root_dir): abs_path = os.path.join(root_dir, track['path']) match track['type']: case ".mp3": - tag = eyed3.load(abs_path).tag - if not tag: - print(f"Invalid mp3 header {abs_path}") + mp3track = eyed3.load(abs_path) + if not mp3track: + print(f"Failed to load mp3 {abs_path} using just name of the file as track name") + track['name'] = track['path'] else: - track['artist'] = tag.artist - track['name'] = tag.title - track['album'] = tag.album + tag = mp3track.tag + if not tag: + print(f"Invalid mp3 header {abs_path} using just name of the file as track name") + track['name'] = track['path'] + else: + track['artist'] = tag.artist + track['name'] = tag.title + track['album'] = tag.album case ".flac": try: @@ -64,10 +70,11 @@ def update_local_library(root_dir): if 'album' in metadata: track['album'] = " ".join(metadata['album']) except mutagen.MutagenError: - print(f"Invalid flac header {abs_path}") + print(f"Invalid flac header {abs_path} using just name of the file as track name") + track['name'] = track['path'] save_data(new_library, "local_library") if __name__ == "__main__": - update_local_library("/mnt/main/data/music/raw") + update_local_library("/home/auser/Music/") diff --git a/SpotifyAuthenticator.py b/SpotifyAuthenticator.py index 64a4b2c..86705d0 100644 --- a/SpotifyAuthenticator.py +++ b/SpotifyAuthenticator.py @@ -34,7 +34,7 @@ def retrieve_web_api_token(authorization_code): "client_secret": client_secret, "client_id": client_id, "code": authorization_code, - 'redirect_uri': 'http://localhost:8888', + 'redirect_uri': 'http://127.0.0.1:8888', } print("\nAuthenticating WEB API\n") @@ -95,7 +95,7 @@ def open_authenticate_page(): params = { 'client_id': client_id, 'response_type': 'code', - 'redirect_uri': 'http://localhost:8888', + 'redirect_uri': 'http://127.0.0.1:8888', "scope": "user-top-read playlist-read-collaborative user-read-email user-library-read user-read-private playlist-read-private", } diff --git a/main.py b/main.py index 204c0ab..9709e93 100644 --- a/main.py +++ b/main.py @@ -129,6 +129,10 @@ class Interpreter(cmd.Cmd): print(f"2 - fuzzy") def do_link_pattern(self, arg): + if not len(arg.split()): + print("expected name of the pattern") + return + """prints available linking patterns""" pattern_id = int(arg.split()[0]) print_link_stats(link_patterns[pattern_id]) @@ -187,4 +191,7 @@ class Interpreter(cmd.Cmd): if __name__ == '__main__': - Interpreter().cmdloop() + try: + Interpreter().cmdloop() + except KeyboardInterrupt as kb: + print("process terminated") \ No newline at end of file