{"id":51011764,"url":"https://github.com/hec-ovi/music","last_synced_at":"2026-06-21T03:31:22.868Z","repository":{"id":363000080,"uuid":"1261428395","full_name":"hec-ovi/music","owner":"hec-ovi","description":"Personal Music YT Player: a static, no-backend YouTube playlist player. Build playlists from video ids/links or an AI-agent bulk-import block; queue, shuffle, loop, reorder, seek, share links, optional audio-only mode. Plays via the official YouTube IFrame API (embeds only, no downloads); playlists live only in your browser's localStorage.","archived":false,"fork":false,"pushed_at":"2026-06-06T23:27:39.000Z","size":3700,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T00:13:40.987Z","etag":null,"topics":["agent-friendly","bulk-import","es-modules","github-pages","localstorage","music-player","no-backend","playlist","static-site","vanilla-js","vitest","youtube","youtube-iframe-api","youtube-player"],"latest_commit_sha":null,"homepage":"https://hec-ovi.github.io/music/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hec-ovi.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-06-06T17:09:34.000Z","updated_at":"2026-06-06T23:27:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hec-ovi/music","commit_stats":null,"previous_names":["hec-ovi/music"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hec-ovi/music","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hec-ovi%2Fmusic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hec-ovi%2Fmusic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hec-ovi%2Fmusic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hec-ovi%2Fmusic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hec-ovi","download_url":"https://codeload.github.com/hec-ovi/music/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hec-ovi%2Fmusic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34593128,"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-21T02:00:05.568Z","response_time":54,"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":["agent-friendly","bulk-import","es-modules","github-pages","localstorage","music-player","no-backend","playlist","static-site","vanilla-js","vitest","youtube","youtube-iframe-api","youtube-player"],"created_at":"2026-06-21T03:31:22.029Z","updated_at":"2026-06-21T03:31:22.863Z","avatar_url":"https://github.com/hec-ovi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Music YT Player\n\n**A static, no-backend YouTube playlist player.** Your library lives in your\nbrowser, never in the cloud. Paste ids or links, build lists, press play.\n\n### ▶ [Start using it now: hec-ovi.github.io/music](https://hec-ovi.github.io/music/)\n\nIt is live and runs entirely in your browser, nothing to install.\n*If you are an agent, read [`SKILL.md`](SKILL.md) first.*\n\n[![demo](https://img.shields.io/badge/demo-live-black.svg)](https://hec-ovi.github.io/music/)\n[![play a sample list](https://img.shields.io/badge/%E2%96%B6-sample%20list-black.svg)](https://hec-ovi.github.io/music/?playlist=Sample%20List%2C%20%5B2frers%20-%20EYES%20ON%20US%20%7C%20CsQ59uMYB_Y%2C%20NAVARA%20-%20FALLEN%20ANGEL%20%7C%20sWd8bc_LkqM%2C%20Sano%20-%20SET%20ME%20FREE%20%7C%20e1QIqXmZ2os%2C%20ruindkid%20-%20Bad%20Pitch%20For%20You%20%7C%20UhaU1ZVu9v0%2C%20KORZIX%20-%20ascend%20%7C%20ibPYPD8Hl4Q%2C%20Oxlo%20-%20Anesthesia%20%7C%20f59m5Pugdw4%2C%20Pat%20-%20Shotgun%20%7C%209fHjcTKV-kg%5D)\n[![player: YouTube IFrame API](https://img.shields.io/badge/player-YouTube%20IFrame%20API-black.svg)](https://developers.google.com/youtube/iframe_api_reference)\n[![license: MIT](https://img.shields.io/badge/license-MIT-black.svg)](./LICENSE)\n![backend: none](https://img.shields.io/badge/backend-none-black.svg)\n![runtime deps: 0](https://img.shields.io/badge/runtime%20deps-0-black.svg)\n![vanilla JS + ES modules](https://img.shields.io/badge/vanilla-JS%20%2B%20ES%20modules-black.svg)\n![tests: 100 passing](https://img.shields.io/badge/tests-100%20passing-black.svg)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"docs/demo_redesign.gif\" alt=\"Redesigned hero and player UI\"\u003e\u003c/td\u003e\n    \u003ctd width=\"50%\"\u003e\u003cimg src=\"docs/demo.gif\" alt=\"Building and playing a list\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eHero and player\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003csub\u003eBuilding and playing a list\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nThe page can be public; your playlists never are. They live only in your\nbrowser's `localStorage`, so there is nothing to host, no account, and nothing\nto leak. On top of the standard YouTube video you get a thumbnail-first queue\nand full transport controls, or flip the video off and use it as background audio.\n\n## Features\n\n**Build**\n- Paste a `Title, [songs]` block (or a bare title for an empty list), or load\n  one or more `.md`/`.txt` files in a single pick. Duplicate names are refused,\n  never silently merged.\n- Add tracks by video id or any YouTube link, mixed and comma or newline\n  separated. Bare ids auto-name from the real YouTube title.\n- Reorder by drag or arrows, rename, remove. Thumbnails for every list and track.\n\n**Play**\n- Thumbnail queue, play / pause / stop, prev / next, seek, shuffle, loop, volume.\n- Video shows by default; \"Show video\" off turns it into pure background audio.\n- **Play all** merges your whole library into one queue, badged in red with the\n  list each track is actually coming from. Shuffle then mixes everything.\n- Filter box: type, hit Enter, and it jumps straight to the first match.\n- Winamp-style keyboard shortcuts that ignore text fields.\n\n**Keep and share**\n- Everything persists to `localStorage`; one button wipes it clean.\n- Export a list as a `.md` file or clipboard text, share it as a self-contained\n  URL that rebuilds in someone else's browser, or download your entire library\n  as a `playlists.zip` (one `.md` per list).\n\n## Using it\n\n**Use it live at: [hec-ovi.github.io/music](https://hec-ovi.github.io/music/)**\n\nOpen the page, open the **Playlists** drawer, and paste into the box: a full\n`Playlist Title, [songs]` block, or just a title for an empty list (or import a\nfile). Paste ids/links into the **Add** field, then click a track to play. Every\nrow has its own collapse / rename / delete controls; the \"?\" button opens a quick\nvisual guide.\n\nKeyboard shortcuts follow the old Winamp layout. They listen page-wide and skip\ntext fields. (Click into the embedded video and YouTube captures keys until you\nclick back out.)\n\n```\nZ  previous          C  pause\nX  restart current   V  stop\nB  next              Space  pause / resume\n```\n\nAsk an AI agent to turn a list of songs into the import format and paste the\nresult. Agents should read [`SKILL.md`](SKILL.md); the full reference is in\n[`PLAYLISTS_FORMAT.md`](PLAYLISTS_FORMAT.md).\n\n## Run it locally\n\nOnly needed if you want to hack on it; otherwise just use the live link above.\n\n```bash\nnpm install\nnpm test                  # vitest + jsdom: 100 unit and end-to-end UI tests\npython3 -m http.server 8137   # then open http://localhost:8137/\n```\n\nES modules need HTTP, so `file://` will not work.\n\n## How it is built\n\nNo build step, no framework, zero runtime dependencies.\n\n- `index.html` is the GitHub Pages entry point; `main.js` mounts the app and\n  wires the real YouTube IFrame player.\n- `app.js` renders the UI and runs playback. `store.js` is a pure, DOM-free layer\n  for `localStorage`, URL/thumbnail helpers, and id/link parsing, tested on its own.\n- `styles.css` is the styling.\n\nPublish straight from the `main` branch root:\n\n```bash\ngh api repos/\u003cowner\u003e/music/pages --method POST -f source.branch=main -f source.path=/\n```\n\nThe repo can stay public: it carries no personal playlist data.\n\n## Notes and license\n\nPlayback runs through YouTube's official [IFrame Player API](https://developers.google.com/youtube/iframe_api_reference),\nso videos stream from YouTube with their ads and embedding settings intact. This\nrepo hosts no audio, video, or playlists (only fake placeholder ids), and you are\nresponsible for adding only what you have the right to watch. Not affiliated with\nYouTube or Google. MIT, no warranty; see [`LICENSE`](LICENSE).\n\u003c/content\u003e\n\u003c/invoke\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhec-ovi%2Fmusic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhec-ovi%2Fmusic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhec-ovi%2Fmusic/lists"}