Add AIFF codec support for conversion - #1006
Open
chuckyutan wants to merge 2 commits into
Open
Conversation
Add an AIFF converter (lossless PCM, pcm_s24be) so downloads can be converted to .aiff via the `[conversion]` codec option or `--codec aiff`. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Conversion runs after tagging the source file, but ffmpeg does not reliably carry metadata into the converted container (AIFF was left completely untagged). Add an AIFF tagging path (ID3 via mutagen) and re-tag the converted file for formats tag_file understands. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
berettavexee
pushed a commit
to berettavexee/streamrip
that referenced
this pull request
Aug 18, 2026
Cherry-picks upstream nathom#1006, adapted to the fork. ffmpeg does not carry every field across a container change: measured on a fully tagged FLAC source, it drops ISRC and lyrics when converting to MP3 or ALAC, and writes no tags at all into AIFF. Track._convert now tags the converted file again. Containers tag_file() cannot write (opus, ogg) are skipped and keep whatever ffmpeg copied over, plus the cover the converter embeds itself via _embed_cover_art. Adapted from upstream: - the list of taggable extensions is exported as TAGGABLE_EXTENSIONS from tagger.py rather than hardcoded in _convert, so it cannot drift from the dispatch in tag_file(); a test asserts the two agree - embed_cover clears existing FLAC pictures before adding: add_picture() appends where ID3.add() and the MP4 "covr" assignment replace, so re-tagging a re-encoded FLAC embedded a second copy of the cover - --codec validation keeps the fork's click.BadParameter - converter.get() also accepts "AIF" Tests: end-to-end ffmpeg round trips (skipped when ffmpeg is absent, as on CI), the codec registry, Container.AIFF, and the extension gating in _convert. Includes regression coverage that opus/ogg keep their cover art. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds AIFF as a conversion target codec.
Currently
[conversion]supports FLAC, ALAC, OPUS, MP3, VORBIS, and AAC. This adds AIFF (lossless PCM,pcm_s24be) so users can have downloads converted to.aiff— useful for DJ software and editing workflows (e.g. Serato, Logic, Pro Tools) that prefer AIFF.Changes
converter.py: newAIFFconverter class (pcm_s24be, containeraiff, lossless) and registered"AIFF"inget()rip/cli.py: allow--codec aiffand update help textconfig.py/config.toml: document AIFF in the codec commentTesting
Verified the underlying ffmpeg conversion produces a valid 24-bit AIFF:
🤖 Generated with Claude Code