Engineered for Bulk Channel Extraction & Translation
Every component in Shirube YouTube Transcript Tool v1.1.1 is built around deterministic local storage, transparent error reporting, and zero external data leakage.
1. Fast Flat-Playlist Channel Indexing (core/crawler.py)
Instead of requiring a Google Cloud project and burning through the YouTube Data API v3’s 10,000-unit daily quota, the crawler uses yt-dlp with extract_flat="in_playlist". It normalizes @handle, /channel/UC..., and playlist URLs and discovers video IDs, titles, durations, and upload dates without downloading media streams. In test10 mode, it sets playlistend=25 so initial testing starts in 1–2 seconds even on 5,000-video channels.
2. Multi-Language Batch Translation (core/extractor.py)
Select a target translation language (en, ja, es, fr, de, pt, ko, zh-Hans) in the GUI or pass --translate-to in the CLI. You can translate on-the-fly during channel extraction or retroactively translate an existing channel_cache.db using the 🌐 Translate Cached button (--mode translate_existing).
3. SQLite State Machine & Incremental Sync (core/db.py)
All metadata, transcripts, translations, and error logs are stored in channel_cache.db inside your output folder. Upserting a channel never overwrites completed transcripts. You can safely pause a job at any time, retry only failed network errors (retry_failed), or re-run a month later to fetch only newly published videos.
4. Separated User Settings & Sanitized Diagnostics (core/config.py & diagnostics.py)
User preferences are persisted in %APPDATA%\ShirubeYTTranscript\config.json—completely separate from the application folder and output directories—so upgrading to a newer version never resets your configuration. The one-click 🩺 Save Diagnostic Log exporter automatically strips OS usernames, API keys, cookies, and proxy credentials before writing a local troubleshooting report.
Output Files & CSV Schema Specification
All CSV files are encoded in utf-8-sig (UTF-8 with BOM) so Microsoft Excel on Windows opens multi-language text without character corruption.
| File | Columns / Structure | Purpose |
|---|---|---|
| videos.csv | video_id, title, url, published_at, duration_seconds, transcript_status, transcript_language, transcript_file, error_message | Master index of every video discovered on the channel and its extraction status. |
| transcripts.csv | video_id, title, url, language, transcript_text, transcript_source, [translated_language, translated_text, translated_file], retrieved_at | Full continuous transcript text + optional batch translation for spreadsheets, Python/Pandas, or LLM pipelines. |
| errors.csv | video_id, url, error_message, retry_count, last_attempted_at | Audit log of videos without captions (no_transcript) or temporary network/rate-limit errors (error). |
| transcripts/{id}.txt | Metadata header + [MM:SS] or [HH:MM:SS] timestamped lines | Complete timestamped transcript per video (plus {id}.{target_lang}.txt when translated). |