{"id":51125362,"url":"https://github.com/zblauser/ytcli","last_synced_at":"2026-06-25T07:01:34.364Z","repository":{"id":361763541,"uuid":"1254884365","full_name":"zblauser/ytcli","owner":"zblauser","description":"Youtube music from the terminal, no auth.","archived":false,"fork":false,"pushed_at":"2026-06-01T05:52:56.000Z","size":11392,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T07:24:04.463Z","etag":null,"topics":["audio-player","cli","music","music-player","terminal","terminal-music-player","tui","youtube","youtube-music","youtube-music-tui","yt-dlp","zig"],"latest_commit_sha":null,"homepage":"","language":"Zig","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/zblauser.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":"2026-05-31T05:46:01.000Z","updated_at":"2026-06-01T05:54:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zblauser/ytcli","commit_stats":null,"previous_names":["zblauser/ytcli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zblauser/ytcli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zblauser%2Fytcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zblauser%2Fytcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zblauser%2Fytcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zblauser%2Fytcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zblauser","download_url":"https://codeload.github.com/zblauser/ytcli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zblauser%2Fytcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34763482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"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":["audio-player","cli","music","music-player","terminal","terminal-music-player","tui","youtube","youtube-music","youtube-music-tui","yt-dlp","zig"],"created_at":"2026-06-25T07:01:33.560Z","updated_at":"2026-06-25T07:01:34.339Z","avatar_url":"https://github.com/zblauser.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ytcli\nTUI client for yt music\u003cbr\u003e\nsearch, browse, and play from your terminal\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/ytcli.gif\" alt=\"ytcli searching, browsing, and playing\" width=\"82%\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/tag/zblauser/ytcli?sort=semver\u0026style=flat-square\u0026labelColor=500\u0026color=000\u0026label=version\" alt=\"version\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-000?style=flat-square\u0026labelColor=500\" alt=\"MIT\"/\u003e\n\u003c/p\u003e\n\nzig 0.16, single binary\n- `libmpv` for audio\n- shells out to `curl` and\n`yt-dlp`\u003cbr\u003e\n- astats lavfi filter for visualizer via `ffmpeg`\n\n## version\n\u003cb\u003ev0.1.2\u003c/b\u003e\n+ failures log to `~/.local/share/ytcli/log` (timestamp + cause)\n+ ctrl+c restores cleanly to terminal in all cases\n+ play video ids beginning with `-` (yt-dlp `--` arg fix)\n+ fix freeBSD build (terminal size via std, not `\u003csys/ioctl.h\u003e`)\n+ readme fix: `brew install mpv` already pulls in `yt-dlp`, `libmpv-dev` however does not\n\u003cdetails\u003e\n\u003csummary\u003eprevious\u003c/summary\u003e\u003cbr\u003e\n\n\u003cb\u003ev0.1.1\u003c/b\u003e\u003cbr\u003e\n+ github actions for release builds\u003cbr\u003e\n+ prebuilt binaries: macOS, linux, freeBSD\u003cbr\u003e\n+ hardened temp writes (mkstemp, 0600)\n\n\u003cb\u003ev0.1\u003c/b\u003e\u003cbr\u003e\n+ autoplays through result list\n+ drills into albums\n+ handful of color themes\n\u003c/details\u003e\n\n## build/install\n```sh\nzig build                              # → zig-out/bin/ytcli\nzig build install --prefix ~/.local    # → ~/.local/bin/ytcli\n```\n## dependencies\n\n```sh\ninstall ex.\nbrew install mpv ffmpeg                # macOS (mpv pulls in yt-dlp)\napt install libmpv-dev yt-dlp ffmpeg   # Debian/Ubuntu\n```\n\u003cbr\u003e\n\n\u003e **[ ! ]** currently requires `mpv`, `ffmpeg` and `yt-dlp` particularly on PATH\n\n## releases\n\nmacOS, Linux, and FreeBSD binaries are attached to each [release](../../releases). windows: run under WSL (no native build currently).\n\n## run\n```sh\nytcli               # TUI\nytcli \u003cquery\u003e       # play first hit\nytcli -s \u003cquery\u003e    # search, print results\nytcli history       # past queries\nytcli --theme cyan  # red (default) | cyan | mono | dracula | nord | gruvbox\nytcli --themes      # list themes\nytcli -h | -v\n```\n\n## commands\n\nmade an effort to use commands that felt intuitive\n\n\u003cdetails\u003e\n\u003csummary\u003eview\u003c/summary\u003e\u003cbr\u003e\n\n**typing:**\u003cbr\u003e\n- text to query `↑/↓`\n- pick suggestion `tab`/`→`\n- accept completion `⏎` search\n- `esc` clear\n- `Ctrl+T` cycle filter (all/songs/videos/albums/artists)\n\n**results:**\n - `j/k` or `↑/↓` move\n - `g/G` top/end\n - `Ctrl+F/B` page\n -  `h`/`esc` back\n\n**playback/anytime:**\n- `Ctrl+P`/`space` pause\n- `Ctrl+N` next\n- `Ctrl+S` stop\n- `[`/`]` seek ±10s\n- `{`/`}` ±60s\n- `-`/`=` volume ±5\n- `Ctrl+Y` theme\n\u003c/details\u003e\n\n## storage/config\n- `$XDG_DATA_HOME/ytcli/history` - query log (falls back to `~/.local/share/ytcli/history`).\n- `$XDG_DATA_HOME/ytcli/log` - timestamped failures (search/album/stream) with the underlying error and any `curl`/`yt-dlp` stderr. check here first when something says `(see log)`.\n- `$XDG_CONFIG_HOME/ytcli/config` - `key=value` settings.\n\nhistory is just newline-delimited text - `grep`/`cat` it, or seed it so the TUI autocompletes your favorites from the first keystroke:\n```sh\nex.\nprintf '%s\\n' \"elephant gym\" \"autechre\" \"john zorn\" \u003e\u003e ~/.local/share/ytcli/history\ngrep -i jazz ~/.local/share/ytcli/history\n```\n\u003e [ ! ] loads newest-first and dedups, so re-seeding or reordering is harmless.\n\n`ytcli -s \u003cquery\u003e` prints `title — artist [video_id]`, one per line; pipe it anywhere. `YTCLI_THEME` sets the theme without a flag.\n\n\u003e [ ! ] requests written to `/tmp/ytcli_body*` (mkstemp, 0600, unlinked after) per call + audio streamed/buffered via mpv; not written to disk.\n\n## visualizer\nsimple spectrum bars via `astats` lavfi filter\u003cbr\u003e\ndB to linear/modulated per bar - *not a true per-band FFT*\n\n## contribution\nplease feel free to contribute, not a guarantee it will be merged\u003cbr\u003e\n\n\u003e [ ! ] thank you for your attention\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzblauser%2Fytcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzblauser%2Fytcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzblauser%2Fytcli/lists"}