feat: extract comprehensive file metadata and serve embedded album art #78

Merged
joezombie merged 2 commits from feat/extended-episode-metadata into main 2026-02-15 23:40:03 +00:00
joezombie commented 2026-02-15 15:33:48 +00:00 (Migrated from github.com)

Summary

  • Extract 8 additional ID3 tag fields from audio files via TagLib: artist, album, genre, year, track number, bitrate, subtitle, and embedded art detection
  • Add GET /feed/{feedName}/artwork/{filePath} endpoint to serve embedded album art from MP3 files with 24-hour response caching
  • RSS feed falls back to the artwork endpoint for <itunes:image> when no YouTube thumbnail exists but the file has embedded art; also adds per-item <itunes:author> and <itunes:subtitle> when available
  • Display new metadata fields in the episode details dialog (artist, album, genre, year, track #, bitrate, subtitle)
  • Includes EF Core migration adding 8 new columns to the episodes table
  • Backfill logic extended to populate new fields for existing episodes on next sync

Test plan

  • dotnet build compiles with 0 warnings, 0 errors
  • dotnet test — all 176 tests pass (6 new tests added)
  • Add an MP3 with embedded album art to a feed directory, trigger sync, verify new fields populated in episode details dialog
  • Verify GET /feed/{name}/artwork/{file} returns the embedded image
  • Verify RSS feed has <itunes:image> pointing to artwork endpoint for episodes with embedded art but no YouTube thumbnail
  • Verify RSS feed includes <itunes:author> and <itunes:subtitle> when data exists

🤖 Generated with Claude Code

## Summary - Extract 8 additional ID3 tag fields from audio files via TagLib: artist, album, genre, year, track number, bitrate, subtitle, and embedded art detection - Add `GET /feed/{feedName}/artwork/{filePath}` endpoint to serve embedded album art from MP3 files with 24-hour response caching - RSS feed falls back to the artwork endpoint for `<itunes:image>` when no YouTube thumbnail exists but the file has embedded art; also adds per-item `<itunes:author>` and `<itunes:subtitle>` when available - Display new metadata fields in the episode details dialog (artist, album, genre, year, track #, bitrate, subtitle) - Includes EF Core migration adding 8 new columns to the episodes table - Backfill logic extended to populate new fields for existing episodes on next sync ## Test plan - [x] `dotnet build` compiles with 0 warnings, 0 errors - [x] `dotnet test` — all 176 tests pass (6 new tests added) - [ ] Add an MP3 with embedded album art to a feed directory, trigger sync, verify new fields populated in episode details dialog - [ ] Verify `GET /feed/{name}/artwork/{file}` returns the embedded image - [ ] Verify RSS feed has `<itunes:image>` pointing to artwork endpoint for episodes with embedded art but no YouTube thumbnail - [ ] Verify RSS feed includes `<itunes:author>` and `<itunes:subtitle>` when data exists 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.