From 8ba7815241466fd8afbd4596c54f1b9469fc529f Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Fri, 22 Apr 2022 12:50:27 -0400 Subject: [PATCH] Add support for skipping conversions on non-FLAC files --- bin/flac2pod | 58 ++++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/bin/flac2pod b/bin/flac2pod index b5b0116..9a587ed 100755 --- a/bin/flac2pod +++ b/bin/flac2pod @@ -3,7 +3,7 @@ # external modules from argparse import ArgumentParser -from mutagen.flac import FLAC +from mutagen.flac import FLAC, FLACNoHeaderError from os import cpu_count, path, walk from pathlib import Path from subprocess import check_output, Popen @@ -61,33 +61,37 @@ def scan_destination_convert(): _i += 1 print(f"\n{_progress}% | \u001b[38;5;0;48;5;15mConverting {_file_s} to {_file_d}...\u001b[0m\n") # get relevant ReplayGain info - _audio = FLAC(f"{_file}.flac") - if args.albumgain: - if _audio.get('REPLAYGAIN_ALBUM_GAIN'): - _rggain = float(_audio.get('REPLAYGAIN_ALBUM_GAIN')[0][:-3]) - elif _audio.get('replaygain_album_gain'): - _rggain = float(_audio.get('replaygain_album_gain')[0][:-3]) + try: + _audio = FLAC(f"{_file}.flac") + if args.albumgain: + if _audio.get('REPLAYGAIN_ALBUM_GAIN'): + _rggain = float(_audio.get('REPLAYGAIN_ALBUM_GAIN')[0][:-3]) + elif _audio.get('replaygain_album_gain'): + _rggain = float(_audio.get('replaygain_album_gain')[0][:-3]) + else: + _rggain = None + if _audio.get('REPLAYGAIN_ALBUM_PEAK'): + _rgpeak = float(_audio.get('REPLAYGAIN_ALBUM_PEAK')[0]) + elif _audio.get('replaygain_album_peak'): + _rgpeak = float(_audio.get('replaygain_album_peak')[0]) + else: + _rgpeak = None else: - _rggain = None - if _audio.get('REPLAYGAIN_ALBUM_PEAK'): - _rgpeak = float(_audio.get('REPLAYGAIN_ALBUM_PEAK')[0]) - elif _audio.get('replaygain_album_peak'): - _rgpeak = float(_audio.get('replaygain_album_peak')[0]) - else: - _rgpeak = None - else: - if _audio.get('REPLAYGAIN_TRACK_GAIN'): - _rggain = float(_audio.get('REPLAYGAIN_TRACK_GAIN')[0][:-3]) - elif _audio.get('replaygain_track_gain'): - _rggain = float(_audio.get('replaygain_track_gain')[0][:-3]) - else: - _rggain = None - if _audio.get('REPLAYGAIN_TRACK_PEAK'): - _rgpeak = float(_audio.get('REPLAYGAIN_TRACK_PEAK')[0]) - elif _audio.get('replaygain_track_peak'): - _rgpeak = float(_audio.get('replaygain_track_peak')[0]) - else: - _rgpeak = None + if _audio.get('REPLAYGAIN_TRACK_GAIN'): + _rggain = float(_audio.get('REPLAYGAIN_TRACK_GAIN')[0][:-3]) + elif _audio.get('replaygain_track_gain'): + _rggain = float(_audio.get('replaygain_track_gain')[0][:-3]) + else: + _rggain = None + if _audio.get('REPLAYGAIN_TRACK_PEAK'): + _rgpeak = float(_audio.get('REPLAYGAIN_TRACK_PEAK')[0]) + elif _audio.get('replaygain_track_peak'): + _rgpeak = float(_audio.get('replaygain_track_peak')[0]) + else: + _rgpeak = None + except FLACNoHeaderError: + print(f"[{_file_s}] Not a FLAC file, skipping...") + _rggain, _rgpeak = None, None # determine ffmpeg arguments if args.bake and _rggain is not None: _bake_args, _flac2pod_rg_tags = '-filter:a "volume=' + str(_rggain) + 'dB"', ''