How antony-collika/subgrab works
SubGrab is an Android app for discovering YouTube videos and downloading subtitles, with a separate research workspace for searching and examining video metadata. The primary flow is URL, keyword, or playlist discovery; subtitle-track extraction; parsing and normalization; formatting as SRT or TXT; and saving or publishing files. The research branch supports searchable video records, history and detail views, transcripts, comments, and export. The README documents the subtitle pipeline; source excerpts confirm UI, extraction, storage, and research persistence components, but do not expose all orchestration calls.
Main entry points: DownloadWorker.kt Download worker · ResearchSearchViewModel.kt Research view models · NewPipeExtractorClient.kt Subtitle extraction · SubGrabDatabase.kt Runtime database
Components 20
App workflow
- App navigation
app/src/main/java/com/subgrab/app/MainActivity.kt - Download UI
app/src/main/java/com/subgrab/app/ui/DownloadViewModel.kt - Download worker
app/src/main/java/com/subgrab/app/service/DownloadWorker.kt
Subtitle pipeline
- Video discovery
app/src/main/java/com/subgrab/app/data/NewPipeExtractorClient.kt - Subtitle extraction
app/src/main/java/com/subgrab/app/data/NewPipeExtractorClient.kt - Subtitle download
app/src/main/java/com/subgrab/app/data/SubtitleDownloader.kt - Cue parsing
app/src/main/java/com/subgrab/app/data/SubtitleParser.kt - Cue normalization
app/src/main/java/com/subgrab/app/data/SubtitleNormalizer.kt - SRT/TXT formatting
app/src/main/java/com/subgrab/app/data/SubtitleFormatter.kt - File publishing
app/src/main/java/com/subgrab/app/data/FileStorage.kt
Research workspace
- Research screens
app/src/main/java/com/subgrab/app/ui/ResearchScreens.kt - Research view models
app/src/main/java/com/subgrab/app/ui/ResearchSearchViewModel.kt - Research queries
app/src/main/java/com/subgrab/app/data/repository/ResearchRepository.kt - Knowledge records
app/src/main/java/com/subgrab/app/data/repository/KnowledgeRepository.kt - Research export
app/src/main/java/com/subgrab/app/data/export/ResearchExport.kt
Data and integrations
- YouTube API
app/src/main/java/com/subgrab/app/data/YouTubeDataApiClient.kt - App settings
app/src/main/java/com/subgrab/app/data/SettingsRepository.kt - Runtime database
app/src/main/java/com/subgrab/app/data/SubGrabDatabase.kt
Other components
- User
- YouTube
Connections 22
- User → App navigation: uses
- App navigation → Download UI: routes actions
- Download UI → Download worker: starts download
- Download worker → Subtitle extraction: initializes
- Video discovery → YouTube: fetches videos
- Subtitle extraction → YouTube: fetches tracks
- Subtitle extraction → Subtitle download: provides extractor
- Subtitle download → Cue parsing: parses cues
- Cue parsing → Cue normalization: normalizes cues
- Cue normalization → SRT/TXT formatting: formats cues
- SRT/TXT formatting → File publishing: writes files
- User → Research screens: uses
- Research screens → Research view models: dispatches actions
- Research view models → Research queries: queries
- Research view models → Knowledge records: loads details
- Research queries → Runtime database: searches records
- Knowledge records → Runtime database: reads/writes
- Research view models → Research export: exports results
- YouTube API → YouTube: requests metadata
- App settings → YouTube API: supplies API key
- Download worker → App settings: loads settings
- Download worker → Runtime database: logs runtime