Skip to content

ID3 metadata extraction - #1

Open
probonopd wants to merge 1 commit into
gnustep:mainfrom
probonopd:feat/id3-metadata-extraction
Open

ID3 metadata extraction#1
probonopd wants to merge 1 commit into
gnustep:mainfrom
probonopd:feat/id3-metadata-extraction

Conversation

@probonopd

@probonopd probonopd commented Jun 28, 2026

Copy link
Copy Markdown

Extract song title, artist, album, composer, genre, track number, date, encoder, and cover art from media files via FFmpeg's AVDictionary API.

  • Add AVMetadataCommonKeyComposer, Genre, TrackNumber, Artwork, CreationDate, Software constants and AVMetadataKeySpaceCommon/ID3
  • Map FFmpeg metadata keys to AVMetadataCommonKey constants where known
  • Extract attached pictures (album art) via AV_DISPOSITION_ATTACHED_PIC
  • Document usage examples in README

Tested with Player.app, a media player application for the Gershwin Desktop. With this patch applied, it can display metadata including the cover correctly for MP3 files.

image

cc @pkgdemon

Extract song title, artist, album, composer, genre, track number, date,
encoder, and cover art from media files via FFmpeg's AVDictionary API.

- Add AVMetadataCommonKeyComposer, Genre, TrackNumber, Artwork,
  CreationDate, Software constants and AVMetadataKeySpaceCommon/ID3
- Map FFmpeg metadata keys to AVMetadataCommonKey constants where known
- Extract attached pictures (album art) via AV_DISPOSITION_ATTACHED_PIC
- Document usage examples in README
probonopd added a commit to gershwin-desktop/gershwin-developer that referenced this pull request Jun 28, 2026
TODO: Change back to upstream once gnustep/libs-av#1 is merged
probonopd added a commit to gershwin-desktop/gershwin-components that referenced this pull request Jun 28, 2026
… persist repeat/shuffle

- Reduce default window height from 420 to 370 so the window fits content better
- Add DEFAULT_WINDOW_WIDTH/HEIGHT constants to centralize sizing
- Fix COVER_AREA_FRACTION to 0.5 (was 0.55 but layout used 0.50)
- Use AppearanceMetrics constants (METRICS_SPACE_*) for vertical gaps instead of
  hardcoded values (6, 8px)
- Use METRICS_BUTTON_HEIGHT for bottom row buttons (20px instead of 22px)
- Use METRICS_WIN_MIN_WIDTH (500) for minimum window width
- Persist repeat/shuffle settings via NSUserDefaults
- Add details label for genre/composer/track metadata display
- Use AVMetadataCommonKeyArtwork constant instead of literal string

Reference: gnustep/libs-av#1
@pkgdemon

Copy link
Copy Markdown

It looks like this repo would be be maintained by @gcasa to me @probonopd I would say something in the mailing list or next GNUstep meeting if he doesn't seen it sooner after this ping @probonopd.

@probonopd

Copy link
Copy Markdown
Author

@gcasa what do you think about this? I notice you added stubs; does this mean it needs to be implemented differently?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants