From 8547112be9e234868311544caaa27f67f5b8e5f9 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Sun, 10 Aug 2025 00:56:11 -0700 Subject: [PATCH] transfer improvements --- .../__pycache__/downloads.cpython-312.pyc | Bin 530639 -> 532477 bytes ui/pages/downloads.py | 65 +++++++++++------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/ui/pages/__pycache__/downloads.cpython-312.pyc b/ui/pages/__pycache__/downloads.cpython-312.pyc index 272c564ca0add2deeb880527c045a0024b63f753..6b70f7279a878a93b424b00741e568eecba45c0e 100644 GIT binary patch delta 8500 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 a@cP+}YXxiJLPF9ujlQMR5P3F4(EkA!8k?^G delta 6566 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 str: @@ -10953,12 +10964,16 @@ class DownloadsPage(QWidget): def _apply_flac_tags(self, audio_file, metadata: dict, file_path: str) -> bool: """Handle FLAC Vorbis comments for lossless files""" try: + print(f"๐ŸŽต Applying FLAC tags with {len(metadata)} metadata fields") + # Basic tags audio_file['TITLE'] = metadata.get('title', '') audio_file['ARTIST'] = metadata.get('artist', '') audio_file['ALBUMARTIST'] = metadata.get('album_artist', '') audio_file['ALBUM'] = metadata.get('album', '') + print(f" - Applied basic tags: Title='{metadata.get('title')}', Artist='{metadata.get('artist')}'") + # Date if metadata.get('date'): audio_file['DATE'] = metadata['date'] @@ -10982,11 +10997,15 @@ class DownloadsPage(QWidget): audio_file['SPOTIFY_ALBUM_ID'] = metadata['spotify_album_id'] + print(f" - Saving FLAC file with enhanced metadata...") audio_file.save() + print(f" - โœ… FLAC tags saved successfully") return True except Exception as e: print(f"โŒ Error applying FLAC tags: {e}") + import traceback + traceback.print_exc() return False def _apply_mp4_tags(self, audio_file, metadata: dict, file_path: str) -> bool: