Skip to content

fix(instagram): download Reel video instead of cover image - #282

Open
bachjessen wants to merge 1 commit into
tonhowtf:mainfrom
bachjessen:fix/instagram-reel-thumbnail
Open

fix(instagram): download Reel video instead of cover image#282
bachjessen wants to merge 1 commit into
tonhowtf:mainfrom
bachjessen:fix/instagram-reel-thumbnail

Conversation

@bachjessen

@bachjessen bachjessen commented Aug 4, 2026

Copy link
Copy Markdown

Summary

Instagram Reel embed metadata can expose only display_url, which is the Reel cover image rather than the video. OmniGet previously treated that URL as a photo and reported a successful video download while saving a JPG.

This change detects /reel/ and /reels/ URLs and falls back to yt-dlp when embed extraction returns a single non-video item.

Reproduction

Test URL:

https://www.instagram.com/reel/Dbi_MeVOphM/

Before this change, OmniGet saved:

instagram_Dbi_MeVOphM.jpg

The history database recorded:

success = 1
error = NULL
kind = "video"

Running OmniGet's bundled yt-dlp directly downloaded the actual 1080x1920 video successfully.

Result

After this change, OmniGet logs:

[instagram] Reel embed returned only a display image; falling back to yt-dlp

OmniGet then downloads the actual Reel as an MP4 instead of saving the cover image as a JPG.

For the tested Reel, yt-dlp selected Instagram's highest available video stream:

Video: VP9, 1080x1920, 23.98 fps
Audio: AAC, 44.1 kHz, stereo
Duration: 10.93 seconds

The resulting MP4 contains VP9 video and AAC audio. QuickTime may not support VP9 playback on every Mac, but codec compatibility is separate from this pull request. This change fixes the original issue where OmniGet downloaded only the JPG cover image.

Tests

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets
    • Passed with existing project warnings
  • cargo test --workspace
    • 350 tests passed
    • 0 failed
  • pnpm check
    • 0 errors
    • 107 existing warnings
  • End-to-end macOS test with the public Instagram Reel above
    • Before: saved the cover image as a JPG
    • After: downloaded the actual 1080x1920 MP4
    • Video codec: VP9
    • Audio codec: AAC
    • Duration: 10.93 seconds

Scope

Regular /p/ Instagram posts are unaffected. The fallback applies only to /reel/ and /reels/ URLs when embed extraction returns a single non-video item.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant