From af8c030201502a0a0ae28b2702a0bcd40373f546 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Sun, 12 Feb 2023 19:37:01 -0500 Subject: [PATCH] Added a script to convert embedded album art to iPod-ready JPEGs --- lib/__pycache__/flac2pod.cpython-310.pyc | Bin 0 -> 5078 bytes lib/flac2pod-artconvert.py | 40 +++++++++++++++++++++++ lib/flac2pod-flacgain.py | 1 - package.sh | 3 +- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lib/__pycache__/flac2pod.cpython-310.pyc create mode 100755 lib/flac2pod-artconvert.py diff --git a/lib/__pycache__/flac2pod.cpython-310.pyc b/lib/__pycache__/flac2pod.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd1a926d9550bb0519d84b8d300d41a54a254756 GIT binary patch literal 5078 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 literal 0 HcmV?d00001 diff --git a/lib/flac2pod-artconvert.py b/lib/flac2pod-artconvert.py new file mode 100755 index 0000000..737e64f --- /dev/null +++ b/lib/flac2pod-artconvert.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +from argparse import ArgumentParser +from flac2pod import scan_source +from mutagen import mp4 +from mutagen.mp4 import MP4Cover +from os import listdir +from PIL import Image + +if __name__ == "__main__": + parser = ArgumentParser(description='Convert embedded album art in MP4/M4A files to iPod-compatible JPEGs.') + parser.add_argument('source_dir', nargs='+', + help='directory tree containing music files - folder must contain library sorted into artists ' + 'and albums') + args = parser.parse_args() + + if args.source_dir[0].endswith('/'): + source = args.source_dir[0][:-1] + else: + source = args.source_dir[0] + + source_directories = scan_source(source) + + for album in sorted(source_directories[0]): + for song in listdir(album): + audio = mp4.MP4(f"{album}/{song}") + if audio.tags is None: + continue + if "covr" not in audio.tags: + continue + cover = audio.tags["covr"][0] + open("/tmp/cover.png", "wb").write(cover) + image = Image.open("/tmp/cover.png") + image.thumbnail((300, 300)) + image.save("/tmp/cover.jpeg", "JPEG", quality=50) + with open("/tmp/cover.jpeg", "rb") as f: + audio["covr"] = [ + MP4Cover(f.read(), imageformat=MP4Cover.FORMAT_JPEG) + ] + audio.save() diff --git a/lib/flac2pod-flacgain.py b/lib/flac2pod-flacgain.py index 42414d9..4bd3a97 100755 --- a/lib/flac2pod-flacgain.py +++ b/lib/flac2pod-flacgain.py @@ -7,7 +7,6 @@ from os import listdir, system from subprocess import PIPE, run from sys import exit as s_exit -# argument parsing if __name__ == "__main__": parser = ArgumentParser(description='Quickly tag your FLAC library with ReplayGain data using metaflac.') parser.add_argument('source_dir', nargs='+', diff --git a/package.sh b/package.sh index 55d9ec4..551b1f1 100755 --- a/package.sh +++ b/package.sh @@ -19,6 +19,7 @@ echo -e '\npackaging as generic...\n' mkdir -p output/generictemp/usr/{bin,lib/flac2pod} cp -r lib/. output/generictemp/usr/lib/flac2pod/ ln -s /usr/lib/flac2pod/flac2pod.py output/generictemp/usr/bin/flac2pod +ln -s /usr/lib/flac2pod/flac2pod-artconvert.py output/generictemp/usr/bin/flac2pod-artconvert ln -s /usr/lib/flac2pod/flac2pod-flacgain.py output/generictemp/usr/bin/flac2pod-flacgain cp -r share output/generictemp/usr/ tar -C output/generictemp -cvJf output/flac2pod-"$version".tar.xz usr/ @@ -37,7 +38,7 @@ pkgdesc='Converts your FLAC library to be iPod-ready' url='https://github.com/rwinkhart/flac2pod' arch=('any') license=('GPL2') -depends=(ffmpeg flac python python-mutagen screen) +depends=(ffmpeg flac python python-mutagen python-pillow screen) source=(\""$source"\") sha512sums=('"$sha512"')