{"id":13559706,"url":"https://github.com/ccgauche/ytermusic","last_synced_at":"2025-04-03T15:30:54.331Z","repository":{"id":47460755,"uuid":"482975816","full_name":"ccgauche/ytermusic","owner":"ccgauche","description":"An in terminal youtube music client with focus on privacy, simplicity and performance","archived":false,"fork":false,"pushed_at":"2025-02-24T13:50:28.000Z","size":6319,"stargazers_count":435,"open_issues_count":40,"forks_count":20,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-24T14:42:35.098Z","etag":null,"topics":["music-player","rust","terminal","tui","youtube","youtube-player"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccgauche.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":"2022-04-18T19:45:08.000Z","updated_at":"2025-02-24T13:50:34.000Z","dependencies_parsed_at":"2023-12-06T11:25:41.456Z","dependency_job_id":"3ba03e35-7d9d-420f-8bc1-7aa47ae69da8","html_url":"https://github.com/ccgauche/ytermusic","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccgauche%2Fytermusic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccgauche%2Fytermusic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccgauche%2Fytermusic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccgauche%2Fytermusic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccgauche","download_url":"https://codeload.github.com/ccgauche/ytermusic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247027728,"owners_count":20871578,"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":["music-player","rust","terminal","tui","youtube","youtube-player"],"created_at":"2024-08-01T13:00:31.530Z","updated_at":"2025-04-03T15:30:49.317Z","avatar_url":"https://github.com/ccgauche.png","language":"Rust","readme":"# YTerMusic\n\n![YTeRMUSiC](./assets/banner/YTeRMUSiC.png \"YTeRMUSiC\")\n\nYTerMusic is a TUI based Youtube Music Player that aims to be as fast and simple as possible.\n\n## Screenshots\n\u003cp\u003e\n  \u003cimg\n  src=\"./assets/screenshots/Choose-A-Playlist.png\"\n  alt=\"Choose a playlist\"\n  title=\"Choose a Playlist\"\n  /\u003e\n  \u003cimg\n  src=\"./assets/screenshots/Playlist-All.gif\"\n  alt=\"Playlist RGB\"\n  title=\"Playlist RGB\"\n  /\u003e\n\u003c/p\u003e\n\n\n## Features and upcoming features\n\n- Play your Youtube Music Playlist and Supermix.\n- Memory efficient (Around 20MB of RAM while fully loaded)\n- Cache all downloads and store them\n- Work even without connection (If musics were already downloaded)\n- Automatic background download manager\n\t### Check List \n\t- [x] Playlist selector\n\t- [x] Error message display in the TUI\n\t- [x] Enable connection less music playing\n\t- [ ] Cache limit to not exceed some given disk space\n\t- [x] A download limit to stop downloading after the queue is full\n\t- [x] Mouse support\n\t- [x] Search\n\t- [x] Custom theming (You can use hex! #05313d = ![05313d](./assets/hex/05313d.png \"#05313d\") )\n\n## Install\n\u003e [!TIP]\n\u003e 3rd party AUR packages are available [here](https://aur.archlinux.org/packages?O=0\u0026K=ytermusic).\n\n- Download the latest version from [releases](https://github.com/ccgauche/ytermusic/releases/latest).\n\t### Linux\n\tInstall the following libraries: \n\t```sh\n\tsudo apt install alsa-tools libasound2-dev libdbus-1-dev pkg-config\n\t```\n- Use `cargo` to install the latest version\n\t```sh\n\tcargo install ytermusic --git https://github.com/ccgauche/ytermusic\n\t```\n## Setup\n\u003e [!IMPORTANT] \n\u003e If you're using Firefox enable the \"Raw\" switch so the cookie isn't mangled.\n\u003e ![Firefox Raw Switch](./assets/screenshots/Firefox-Raw-Switch.png \"Firefox Raw Switch\")\n\n- Give `ytermusic` authentication to your account, by copying out the headers\n\t1. Open the https://music.youtube.com website in your browser\n\t2. Open the developer tools (\u003ckbd\u003eF12\u003c/kbd\u003e or \u003ckbd\u003eFn\u003c/kbd\u003e + \u003ckbd\u003eF12\u003c/kbd\u003e)\n\t3. Go to the Network tab\n\t4. Find the request to the `music.youtube.com` document `/` page\n\t5. Copy the `Cookie` header from the associated response request\n\t6. Create a `headers.txt` file in one of the checked [paths](https://docs.rs/directories/latest/directories/struct.ProjectDirs.html#method.config_dir).\n\t7. Create an entry like this :\n\t```\n\tCookie: \u003ccookie\u003e\n\tUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36\n\t```\n- Then you can start `ytermusic`\n\n## Building from source\n\n- Clone the repository\n- Install rust `https://rustup.rs` nightly\n- Run `cargo build --release`\n- The executable is in `target/release/ytermusic.exe` or `target/release/ytermusic`\n\n## Usage\n\n- Use your mouse to \u003ckbd\u003eclick\u003c/kbd\u003e in lists if your terminal has mouse support\n- Press \u003ckbd\u003eSpace\u003c/kbd\u003e to play/pause\n- Press \u003ckbd\u003eEnter\u003c/kbd\u003e to select a playlist or a music\n- Press \u003ckbd\u003ef\u003c/kbd\u003e to search\n- Press \u003ckbd\u003es\u003c/kbd\u003e to shuffle\n- Press \u003ckbd\u003eArrow Right\u003c/kbd\u003e or \u003ckbd\u003e\\\u003e\u003c/kbd\u003e to skip 5 seconds\n- Press \u003ckbd\u003eArrow Left\u003c/kbd\u003e or \u003ckbd\u003e\\\u003c\u003c/kbd\u003e to go back 5 seconds\n- Press \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eArrow Right\u003c/kbd\u003e or \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003e\\\u003e\u003c/kbd\u003e to go to the next song\n- Press \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eArrow Left\u003c/kbd\u003e or \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003e\\\u003c\u003c/kbd\u003e to go to the previous song\n- Press \u003ckbd\u003e+\u003c/kbd\u003e for volume up\n- Press \u003ckbd\u003e-\u003c/kbd\u003e for volume down\n- Press \u003ckbd\u003eArrow down\u003c/kbd\u003e to scroll down\n- Press \u003ckbd\u003eArrow up\u003c/kbd\u003e to scroll up\n- Press \u003ckbd\u003eESC\u003c/kbd\u003e to exit the current menu\n- Press \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e or \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e to exit\n\n## How to fix common issues\n\nIf you have any issues start by running:\n```sh\nytermusic --fix-db\n```\nThis will try to fix any issues with the cache database.\n\nIf you still have issues, you can clear the cache by running:\n```sh\nytermusic --clear-cache\n```\n\nIf you need to report an issue or find the files related to ytermusic:\n```sh\nytermusic --files\n```\n\n## Changelog\n\n```\nBeta b0.1.1\n - Added `hide_channels_on_homepage` with a default value of `true` to the config file\n - Added `hide_albums_on_homepage` with a default value of `false` to the config file\n - Fixed default style to support transparency\n - Added more color configuration options\n\nBeta b0.1.0\n - Fixed keyboard handling on windows\n - Improved error handling\n - Fixed youtube downloads\n - Made volume bar optional in config\n - Improved performance and updated dependencies\n\nAlpha a0.0.11\n\n- Added scrollable music view\n- Added shuffle functionality\n- Fixed some crashes while resizing the app\n- Added error messages for invalid headers or cookies\n- Added error messages for expired cookies\n\nAlpha a0.0.10\n\n- Speed up the download process\n- Fix the download limit\n- Fix music artists getting smashed together\n- Fix the download manager not downloading all musics\n- Improved stability\n- Improved logs and added timings to better debug\n\nAlpha a0.0.9:\n\n- Progress info for downloads\n- Mouse support on time bar\n- Vertical volume bar\n- Vertical volume bar supports mouse click\n- Scroll to change volume and skip in timeline\n- Improved the scrolling action\n- Fixed the bug where the time bar would not update\n- Debouncing the search input\n- Changed the location of the cache folder to follow the XDG Base Directory Specification (By @FerrahWolfeh #20)\n- More configuration options (By @ccgauche and @FerrahWolfeh)\n\nAlpha a0.0.8\n\n- Fixed scrolling\n- Fixed audio-glitches\n- Removed nightly flag use\n\nAlpha a0.0.7\n\n- Major changes in the API\n- Fixed log file bloat issue\n\nAlpha a0.0.6\n\n- Fix: Fix a bug where the app would crash when trying to play a song that was not downloaded\n- Fix: Improve the logger to not print the same error twice\n- Improved startup time\n- Fixed linux build\n- Changed how task are distributed to the thread pool\n\nAlpha a0.0.5\n\n- Added local database cache to improve IO accesses\n- Added searching for musics in the local library\n- Greatly improved render performance and RAM usage\n- Error management and error display in specific screen\n\nAlpha a0.0.4\n\n- Added menu navigation\n- Added searching for musics\n- Added new terminal backend\n\nAlpha a0.0.3\n\n- Mouse support to select playlist and music\n- Download limiter\n- Connection less music playing\n\nAlpha a0.0.2\n\n- Playlist selector\n- Improved error management\n- Improved TUI\n- Performance upgrade\n- Switch to Rustls instead of openSSL\n```","funding_links":[],"categories":["Others","Rust","rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccgauche%2Fytermusic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccgauche%2Fytermusic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccgauche%2Fytermusic/lists"}