tonhowtf/omniget · error
Instagram Stories are not supported. Only public posts…
Error message
Instagram Stories are not supported. Only public posts, reels and carousels.
What it means
get_media_info explicitly rejects Instagram story URLs before any network work. is_story_url detects /stories/ path patterns, and when matched, the downloader refuses with a fixed message because stories require authentication and ephemeral API access that this platform implementation does not support.
Solutions
- Don't pass story URLs to this downloader; filter them out in the caller.
- Pre-validate the URL path (reject /stories/) in your own UI before invoking get_media_info.
- For stories support, integrate an authenticated extraction path (e.g. yt-dlp with session cookies) instead of this platform handler.
- Communicate the supported scope (public posts, reels, carousels) to end users.
Example fix
// before
let info = downloader.get_media_info(url).await?;
// after
if url.contains("/stories/") {
anyhow::bail!("Instagram Stories are not supported by this downloader");
}
let info = downloader.get_media_info(url).await?; Defensive patterns
Strategy: validation
Validate before calling
// Rust: reject story URLs before invoking the downloader
fn is_story(url: &str) -> bool {
url::Url::parse(url).ok()
.and_then(|u| u.path().strip_prefix("/stories/").map(|_| true))
.unwrap_or(false)
}
if is_story(url) { /* show 'stories unsupported' message, skip call */ } Try / catch
match downloader.get_media_info(url).await {
Err(e) if e.to_string().contains("Stories are not supported") => {
ui.show_message("Instagram Stories are not supported; paste a post, reel or carousel link.");
}
other => other?,
} Prevention
- Filter /stories/ URLs in your own input validation layer
- Document supported content types (posts, reels, carousels) in the UI
- Normalize share links before dispatching so story redirects are caught early
- Route story URLs to a separate authenticated extractor if stories support is needed
When it happens
Trigger: Calling get_media_info (or the download flow that routes URLs to PlatformDownloader::can_handle) with an Instagram URL containing a story path, e.g. https://www.instagram.com/stories/<user>/<id>/, or via ddinstagram mirrors of story links.
Common situations: User pastes a story link into the app expecting it to behave like a post; share links that redirect to a story; automation feeding arbitrary Instagram URLs without pre-filtering story paths.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Instagram Stories are not supported. Only public posts…
- download falhou: HTTP
- cole um link do calameo.com
- cole um link de docs.google.com (Documentos, Apresentações…
- nao achei os arquivos JSON de seguidores no export. No…
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/4390a16f30c956e9.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/platforms/instagram.rs:676
"instagram"
}
fn can_handle(&self, url: &str) -> bool {
if let Ok(parsed) = url::Url::parse(url) {
if let Some(host) = parsed.host_str() {
let host = host.to_lowercase();
return host == "instagram.com"
|| host.ends_with(".instagram.com")
|| host == "ddinstagram.com"
|| host.ends_with(".ddinstagram.com");
}
}
false
}
async fn get_media_info(&self, url: &str) -> anyhow::Result<MediaInfo> {
if Self::is_story_url(url) {
return Err(anyhow!(
"Instagram Stories are not supported. Only public posts, reels and carousels."
));
}
let post_id = if let Some(share_id) = Self::extract_share_id(url) {
let resolved = self.resolve_share_link(&share_id).await?;
Self::extract_post_id(&resolved).ok_or_else(|| anyhow!("Could not extract post ID"))?
} else {
Self::extract_post_id(url).ok_or_else(|| anyhow!("Could not extract post ID"))?
};
let filename_base = format!("instagram_{}", post_id);
let embed_result = self.request_embed(&post_id).await;
let media = match embed_result {
Ok(data) => Self::extract_media_from_embed(&data),
Err(_embed_err) => match self.request_gql(&post_id).await {
Ok(data) => Self::extract_media_from_gql(&data),View on GitHub (pinned to 8600b91f42)