tonhowtf/omniget · error · anyhow::Error
Post not available; graphql=
Error message
Post not available; graphql='{}'; syndication='{}'; html='{}' What it means
This is the terminal aggregate error of TwitterDownloader::native_get_media_info. After all three fetch strategies fail (the GraphQL API, the syndication endpoint, and the HTML fallback), the error bundles all three failure messages into one anyhow! error. It means the tweet's media could not be retrieved through any available channel.
Solutions
- Check the three embedded sub-errors (graphql=..., syndication=..., html=...) to identify the root cause — usually all three fail for the same reason.
- Ensure a valid auth cookie is available: auth_cookie_string() returned None or an expired cookie, so re-authenticate or refresh cookies.txt.
- Verify the tweet URL is a valid, public, non-deleted tweet that actually contains media.
- Update the app/extraction logic if X changed its HTML or GraphQL responses.
- Retry later on transient network failures, or use a fallback extractor such as yt-dlp.
Example fix
// before: letting all three fail silently into one error
return Err(anyhow!("Post not available; graphql='{}'; syndication='{}'; html='{}'", graphql_err, syndication_err, html_err));
// after: fail fast with a clearer cause when auth is missing
if Self::auth_cookie_string().is_none() {
return Err(anyhow!("Post not available: no auth cookie configured; graphql='{}'; syndication='{}'; html='{}'", graphql_err, syndication_err, html_err));
} Defensive patterns
Strategy: try-catch
Validate before calling
if !url.contains("x.com/") && !url.contains("twitter.com/") { return Err(anyhow!("not a tweet URL")); }
if Self::auth_cookie_string().is_none() { println!("warning: no auth cookie — twitter extraction may fail"); } Type guard
fn is_tweet_url(url: &str) -> bool {
url.contains("x.com/") || url.contains("twitter.com/")
} Try / catch
match downloader.get_media_info(&tweet_url).await {
Ok(info) => use(info),
Err(e) if e.to_string().contains("Post not available") => {
// read the graphql=/syndication=/html= segments for root cause;
// prompt user for auth cookie or fall back to yt-dlp
}
Err(e) => report(e),
} Prevention
- Keep a valid, unexpired auth cookie configured before calling twitter extraction.
- Validate the URL is a public tweet containing media before invoking get_media_info.
- Read the three embedded sub-error segments to diagnose root cause quickly.
- Keep the app updated — X changes its APIs and HTML frequently.
- Have a yt-dlp fallback path wired in for tweets the native strategies miss.
When it happens
Trigger: Calling native_get_media_info (via get_media_info) on a tweet URL when: (1) the GraphQL API rejects or errors (auth tokens invalid, API changes), (2) the syndication endpoint errors or returns no media, and (3) request_html_media also fails (non-2xx HTTP, no photo URLs in HTML, or network error).
Common situations: Deleted or protected tweets; tweets whose media is age-restricted or requires login (the auth cookie is absent or expired); X/Twitter API or HTML markup changes breaking the extraction regexes; network/firewall blocking pbs.twimg.com or x.com.
Related errors
- Post not available; graphql=
- chunk de assinatura do X nao encontrado
- No media found in tweet
- Twitter extraction failed. native=
- Post not available; graphql=
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/58156d99bfeae780.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/src/platforms/twitter/mod.rs:1015
"Post not available; graphql='{}'; syndication_extract='{}'; html='{}'",
graphql_err,
syndication_extract_err,
html_err
));
}
}
}
},
Err(syndication_err) => {
tracing::warn!(
"[twitter] syndication lookup failed for tweet_id={}: {}",
tweet_id,
syndication_err
);
match self.request_html_media(url).await {
Ok(items) => items,
Err(html_err) => {
return Err(anyhow!(
"Post not available; graphql='{}'; syndication='{}'; html='{}'",
graphql_err,
syndication_err,
html_err
));
}
}
}
}
}
};
let twitter_media = Self::parse_media_items(&media_items)?;
Ok(Self::media_info_from_twitter_media(
filename_base,
twitter_media,
))View on GitHub (pinned to 8600b91f42)