tonhowtf/omniget · error
Post not available
Error message
Post not available
What it means
The itemStruct parsed and passed all status checks, but the author object is missing. The library requires author metadata as a sanity check that the item is a real, accessible post; a missing author means the post data is incomplete, so it fails with 'Post not available'.
Solutions
- Verify in a browser that the post and its author account still exist and are public.
- Treat the post as unavailable (deleted/private) and skip it rather than retrying.
- Retry once in case it was a transient partial response.
- If seen across many posts, suspect a TikTok schema change and update the extractor.
Defensive patterns
Strategy: validation
Try / catch
match tiktok.get_media_info(url).await {
Err(e) if e.to_string() == "Post not available" => { /* mark post unavailable, continue batch */ }
other => { other?; }
} Prevention
- Check the post and author still exist publicly before processing.
- Treat as permanent unavailability — skip rather than retry.
- Cache known-unavailable post IDs to avoid repeat calls.
- If many posts hit this at once, verify extractor schema assumptions.
When it happens
Trigger: detail.get("author") returns None after successful extraction of itemStruct — e.g. TikTok returned a stub itemStruct for a deleted/private/blocked post without a statusMsg or statusCode.
Common situations: Deleted or banned accounts still returning an envelope; shadow-banned posts; partially-structured responses for terminated content; TikTok schema drift removing/renaming author.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- a lista voltou vazia — o TikTok não entregou os favoritos…
- Age-restricted content
- Could not resolve short link
- Could not resolve short link
- Erro ao processar resposta do TikTok
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/eb0ee3622a1b628d.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/platforms/tiktok.rs:206
return Err(anyhow!("Post not available (status {})", status_code));
}
}
let detail = video_detail
.pointer("/itemInfo/itemStruct")
.ok_or_else(|| anyhow!("Video data not found in TikTok response"))?
.clone();
if detail
.get("isContentClassified")
.and_then(|v| v.as_bool())
.unwrap_or(false)
{
return Err(anyhow!("Age-restricted content"));
}
if detail.get("author").is_none() {
return Err(anyhow!("Post not available"));
}
Ok(detail)
}
fn extract_author(detail: &serde_json::Value) -> String {
detail
.pointer("/author/uniqueId")
.or_else(|| detail.pointer("/author/unique_id"))
.and_then(|v| v.as_str())
.unwrap_or("unknown")
.to_string()
}
fn extract_video_url(detail: &serde_json::Value) -> Option<String> {
if let Some(play_addr) = detail.pointer("/video/playAddr") {
if let Some(url) = play_addr.as_str() {
if Self::is_valid_play_addr(url) {View on GitHub (pinned to 8600b91f42)