// Name: Download Instagram Video // Description: Prompts for an Instagram video URL and downloads the video file locally. // Author: kenNash // GitHub: kenNash import "@johnlindquist/kit" let instagramGetUrl: any try { instagramGetUrl = (await import("instagram-url-direct")).default } catch { await installMissingPackage("instagram-url-direct") instagramGetUrl = (await import("instagram-url-direct")).default } const urlInput: string = await arg({ placeholder: "Paste Instagram video URL", strict: false, validate: (input: string) => { try { const u = new URL(input.trim()) if (!/instagram\.com/.test(u.hostname)) return "Please enter a valid instagram.com URL" return true } catch { return "Please enter a valid URL" } }, }) setLoading(true) try { const res = await instagramGetUrl(urlInput.trim()) const urls: string[] = res?.url_list || res?.urls || (Array.isArray(res) ? res : []) || [] const directUrl: string | undefined = urls[0] if (!directUrl) { setLoading(false) await div(md("No downloadable video URL found for this Instagram link.")) exit() } const buffer: Buffer = await download(directUrl) let fileName = "" try { const u = new URL(directUrl) fileName = path.basename(u.pathname) } catch { // Fallback filename } if (!fileName || !/\.(mp4|mov|m4v|webm)$/i.test(fileName)) { fileName = `instagram-video-${formatDate(new Date(), "yyyyMMdd-HHmmss")}.mp4` } const outPath = home("Downloads", fileName) await writeFile(outPath, buffer) setLoading(false) await notify(`Saved: ${fileName}`) await revealFile(outPath) } catch (error: any) { setLoading(false) await div(md(`Failed to download video.\n\n${error?.message || error}`)) }