tonhowtf/omniget · error · anyhow::Error

Could not resolve share link

Error message

Could not resolve share link

What it means

resolve_share_link followed an instagram.com/share/<id>/ short link but the final URL still contains /share/ or equals the original — the redirect never resolved to a real post/profile URL. The share slug is invalid, expired, or Instagram refused the anonymous redirect, so no media id can be extracted.

Solutions

  1. Copy the full instagram.com/p/<shortcode>/ link instead of the share link
  2. Check the post still exists and is public
  3. Retry later — Instagram sometimes refuses share redirects transiently
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src-tauri/src/platforms/instagram/mod.rs:121 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/a8577b92f83260fc. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/src/platforms/instagram/mod.rs:121

        None
    }

    fn is_story_url(url: &str) -> bool {
        if let Ok(parsed) = url::Url::parse(url) {
            let path = parsed.path().to_lowercase();
            return path.starts_with("/stories/");
        }
        false
    }

    async fn resolve_share_link(&self, share_id: &str) -> anyhow::Result<String> {
        let url = format!("https://www.instagram.com/share/{}/", share_id);

        let response = self.redirect_client.get(&url).send().await?;
        let final_url = response.url().to_string();

        if final_url.contains("/share/") || final_url == url {
            return Err(anyhow!("Could not resolve share link"));
        }

        Ok(final_url)
    }

    fn regex_extract(pattern: &str, text: &str) -> Option<String> {
        let re = Regex::new(pattern).ok()?;
        re.captures(text)?.get(1).map(|m| m.as_str().to_string())
    }

    fn extract_object_entry(name: &str, html: &str) -> Option<serde_json::Value> {
        let pattern = format!(r#"\["{}",.*?,(\{{.*?\}}),\d+\]"#, regex::escape(name));
        let re = Regex::new(&pattern).ok()?;
        let json_str = re.captures(html)?.get(1)?.as_str();
        serde_json::from_str(json_str).ok()
    }

    fn extract_number_from_query(name: &str, html: &str) -> Option<String> {

View on GitHub (pinned to 8600b91f42)