feat: Add quality and bitrate params to summary object

This commit is contained in:
Xoconoch
2025-08-20 09:27:36 -05:00
parent fb2e5d0800
commit e4a948cd2a
4 changed files with 146 additions and 4 deletions

View File

@@ -552,6 +552,27 @@ class EASY_DW:
)
summary.final_path = final_path_val
summary.download_quality = download_quality_val
# Compute final quality/bitrate
quality_val = None
bitrate_val = None
if self.__convert_to:
fmt, brp = self._parse_format_string(self.__convert_to)
if fmt:
quality_val = fmt.lower()
if brp:
bitrate_val = brp.lower().replace('kbps', 'k')
else:
qkey = (self.__quality_download or '').upper()
if qkey.startswith('MP3'):
quality_val = 'mp3'
try:
bitrate_val = f"{qkey.split('_')[1]}k"
except Exception:
bitrate_val = None
elif qkey == 'FLAC':
quality_val = 'flac'
summary.quality = quality_val
summary.bitrate = bitrate_val
done_status.summary = summary
callback_obj = trackCallbackObject(
@@ -1329,6 +1350,29 @@ class DW_ALBUM:
total_failed=len(failed_tracks_cb),
service=Service.DEEZER
)
# Compute and attach final media characteristics
quality_val = None
bitrate_val = None
if getattr(self.__preferences, 'convert_to', None):
fmt = getattr(self.__preferences, 'convert_to', None)
if fmt:
quality_val = fmt.lower()
br_raw = getattr(self.__preferences, 'bitrate', None)
if br_raw:
digits = ''.join([c for c in str(br_raw) if c.isdigit()])
bitrate_val = f"{digits}k" if digits else None
else:
qkey = (self.__quality_download or '').upper()
if qkey.startswith('MP3'):
quality_val = 'mp3'
try:
bitrate_val = f"{qkey.split('_')[1]}k"
except Exception:
bitrate_val = None
elif qkey == 'FLAC':
quality_val = 'flac'
summary_obj.quality = quality_val
summary_obj.bitrate = bitrate_val
# Report album completion status
report_album_done(album_obj, summary_obj)
@@ -1452,6 +1496,29 @@ class DW_PLAYLIST:
total_failed=len(failed_tracks_cb),
service=Service.DEEZER
)
# Compute and attach final media characteristics
quality_val = None
bitrate_val = None
if getattr(self.__preferences, 'convert_to', None):
fmt = getattr(self.__preferences, 'convert_to', None)
if fmt:
quality_val = fmt.lower()
br_raw = getattr(self.__preferences, 'bitrate', None)
if br_raw:
digits = ''.join([c for c in str(br_raw) if c.isdigit()])
bitrate_val = f"{digits}k" if digits else None
else:
qkey = (self.__quality_download or '').upper()
if qkey.startswith('MP3'):
quality_val = 'mp3'
try:
bitrate_val = f"{qkey.split('_')[1]}k"
except Exception:
bitrate_val = None
elif qkey == 'FLAC':
quality_val = 'flac'
summary_obj.quality = quality_val
summary_obj.bitrate = bitrate_val
# Attach m3u path to summary
summary_obj.m3u_path = m3u_path

View File

@@ -75,6 +75,9 @@ class summaryObject:
m3u_path: Optional[str] = None
final_path: Optional[str] = None
download_quality: Optional[str] = None
# Final media characteristics
quality: Optional[str] = None # e.g., "mp3", "flac", "ogg"
bitrate: Optional[str] = None # e.g., "320k"
@dataclass

View File

@@ -718,6 +718,28 @@ class EASY_DW:
}
summary_obj.final_path = final_path_val
summary_obj.download_quality = sp_quality_map_single.get(quality_key_single, 'OGG')
# Compute final quality/bitrate
quality_val = None
bitrate_val = None
if self.__convert_to:
# When converting, trust convert_to + bitrate
fmt = self.__convert_to
if fmt:
quality_val = fmt.lower()
br_raw = self.__bitrate
if br_raw:
digits = ''.join([c for c in str(br_raw) if c.isdigit()])
bitrate_val = f"{digits}k" if digits else None
else:
quality_val = 'ogg'
if quality_key_single == 'NORMAL':
bitrate_val = '96k'
elif quality_key_single == 'HIGH':
bitrate_val = '160k'
elif quality_key_single == 'VERY_HIGH':
bitrate_val = '320k'
summary_obj.quality = quality_val
summary_obj.bitrate = bitrate_val
# Report track done status
# Compute final path and quality label
@@ -1123,6 +1145,27 @@ class DW_ALBUM:
total_failed=len(failed_tracks),
service=Service.SPOTIFY
)
# Compute final quality/bitrate for album summary
quality_val = None
bitrate_val = None
conv = getattr(self.__preferences, 'convert_to', None)
if conv:
quality_val = conv.lower()
br_raw = getattr(self.__preferences, 'bitrate', None)
if br_raw:
digits = ''.join([c for c in str(br_raw) if c.isdigit()])
bitrate_val = f"{digits}k" if digits else None
else:
quality_val = 'ogg'
qkey = (getattr(self.__preferences, 'quality_download', None) or 'NORMAL').upper()
if qkey == 'NORMAL':
bitrate_val = '96k'
elif qkey == 'HIGH':
bitrate_val = '160k'
elif qkey == 'VERY_HIGH':
bitrate_val = '320k'
summary_obj.quality = quality_val
summary_obj.bitrate = bitrate_val
report_album_done(album_obj, summary_obj)
@@ -1256,6 +1299,27 @@ class DW_PLAYLIST:
total_failed=len(failed_tracks_cb),
service=Service.SPOTIFY
)
# Compute final quality/bitrate for playlist summary
quality_val = None
bitrate_val = None
conv = getattr(self.__preferences, 'convert_to', None)
if conv:
quality_val = conv.lower()
br_raw = getattr(self.__preferences, 'bitrate', None)
if br_raw:
digits = ''.join([c for c in str(br_raw) if c.isdigit()])
bitrate_val = f"{digits}k" if digits else None
else:
quality_val = 'ogg'
qkey = (getattr(self.__preferences, 'quality_download', None) or 'NORMAL').upper()
if qkey == 'NORMAL':
bitrate_val = '96k'
elif qkey == 'HIGH':
bitrate_val = '160k'
elif qkey == 'VERY_HIGH':
bitrate_val = '320k'
summary_obj.quality = quality_val
summary_obj.bitrate = bitrate_val
# Include m3u path in summary and callback
report_playlist_done(playlist_obj_for_cb, summary_obj, m3u_path=m3u_path)