Commit Graph

12 Commits

Author SHA1 Message Date
Gan, Jimmy 963e9dbdf1 feat: switch summarizer to DeepSeek API, add cookie support for transcripts 2026-06-24 00:38:13 +08:00
Gan, Jimmy a0ffa41c9e feat: replace yt-dlp cookies with YouTube Data API v3 OAuth
- Add auth.py: OAuth credential manager with auto-refresh
- Rewrite fetcher.py: use googleapiclient subscriptions/search
- Add google-auth, google-api-python-client dependencies
- Update docker-compose for config volume mount
- Add .gitignore for secrets (client_secret.json, token.pickle)
- Live test: 198 videos ingested from 229 channels
2026-06-24 00:14:16 +08:00
Gan, Jimmy dba070531e Add --extractor-args youtubetab:skip=authcheck to yt-dlp to bypass blocking
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 13:55:09 +08:00
Gan, Jimmy 7f943b86a2 Merge live integration test into unified run_tests.sh and remove run_live_test.sh 2026-06-04 11:19:20 +08:00
Gan, Jimmy 5e91a1f056 Inject custom requests.Session with browser User-Agent into YouTubeTranscriptApi
- Add requests import to summarizer.py
- Configure requests.Session with macOS Chrome User-Agent and English Accept-Language headers
- Initialize YouTubeTranscriptApi with custom http_client to bypass YouTube anti-scraping blocks on residential IPs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 11:13:17 +08:00
Gan, Jimmy 08fbaf7d78 Add automated run_live_test.sh integration test script
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 11:07:07 +08:00
Gan, Jimmy 85fd40acf8 Fix youtube-transcript-api call structure and make test assertions environment-robust
- Instantiate YouTubeTranscriptApi class and call list() as required by v1.2.4
- Decorate async database fixture with pytest_asyncio.fixture
- Replace hardcoded base URL string assertion in test_summarizer.py with dynamized summarizer.BASE_URL value to support proxy profiles

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:38:50 +08:00
Gan, Jimmy 7f4de7e8d2 Auto-detect and inject proxy configurations in run_tests.sh
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:50:07 +08:00
Gan, Jimmy eae72dbfc0 Add run_tests.sh test runner script
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:22:33 +08:00
Gan, Jimmy fe4d019ffa Add standard .gitignore configuration
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:15:41 +08:00
Gan, Jimmy 1e67eeb25b Add automated unit and mock integration test suite
- Configure conftest.py with pytest tmp_path DB isolation fixtures
- Add test_db.py for schema connection validations
- Add test_fetcher.py with mocked yt-dlp subprocess parser checks
- Add test_summarizer.py with mocked transcripts and Claude API requests
- Add test_main.py for FastAPI router endpoints and state updates

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:15:27 +08:00
Gan, Jimmy dbd3dc0237 Initial commit: Add T YouTube text-based reader web app
- FastAPI backend running on port 8000
- Svelte 5 runes frontend dashboard supporting Read/Skip state toggles
- YouTube subscription feed scraper using yt-dlp & Netscape cookies.txt
- Transcript downloader and Claude 3.5 Haiku summarizer via bytecatcode proxy
- Multi-stage Dockerfile and docker-compose.yml configuration

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:00:34 +08:00