{"id":16397524,"url":"https://github.com/marcoradocchia/youterm","last_synced_at":"2025-03-21T02:32:31.852Z","repository":{"id":37912498,"uuid":"443392271","full_name":"marcoradocchia/youterm","owner":"marcoradocchia","description":"CLI tool to search for YouTube videos and play selected video/audio via MPV","archived":false,"fork":false,"pushed_at":"2022-06-14T14:34:50.000Z","size":144,"stargazers_count":19,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T02:01:41.653Z","etag":null,"topics":["cli","mpv","music","video","youtube","youtube-api-v3","youtube-dl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcoradocchia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"marcoradocchia","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-12-31T17:08:18.000Z","updated_at":"2024-04-11T18:56:09.000Z","dependencies_parsed_at":"2022-08-20T07:20:36.952Z","dependency_job_id":null,"html_url":"https://github.com/marcoradocchia/youterm","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoradocchia%2Fyouterm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoradocchia%2Fyouterm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoradocchia%2Fyouterm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcoradocchia%2Fyouterm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcoradocchia","download_url":"https://codeload.github.com/marcoradocchia/youterm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244102760,"owners_count":20398386,"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","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":["cli","mpv","music","video","youtube","youtube-api-v3","youtube-dl"],"created_at":"2024-10-11T05:10:19.660Z","updated_at":"2025-03-21T02:32:31.370Z","avatar_url":"https://github.com/marcoradocchia.png","language":"Python","funding_links":["https://github.com/sponsors/marcoradocchia"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eYouTerm\u003c/h1\u003e\n\n  ![GitHub releases](https://img.shields.io/github/downloads/marcoradocchia/youterm/total?color=%23a9b665\u0026logo=github)\n  ![GitHub source size](https://img.shields.io/github/languages/code-size/marcoradocchia/youterm?color=ea6962\u0026logo=github)\n  ![GitHub open issues](https://img.shields.io/github/issues-raw/marcoradocchia/youterm?color=%23d8a657\u0026logo=github)\n  ![GitHub open pull requests](https://img.shields.io/github/issues-pr-raw/marcoradocchia/youterm?color=%2389b482\u0026logo=github)\n  ![GitHub sponsors](https://img.shields.io/github/sponsors/marcoradocchia?color=%23d3869b\u0026logo=github)\n  ![PyPi downloads](https://img.shields.io/pypi/dm/youterm?color=d4be98\u0026label=pypi%20downloads\u0026logo=pypi\u0026logoColor=fff)\n  ![PyPi version](https://img.shields.io/pypi/v/youterm?logo=pypi\u0026logoColor=fff)\n  ![GitHub license](https://img.shields.io/github/license/marcoradocchia/youterm?color=%23e78a4e)\n\u003c/div\u003e\n\nCLI tool to search for [YouTube](https://youtube.com) videos and play selected\nvideo/audio via `mpv`.\n\n![yotuerm](assets/youterm.png)\n\n## Requirements\n\n### YouTube API\n\n`youterm` retrieves video informations using YouTube APIs. An API key is\nneeded. You can obtain one registering a Google developer profile, adding a\nproject and creating an API key adding the *YouTube Data API v3* service at\n[this](https://console.cloud.google.com/apis/dashboard) link.\n\n### Dependencies\n\n`youterm` does not rely on external Python libraries, although it uses\nexternal programs to provide audio/video streaming:\n\n- `mpv`\n- `yt-dlp` or `youtube-dl`\n\n### Optional dependencies\n\nTo store the *YouTube* API safely the *unix standard password manager* `pass`\nis required. `youterm` looks for one password entry containing the API key at\n`api/youtube`, or any custom specified entry[^1], in the password-store[^2].\nAlternatively you can pass the API key to `youterm` as a command line argument\n(see [Usage](#Usage)) or using a config file[^3] (see\n[Configuration](#Configuration)).\n\n[^1]: You can specify custom `pass` entries for the API key using a config file\n  (see [Configuration](#Configuration))\n[^2]: Create entry using `pass insert api/youtube` or `pass insert \u003centry\u003e` for\n  custom entry (where `\u003centry\u003e` is a placeholder for the actual entry name)\n[^3]: *Not recommended*\n\n## Installation\n\nInstall `youterm` using `pip`:\n\n```bash\npip3 install youterm\n```\n\n## Usage\n\nInvoking `youterm` with no flags defaults to audio only. Below the usage:\n\n```\nusage: youterm [-h] [-v] [-r \u003cn\u003e] [-a \u003capi_key\u003e] [-q \u003cresolution\u003e]\n\nCLI tool to search for YouTube videos and play selected audio/video via MPV\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --video           Play video\n  -r \u003cn\u003e, --results \u003cn\u003e\n                        Number of search results displayed\n  -a \u003capi_key\u003e, --api \u003capi_key\u003e\n                        YouTube Data API v3 key\n  -q \u003cresolution\u003e, --quality \u003cresolution\u003e\n                        Choose video quality (if not available choose closest lower)\n```\n\n## Configuration\n\nYou can specify your default options for `youterm` using a config file[^4]\nlocated at:\n[^4]: `ini` file structure\n\n- `~/.config/youterm/config` on **Linux** and Unix based systems (following\n  the XDG Base Directory specifications)\n- `C:\\Users\\\u003cusername\u003e\\AppData\\Roaming\\youterm\\config` on **Windows** systems\n  (where `\u003cusername\u003e` is a placeholder for the actual user name)\n\nBelow follows a configuration template:\n\n```ini\n[api]\n# YouTube Data API v3 key (can be overridden using CLI argument)\nkey = \u003capi_key\u003e\n# pass entry containing the API key (if you want to use pass to store the key)\n# if not set defaults to: \"api/youtube\"\npass_entry = \u003cpass_entry\u003e\n\n[search]\n# default number of search results (can be overridden using CLI argument)\n# if not set defaults to: 5\nresults = \u003cnum\u003e\n\n[video]\n# default video resolution (can be overridden using CLI argument)\n# if not set defaults to: bestvideo\n# valid options are: 144, 240, 360, 480, 720, 1080, 1440, 2160\nquality = \u003cvideo_resolution\u003e\n```\n\n## Changelog\n\nFor the complete changelog see [CHANGELOG.md](./CHANGELOG.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoradocchia%2Fyouterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcoradocchia%2Fyouterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcoradocchia%2Fyouterm/lists"}