{"id":31890569,"url":"https://github.com/luispater/gemini-srt-translator-go","last_synced_at":"2025-10-13T07:50:08.479Z","repository":{"id":307710598,"uuid":"1030460855","full_name":"luispater/gemini-srt-translator-go","owner":"luispater","description":"A powerful tool to translate subtitle files using Google Gemini AI.","archived":false,"fork":false,"pushed_at":"2025-09-13T07:26:03.000Z","size":112,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-13T09:37:01.084Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luispater.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-01T17:18:34.000Z","updated_at":"2025-09-13T07:25:36.000Z","dependencies_parsed_at":"2025-08-24T18:14:48.806Z","dependency_job_id":"51f145c4-a125-4749-8a86-23c832174967","html_url":"https://github.com/luispater/gemini-srt-translator-go","commit_stats":null,"previous_names":["luispater/gemini-srt-translator-go"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/luispater/gemini-srt-translator-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luispater%2Fgemini-srt-translator-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luispater%2Fgemini-srt-translator-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luispater%2Fgemini-srt-translator-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luispater%2Fgemini-srt-translator-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luispater","download_url":"https://codeload.github.com/luispater/gemini-srt-translator-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luispater%2Fgemini-srt-translator-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279014159,"owners_count":26085464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-13T07:49:46.513Z","updated_at":"2025-10-13T07:50:08.465Z","avatar_url":"https://github.com/luispater.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gemini SRT Translator Go\n\nEnglish | [中文](README_CN.md)\n\nGemini SRT Translator Go - a powerful tool to translate subtitle files using Google Gemini AI.\n\n## Features\n\n- 🔤 **SRT Translation**: Translate `.srt` subtitle files to a wide range of languages supported by Google Gemini AI\n- ⏱️ **Timing \u0026 Format**: Maintains exact timestamps and basic SRT formatting of the original file\n- 💾 **Quick Resume**: Easily resume interrupted translations from where you left off\n- 🧠 **Advanced AI**: Leverages thinking and reasoning capabilities for more contextually accurate translations\n- 🖥️ **CLI Support**: Full command-line interface for easy automation and scripting\n- ⚙️ **Customizable**: Tune model parameters, adjust batch size, and access other advanced settings\n- 📜 **Description Support**: Add description to guide AI in using specific terminology or context\n- 📋 **Interactive Features**: Interactive model selection and automatic help display\n- 📝 **Logging**: Optional saving of progress and thinking process logs for review\n\n## Installation\n\n### Prerequisites\n\n- Go 1.23 or later\n\n### Build from Source\n\n```bash\ngit clone https://github.com/luispater/gemini-srt-translator-go.git\ncd gemini-srt-translator-go\ngo mod tidy\ngo build -o gst ./cmd\n```\n\n## Configuration\n\n### Get Your API Key\n\n1. Go to [Google AI Studio](https://aistudio.google.com/apikey)\n2. Sign in with your Google account\n3. Click on **Generate API Key**\n4. Copy and keep your key safe\n\n### Set Your API Key\n\nSet the `GEMINI_API_KEY` environment variable with comma-separated keys for additional quota:\n\n**macOS/Linux:**\n```bash\nexport GEMINI_API_KEY=\"your_first_api_key_here,your_second_api_key_here\"\n```\n\n**Windows (Command Prompt):**\n```bash\nset GEMINI_API_KEY=your_first_api_key_here,your_second_api_key_here\n```\n\n**Windows (PowerShell):**\n```powershell\n$env:GEMINI_API_KEY=\"your_first_api_key_here,your_second_api_key_here\"\n```\n\n## Usage\n\n### Help and Usage\n\n```bash\n# Show help\n./gst --help\n# or simply run without arguments\n./gst\n```\n\n### Command Line Interface\n\n#### Basic Translation\n\n```bash\n# Using environment variable (recommended)\nexport GEMINI_API_KEY=\"your_api_key_here\"\n./gst subtitle.srt -l \"Simplified Chinese\"\n\n# Using command line argument with multiple keys\n./gst subtitle.srt -l \"Simplified Chinese\" -k \"YOUR_FIRST_API_KEY,YOUR_SECOND_API_KEY\"\n\n# Set output file name\n./gst subtitle.srt -l \"Simplified Chinese\" -o translated_subtitle.srt\n\n# Interactive model selection\n./gst subtitle.srt -l \"Brazilian Portuguese\" --interactive\n\n# Resume translation from a specific line\n./gst subtitle.srt -l \"Simplified Chinese\" --start-line 20\n\n# Suppress output\n./gst subtitle.srt -l \"Simplified Chinese\" --quiet\n```\n\n#### Advanced Options\n\n```bash\n# Full-featured translation with custom settings\n./gst input.srt \\\n  -l \"Simplified Chinese\" \\\n  -k YOUR_API_KEY \\\n  -o output_french.srt \\\n  --model gemini-2.5-pro \\\n  --batch-size 150 \\\n  --temperature 0.7 \\\n  --description \"Medical TV series, use medical terminology\" \\\n  --progress-log\n```\n\n#### Interactive Model Selection\n\nUse interactive mode to see and select from available models:\n\n```bash\n./gst subtitle.srt -l \"Simplified Chinese\" --interactive\n```\n\n## Configuration Options\n\n### Core Parameters\n\n- `GeminiAPIKeys`: Array of Gemini API keys (parsed from comma-separated string)\n- `TargetLanguage`: Target language for translation\n- `InputFile`: Path to input SRT file\n- `OutputFile`: Path to output translated SRT file\n- `StartLine`: Line number to start translation from\n- `Description`: Additional instructions for translation\n- `BatchSize`: Number of subtitles to process in each batch\n\n### Model Parameters\n\n- `ModelName`: Gemini model to use (default: \"gemini-2.5-flash\")\n- `Temperature`: Controls randomness in output (0.0-2.0)\n- `TopP`: Nucleus sampling parameter (0.0-1.0)\n- `TopK`: Top-k sampling parameter (\u003e=0)\n- `Streaming`: Enable streamed responses (default: true)\n- `Thinking`: Enable thinking capability (default: true)\n- `ThinkingBudget`: Token budget for thinking process (0-24576)\n\n### User Options\n\n- `FreeQuota`: Signal that you're using free quota (affects rate limiting)\n- `UseColors`: Enable colored terminal output\n- `ProgressLog`: Enable progress logging to file\n- `QuietMode`: Suppress all output\n- `Resume`: Automatically resume interrupted translations\n\n## Project Structure\n\n```\ngemini-srt-translator-go/\n├── cmd/                  # Command-line interface\n│   └── main.go\n├── internal/             # Internal packages\n│   ├── translator/       # Core translation logic\n│   ├── logger/           # Logging and progress display\n│   └── helpers/          # Gemini API helpers\n├── pkg/                  # Public packages\n│   ├── config/           # Configuration management\n│   ├── errors/           # Error handling\n│   └── srt/              # SRT parsing and formatting\n└── test/                 # Test files\n```\n\n## Main Dependencies\n\n- `github.com/spf13/cobra`: CLI framework\n- `google.golang.org/genai`: Official Gemini AI client\n- `golang.org/x/term`: Terminal password input\n\n## Testing\n\nRun the test suite:\n\n```bash\ngo test ./...\n```\n\nRun tests with coverage:\n\n```bash\ngo test -cover ./...\n```\n\n## Development\n\n### Building\n\n```bash\ngo build -o gst ./cmd\n```\n\n### Cross-compilation\n\n```bash\n# Windows\nGOOS=windows GOARCH=amd64 go build -o gst.exe ./cmd\n\n# macOS\nGOOS=darwin GOARCH=amd64 go build -o gst-macos ./cmd\n\n# Linux\nGOOS=linux GOARCH=amd64 go build -o gst-linux ./cmd\n```\n\n## Features Explained\n\n### Translation Workflow\n\n1. **Input Validation**: Check files, API keys, and parameters\n2. **Model Validation**: Verify selected Gemini model availability\n3. **Token Management**: Get model token limits and validate batch sizes\n4. **Batch Translation**: Process subtitles in configurable batches\n5. **Progress Tracking**: Save progress for resumable translations\n6. **Output Generation**: Write translated SRT with proper formatting\n\n### Error Handling\n\n- API errors trigger key rotation when multiple keys available\n- File validation occurs before processing begins\n- Progress is saved after each successful batch\n- Cleanup of temporary files on completion\n\n### Multi-API Key Support\n\n- Supports rotation through multiple API keys\n- Automatic handling of quota limits and error recovery\n- Enhanced processing capability for free quota users\n\n## License\n\nDistributed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Support\n\nIf you encounter any issues or have questions, please check the documentation or create an issue in the repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluispater%2Fgemini-srt-translator-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluispater%2Fgemini-srt-translator-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluispater%2Fgemini-srt-translator-go/lists"}