Spaces:
Sleeping
Sleeping
Commit History
-
Disable Worker proxy on HF Spaces - .workers.dev DNS unresolvable
junsff66211 -
Add WORKER_URL debug logging to diagnose HF Spaces secret injection
juns769e669 -
Strip whitespace from env vars to prevent DNS resolution failures
juns48c7fcf -
Add HF Spaces config metadata in README.md
juns53e8bc5 -
Adapt for HuggingFace Spaces: port 7860, EXPOSE directive
juns5ac1332 -
Fix Railway deployment: encoding bug, healthcheck, deps pinning, Dockerfile optimization
juns- worker/index.js: Remove Content-Encoding forwarding (CF Workers auto-decompress) - main.py: Add /health endpoint, make Playwright pre-warm non-fatal - railway.toml: Add [deploy] with healthcheck, restart policy - requirements.txt: Pin all dependency versions - Dockerfile: Use playwright install --with-deps, optimize layer caching7962d2c
-
Fix Worker encoding: force Accept-Encoding identity + forward Content-Encoding
duck3-create +1: Claude Opus 4.6Worker was stripping Content-Encoding header from YouTube responses, causing compressed bytes to be unparsable by youtube-transcript-api. Now requests uncompressed data and forwards Content-Encoding if present as fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b2f7e8c -
Fix YouTube IP block: preserve original headers in Worker proxy + route cookie fallback through Worker
duck3-create +1: Claude Opus 4.6- worker/index.js: preserve original request headers (cookies, auth tokens) instead of hardcoding; only override User-Agent and merge CONSENT cookie with existing cookies - main.py: use _WorkerProxySession for cookie fallback path so it also routes through Cloudflare Worker instead of using Railway IP directly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9a37979
-
Increase backend URL limit from 20 to 100
duck3-create +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b45a20b -
Increase URL limit from 20 to 100
duck3-create +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f328aba
-
Optimize Instagram extraction to ~4s (was ~8s)
duck3-create +1: Claude Opus 4.6- Revert network intercept to wait_for_selector (1s vs 6s) - Persistent browser in dedicated thread with pre-warming - ffmpeg direct URL->audio extraction on Docker (5MB->300KB) - Streaming download + per-step timing logs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>69d0e99 -
Optimize Instagram extraction: 8s -> 5s with persistent browser
duck3-create +1: Claude Opus 4.6- Dedicated single-thread Playwright executor for thread-safety - Persistent browser instance pre-warmed at startup (saves ~1.5s cold-start) - domcontentloaded + wait_for_selector('video[src]') instead of networkidle - ffmpeg audio extraction before Groq upload (5MB->300KB on Docker) - Streaming video download for memory efficiency - Added per-step timing logs for pipeline monitoring Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f4b3580 -
Add cookie-free Instagram extraction via embed page
duck3-create +1: Claude Opus 4.6Primary method now renders Instagram embed page (/p/{shortcode}/embed/) in Playwright without any cookies. Falls back to authenticated Playwright with cookies for private/restricted content. Removes --single-process flag that caused crashes on Windows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3678e06 -
Speed up Instagram extraction + auto-copy checked by default
duck3-create +1: Claude Opus 4.6- Reduce Playwright wait from 10s to early-exit (max 5s) - Set subtitle auto-copy checkbox checked by default Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>11684f2 -
Fix Chromium crash in Docker: add --no-sandbox and --disable-dev-shm-usage
duck3-create +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3eee3bb -
Fix Railway deployment: force Dockerfile builder, fix Bookworm compat
duck3-create +1: Claude Opus 4.6- railway.toml: add builder = "DOCKERFILE" to override Nixpacks - Dockerfile: libasound2 -> libasound2t64 for Debian Bookworm - Remove runtime.txt and Procfile (Nixpacks signals causing builder conflict) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>50a91ab -
Trigger rebuild with Dockerfile builder v2.0.0
duck3-create +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>040cfd1 -
Add railway.toml to force Dockerfile-based build
duck3-create +1: Claude Opus 4.6Railway was using railpack instead of Dockerfile, missing Playwright and Groq. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>925a531 -
Add Instagram transcript extraction with Playwright + Groq Whisper
duck3-create +1: Claude Opus 4.6- Add Instagram reel/post URL detection and video extraction via Playwright - Transcribe Instagram video audio using Groq Whisper API - Support INSTAGRAM_COOKIES_BASE64 env var for server deployment - Add Dockerfile with Chromium dependencies for Railway - Update frontend to support Instagram URLs across all languages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d1d9954
-
Force Railway rebuild with version update
duck3-create1e2cbac -
Trigger Railway redeploy for subtitle auto copy fix
duck3-createe104116 -
Add Google Search Console verification meta tag
duck3-create +1: Claude Haiku 4.5Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>5e8bae8
-
Fix hardcoded 'Link Auto Copy' label to 'Subtitle Auto Copy'
duck3-create +1: Claude Haiku 4.5Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>e479b27 -
Add SEO metadata and search engine configuration
duck3-create +1: Claude Haiku 4.5- Add comprehensive meta tags (description, keywords, og:, twitter:) - Improve title with keyword inclusion - Create sitemap.xml for search engine discovery - Create robots.txt for crawl guidelines - Enable proper indexing by Google and Naver Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>c2ba620 -
Change 'Link Auto Copy' label to 'Subtitle Auto Copy'
duck3-create +1: Claude Haiku 4.5Updated labels in all languages: - English: Link Auto Copy → Subtitle Auto Copy - 한국어: 링크 자동복사 → 자막 자동복사 - Español: Copia automática de enlaces → Copia automática de subtítulos - 日本語: リンク自動コピー → 字幕自動コピー - Português: Cópia automática de link → Cópia automática de legenda Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>de5bdb0
-
Trigger Railway redeploy
duck3-create89bd9a1 -
Add i18n, SRT/VTT export, playlist support, and feedback system
duck3-create +1: Claude Opus 4.6- Add 5-language i18n (en, ko, es, ja, pt) with browser auto-detection - Add SRT/VTT subtitle format export with timestamp formatting - Add playlist URL auto-expansion via /api/playlist endpoint - Add feedback modal and /api/feedback endpoint - Consolidate download buttons into single button with mode toggle - Change default UI language to English with auto-detect - Reduce max URL limit from 50 to 20 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>264e2f7
-
Improve transcript fetch reliability with 3-stage fallback
duck3-create +1: Claude Opus 4.6- Add exponential backoff (2s, 4s, 8s) with 4 retries - Add language-less fetch as second fallback - Add list+fetch as final fallback for IP-blocked environments - Extract _process_result() to reduce code duplication - Increase error message display from 120 to 200 chars Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7f25126
-
Improve language option and split download buttons
duck3-create +1: Claude Opus 4.6- Language: add "자동" (auto) option that tries ko+en, "한국어"/"English" now fetch only that language - Download: replace ambiguous "파일별 다운로드" checkbox with two clear buttons ("통합 다운로드" / "개별 다운로드") Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>31cd65e -
Improve retry reliability and add retry-failed button
duck3-create +1: Claude Opus 4.6Backend: - Increase max retries from 2 to 3 - Progressive delay between retries (1s, 2s) Frontend: - Add "실패 항목 재시도" button for failed videos - Auto-copy/auto-download/per-file download checkboxes - Total token count in results stats header Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5036b96 -
Add progress bar, auto-copy/download, and total tokens display
duck3-create +1: Claude Opus 4.6- Real-time progress bar with percentage and estimated remaining time - Individual requests per URL for granular progress tracking - Result cards appear one by one as each video completes - Auto copy checkbox: copies all results to clipboard on completion - Auto download checkbox: triggers download on completion - Per-file download checkbox: download each video as separate file - Total token count shown in results stats header Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cb74a77 -
Add concurrency limit and retry for YouTube rate limiting
duck3-create +1: Claude Opus 4.6- Semaphore limits concurrent YouTube fetches to 3 at a time - Auto-retry once after 1s delay for rate-limited requests - Skip retry for genuine "no subtitles" errors - Extract _format_error helper for consistent error messages Fixes intermittent failures when submitting 8+ URLs at once. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a91ee7b -
Fix Worker to forward POST method and body for InnerTube API
duck3-create +1: Claude Opus 4.6youtube-transcript-api sends POST requests to /youtubei/v1/player for some videos (auto-generated captions). The Worker was only forwarding GET requests, causing 405 Method Not Allowed errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>136083a
-
Add CONSENT cookie to Worker for YouTube bypass
duck3-create +1: Claude Opus 4.6- YouTube returns consent page without cookies - Add CONSENT and SOCS cookies to skip consent screen - Forward Accept-Language from original request Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>aefaf06 -
Fix WorkerProxySession to inherit from requests.Session
duck3-create +1: Claude Opus 4.6- youtube-transcript-api expects http_client.headers attribute - Inherit from requests.Session for full compatibility - Override request() method to route all URLs through Worker Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4123369 -
Add Cloudflare Worker proxy for YouTube IP bypass
duck3-create +1: Claude Opus 4.6- Add worker/ directory with CF Worker proxy code - Add _WorkerProxySession class to route requests through CF Worker - WORKER_URL env var enables CF Worker proxy (priority over PROXY_URL) - CF Worker uses Cloudflare's diverse IPs to bypass YouTube blocks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>30b5d98 -
Add dual API fallback and proxy support
duck3-create +1: Claude Opus 4.6- Try plain API (no cookies) first, fall back to cookies - Fixes Railway IP mismatch issue (cookies from home IP rejected on cloud) - Add PROXY_URL env var support for optional residential proxy - Remove retry loop in favor of smarter plain→cookies fallback - Skip fallback for genuine "no subtitles" errors Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>431f64f -
Improve error handling and optimize retry logic
duck3-create +1: Claude Opus 4.6- Add AbortController with 90s timeout to frontend fetch - Show inline error card with retry button instead of alert() - Context-aware error messages (timeout/offline/server error) - Skip retries for "Could not retrieve" errors (IP block) - Reduce retry delay from 1.5s to 1.0s for faster failure response Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ac36889 -
Fix cookie loading for Railway container environment
duck3-create +1: Claude Opus 4.6- Write env var cookies to /tmp/ instead of app directory - Add try/except around cookie loading for resilience Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>210b2d9 -
Add YouTube cookie support for reliable transcript fetching
duck3-create +1: Claude Opus 4.6- Load cookies from local cookies.txt or YOUTUBE_COOKIES_BASE64 env var - Cookies make requests appear as regular user, avoiding IP blocks - cookies.txt added to .gitignore for security Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cb873da
-
UI polish: i18n toggle, Apple-style design, token count
duck3-create +1: Claude Opus 4.6- Add KO/EN language toggle with full i18n translations - Apple-style design: reduced border-radius, no glow effects - Show token count instead of reading time in result stats - Bigger/bolder option text, buttons, and history items - Darker text colors for better readability - Merge checkboxes into one row, thicker checkbox borders - Remove footer, remove keep_newlines checkbox - Increase URL limit from 20 to 50 - Card header shows video title instead of raw ID Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>bacd066 -
Add new features: title display, dark mode, history, URL cleanup
duck3-create +1: Claude Opus 4.6- Fetch video title via YouTube oembed API (parallel with transcript) - Add character count and estimated reading time per result - Add dark mode toggle with localStorage persistence - Add keep_newlines option (default: continuous text) - Support m.youtube.com URLs, strip tracking params (si, utm, etc.) - Add recent extraction history (localStorage, last 10 videos) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d2c03ed -
Improve UI design and add .railwayignore
duck3-create +1: Claude Opus 4.6- Refined color tokens, shadows, and border variables for both themes - Added options panel container, URL count indicator, section labels - Improved result cards with index badges and YouTube video links - Enhanced toggle group, focus rings, footer, and spacing - Added .railwayignore to exclude nul and dev files from deploy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c7058b5 -
Add retry logic for YouTube transcript fetching
duck3-create +1: Claude Opus 4.6Retries up to 3 times with 1.5s delay to handle intermittent YouTube API blocks on cloud server IPs (Railway). Skips retry for non-retryable errors (no subtitles, disabled). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>49a1ac5 -
Initial commit: YouTube transcript extraction web service
duck3-create +1: Claude Opus 4.6FastAPI backend with youtube-transcript-api for extracting subtitles from YouTube videos. Supports batch processing (up to 20 URLs), text/JSON output, Korean noise removal, and dark/light theme frontend. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0e7d362