{"id":24725094,"url":"https://github.com/tanishkbansode/youtubezen","last_synced_at":"2026-02-08T23:02:29.745Z","repository":{"id":272248954,"uuid":"915961139","full_name":"TanishkBansode/YouTubeZen","owner":"TanishkBansode","description":"A distraction-free desktop app for YouTube. No recommendations, no comments, no promotions—just videos.","archived":false,"fork":false,"pushed_at":"2025-01-26T17:27:52.000Z","size":19841,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T07:23:07.407Z","etag":null,"topics":["desktop-app","go","golang","linux","macos","svelte","typescript","wails","wails-svelte","windows","youtube-api-v3"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TanishkBansode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-01-13T07:30:03.000Z","updated_at":"2025-01-26T17:27:55.000Z","dependencies_parsed_at":"2025-01-13T08:42:40.772Z","dependency_job_id":null,"html_url":"https://github.com/TanishkBansode/YouTubeZen","commit_stats":null,"previous_names":["tanishkbansode/youtubezen"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TanishkBansode/YouTubeZen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanishkBansode%2FYouTubeZen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanishkBansode%2FYouTubeZen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanishkBansode%2FYouTubeZen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanishkBansode%2FYouTubeZen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TanishkBansode","download_url":"https://codeload.github.com/TanishkBansode/YouTubeZen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanishkBansode%2FYouTubeZen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001975,"owners_count":26083244,"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-09T02:00:07.460Z","response_time":59,"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":["desktop-app","go","golang","linux","macos","svelte","typescript","wails","wails-svelte","windows","youtube-api-v3"],"created_at":"2025-01-27T13:16:46.154Z","updated_at":"2026-02-08T23:02:29.738Z","avatar_url":"https://github.com/TanishkBansode.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## YouTube Zen\n\nIt is a minimalist desktop app to view YouTube videos without the recommendations, comments, or promotions. Just a pure video-viewing experience.\n\n## 🗑️ Abandoned: YouTube embed is worsening day-by-day, even included ads now :(  \n[![Watch the video](https://img.youtube.com/vi/2xioDUufMu0/0.jpg)](https://www.youtube.com/watch?v=2xioDUufMu0)\n\n## Why?\n- It is not an extension, so you can't disable it and accidentally see things you weren't intending to.\n- It is not a website, so you can't just switch tabs instantly for something else.\n- It treats shorts like videos, so you won't get trapped in doomscrolling.\n\n## Technologies Used\n- Golang\n- [Wails](https://github.com/wailsapp/wails)\n- Svelte 4\n- TypeScript 5\n- Vite 5\n\n## Prerequisites\n\n- Go 1.22 or higher\n- Node.js 16 or higher\n- Wails CLI (`go install github.com/wailsapp/wails/v2/cmd/wails@latest`)\n\n## OAuth2 Setup (Required)\n\nBefore running the application, you need to set up OAuth2 credentials with Google:\n\n### 1. Create a Google Cloud Project\n\n1. Go to the [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project or select an existing one\n3. Enable the **YouTube Data API v3** for your project:\n   - Navigate to \"APIs \u0026 Services\" \u003e \"Library\"\n   - Search for \"YouTube Data API v3\"\n   - Click \"Enable\"\n\n### 2. Create OAuth2 Credentials\n\n1. Go to \"APIs \u0026 Services\" \u003e \"Credentials\"\n2. Click \"Create Credentials\" \u003e \"OAuth client ID\"\n3. Select \"Web application\" as the application type\n4. Add authorized redirect URIs:\n   - `http://localhost:8090`\n5. Click \"Create\" and download the credentials\n\n### 3. Configure the Application\n\n1. Rename the downloaded file to `client_secret.json`\n2. Place it in the **same directory** as the executable (or project root for development)\n3. Alternatively, you can copy `client_secret.json.example` and fill in your credentials\n\nThe file should have this structure:\n```json\n{\n  \"web\": {\n    \"client_id\": \"YOUR_CLIENT_ID.apps.googleusercontent.com\",\n    \"project_id\": \"your-project-id\",\n    \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n    \"token_uri\": \"https://oauth2.googleapis.com/token\",\n    \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n    \"client_secret\": \"YOUR_CLIENT_SECRET\",\n    \"redirect_uris\": [\"http://localhost:8090\"]\n  }\n}\n```\n\n### 4. First-Time Authentication\n\nWhen you run the app for the first time:\n1. Your browser will automatically open to Google's OAuth consent screen\n2. Sign in with your Google account\n3. Grant the requested permissions (read-only access to YouTube)\n4. The token will be cached in `~/.credentials/youtube-go.json`\n5. Subsequent runs won't require re-authentication\n\n## Live Development\n\nTo run in live development mode, run `wails dev` in the project directory. This will launch a Vite development server, providing very fast hot reloads for your frontend changes. If you want to develop in a browser and access your Go methods, there is also a dev server available at [http://localhost:34115](http://localhost:34115). Connect to this in your browser, and you can call your Go code from the devtools.\n\n```bash\n# Install dependencies\ncd frontend\nnpm install\ncd ..\n\n# Run in development mode\nwails dev\n```\n\n## Building\n\nTo build a redistributable, production mode package:\n\n```bash\nwails build\n```\n\nThe executable will be in the `build/bin` directory.\n\n### Platform-Specific Builds\n\n```bash\n# For Linux\nwails build\n\n# For Windows (cross-compile from Linux/Mac)\nGOOS=windows GOARCH=amd64 wails build\n\n# For macOS (on Mac only)\nwails build -platform darwin/universal\n```\n\n## Usage\n\n### Searching for Videos\n\n1. Enter a search term in the search box\n2. Click the search button or press Enter\n3. Browse the results and click \"Watch\" on any video\n\n### Playing a Video from URL\n\nYou can paste any YouTube URL format:\n- Standard: `https://www.youtube.com/watch?v=VIDEO_ID`\n- Shortened: `https://youtu.be/VIDEO_ID`\n- Embed: `https://www.youtube.com/embed/VIDEO_ID`\n- Shorts: `https://www.youtube.com/shorts/VIDEO_ID`\n\nThe app will automatically extract the video ID and play it.\n\n### Keyboard Shortcuts\n\n- `Escape` - Close video player or settings modal\n- `Enter` - Submit search (when in search box)\n- Click the title to reload the app\n\n## Troubleshooting\n\n### \"Unable to read client secret file\"\n\n**Cause**: The `client_secret.json` file is missing or in the wrong location.\n\n**Solution**: \n1. Ensure `client_secret.json` is in the same directory as the executable\n2. Check that the file is named exactly `client_secret.json` (not `.txt` or other extension)\n3. Verify the file contains valid JSON\n\n### Browser doesn't open for authentication\n\n**Cause**: Platform-specific browser opening might fail.\n\n**Solution**:\n1. Check the console output for the authentication URL\n2. Manually open the URL in your browser\n3. Complete the authentication flow\n\n### \"Error fetching videos\"\n\n**Possible causes**:\n- No internet connection\n- YouTube API quota exceeded (10,000 units/day for free tier)\n- Invalid OAuth token (delete `~/.credentials/youtube-go.json` and re-authenticate)\n\n**Solution**:\n1. Check your internet connection\n2. Wait 24 hours if quota is exceeded\n3. Delete cached credentials and re-authenticate\n\n## API Quota Limitations\n\nYouTube Data API has a quota of **10,000 units per day** for free tier:\n- Each search costs approximately 100 units\n- Each video details fetch costs 1 unit per video\n- This allows roughly 100 searches per day\n\nIf you exceed the quota, you'll need to wait 24 hours or upgrade to a paid plan in Google Cloud Console.\n\n## Privacy \u0026 Security\n\n- OAuth tokens are stored locally in `~/.credentials/youtube-go.json`\n- The app only requests **read-only** access to YouTube\n- No data is sent to any third-party servers\n- All API calls go directly to Google's YouTube API\n\n## Contributing\n\nContributions are welcome! Please feel free to submit issues or pull requests.\n\n## License\n\nThis project is open source and available under the MIT License.\n\n## Disclaimer\n\nThis project is not made by Google or YouTube, and it is not an alternative to YouTube. It is simply an app for people who want to keep using YouTube without getting distracted or addicted, like I did.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanishkbansode%2Fyoutubezen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftanishkbansode%2Fyoutubezen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanishkbansode%2Fyoutubezen/lists"}