[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82043":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":32,"discoverSource":33},82043,"apple-music-obs-overlay","m-shintaro\u002Fapple-music-obs-overlay","m-shintaro","A now-playing overlay for OBS on macOS & Windows — Apple Music, Spotify, YouTube, and more — with artwork, track info, and a progress bar.","",null,"Python",48,1,39,0,2,6,0.9,"MIT License",false,"main",true,[24,25,26,27,28],"apple-music","obs","obs-studio","overlay","streaming","2026-06-12 02:04:22","\u003Cdiv align=\"center\">\n\n# OBS Apple Music Progress Bar\n\nA lightweight, transparent OBS overlay that shows the track currently playing in\n**Apple Music \u002F now-playing media sessions** — complete with album artwork and a live progress bar.\n\n![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fm-shintaro\u002Fapple-music-obs-overlay)\n![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%7C%20Windows-lightgrey)\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.9%2B-blue)\n![OBS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOBS-Browser%20Source-302E31)\n![Dependencies](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdependencies-optional%20Windows%20extra-brightgreen)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green)\n\n**English** · [日本語](README.ja.md)\n\n\u003Cimg src=\"docs\u002Fdemo.png\" alt=\"OBS Apple Music Progress Bar demo\" width=\"100%\">\n\n\u003C\u002Fdiv>\n\n---\n\n> **Windows users:** no Python required — just grab the portable ZIP from the\n> [**latest release**](https:\u002F\u002Fgithub.com\u002Fm-shintaro\u002Fapple-music-obs-overlay\u002Freleases\u002Flatest)\n> and double-click the executable. See [Windows portable ZIP](#windows-portable-zip-no-python-required).\n\n## Overview\n\nA small Python backend polls the active provider for the current track — title,\nartist, album, playback position, duration, and artwork — and writes it to\n`runtime\u002Fnowplaying.json`. The bundled `overlay.html` reads that platform-neutral\nfile and renders a clean, transparent overlay you can drop straight into an OBS\n**Browser Source**.\n\nmacOS uses Music.app through the built-in `osascript` and `sips` commands.\nWindows uses the OS media session API (SMTC) through an optional Python extra.\n\n## Features\n\n- Live \"now playing\" display for macOS Music \u002F Apple Music and Windows media sessions\n- Fully transparent overlay, ready for an OBS Browser Source\n- Real-time progress bar with elapsed and total time\n- Album artwork from Music.app or Windows SMTC when available, with an automatic iTunes Search API fallback\n- Built-in scaling presets for 1080p and 4K layouts\n- Demo mode for previewing the layout without playing anything\n\n## Requirements\n\n- macOS with Music.app \u002F Apple Music, or Windows 10\u002F11 with Apple Music for Windows\n- Python 3.9 or later _(not needed for the Windows portable ZIP)_\n- OBS Studio\n\n> macOS does not require additional Python packages. Windows support requires\n> the optional `windows` extra, which installs `winsdk`.\n\n## Quick Start\n\nClone the repository and start the local server:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fm-shintaro\u002Fapple-music-obs-overlay.git\ncd apple-music-obs-overlay\npython3 nowplaying.py\n```\n\nThen, in OBS, add a **Browser Source** and point it at:\n\n```text\nhttp:\u002F\u002Flocalhost:8765\u002Foverlay.html\n```\n\nRecommended source size:\n\n| Resolution | Minimum size |\n| ---------- | ------------ |\n| 1080p      | `896 × 300`  |\n| 4K         | `1792 × 600` |\n\nThe area around the card is transparent, so a larger OBS source size is perfectly fine.\n\n### Windows setup\n\nPrefer not to install Python? Skip to the\n[Windows portable ZIP](#windows-portable-zip-no-python-required) below.\n\nOtherwise, from the repository directory, install the optional Windows dependency once:\n\n```powershell\npy -3 -m pip install \".[windows]\"\n```\n\nThen start the same local server:\n\n```powershell\npy -3 nowplaying.py\n```\n\nThe OBS Browser Source URL is the same on both platforms:\n\n```text\nhttp:\u002F\u002Flocalhost:8765\u002Foverlay.html\n```\n\n### Windows portable ZIP (no Python required)\n\nYou don't need to install Python on Windows — download the portable build from the\nlatest release:\n\n1. Open the [**Releases** page](https:\u002F\u002Fgithub.com\u002Fm-shintaro\u002Fapple-music-obs-overlay\u002Freleases\u002Flatest).\n2. Under **Assets**, download `OBSAppleMusicProgressBar-\u003Cversion>-windows-\u003Carch>.zip`.\n3. Extract the ZIP anywhere, then double-click `OBSAppleMusicProgressBar.exe`.\n\nThe console window prints the OBS Browser Source URL:\n\n```text\nhttp:\u002F\u002Flocalhost:8765\u002Foverlay.html\n```\n\nThe portable build writes its `runtime\u002F` folder next to the executable.\n\n\u003Cdetails>\n\u003Csummary>Building the portable ZIP yourself\u003C\u002Fsummary>\n\nTo build the portable ZIP locally on Windows:\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -File .\\scripts\\build-windows.ps1\n```\n\nThe ZIP is written to `dist\u002FOBSAppleMusicProgressBar-\u003Cversion>-windows-\u003Carch>.zip`.\n\n\u003C\u002Fdetails>\n\n## Usage\n\n### 4K and custom scaling\n\nFor 4K streams, append `?profile=4k` to the URL:\n\n```text\nhttp:\u002F\u002Flocalhost:8765\u002Foverlay.html?profile=4k\n```\n\nOr set any custom scale factor:\n\n```text\nhttp:\u002F\u002Flocalhost:8765\u002Foverlay.html?scale=1.75\n```\n\n### Preview without playback\n\nPreview the layout without relying on a media provider:\n\n```bash\npython3 nowplaying.py --demo\n```\n\nWrite the files to `runtime\u002F` once and exit:\n\n```bash\npython3 nowplaying.py --once\n```\n\n### Command-line options\n\n| Option                 | Default     | Description                                     |\n| ---------------------- | ----------- | ----------------------------------------------- |\n| `--provider`           | `auto`      | Provider: `auto`, `macos`, `windows`, or `demo` |\n| `--port`               | `8765`      | HTTP server port                                |\n| `--bind`               | `127.0.0.1` | HTTP server bind address                        |\n| `--interval`           | `0.25`      | Provider polling interval, in seconds           |\n| `--country`            | `JP`        | iTunes Search API country code                  |\n| `--no-network-artwork` | off         | Disable the iTunes Search API artwork fallback  |\n| `--demo`               | off         | Alias for `--provider demo`                     |\n| `--once`               | off         | Write files once and exit                       |\n| `--diagnose-artwork`   | off         | Diagnose provider artwork export                |\n\n## macOS Permissions\n\nOn first run, macOS may ask whether Terminal or Python is allowed to control Music.app.\n\nIf you accidentally denied it, re-enable access under\n**System Settings → Privacy & Security → Automation** and allow Terminal \u002F Python\nto control Music.\n\n## Artwork\n\nArtwork is resolved in the following order:\n\n1. **Provider artwork** — direct Music.app export on macOS, or SMTC thumbnail data on Windows.\n2. **iTunes Search API fallback** — a lookup by `artist + title`, used only when\n   provider artwork fails.\n\n`runtime\u002Fnowplaying.json` includes `artworkSource` and `artworkError` fields.\n`artworkSource: \"music\"` means the macOS direct export succeeded,\n`artworkSource: \"smtc\"` means Windows SMTC thumbnail data was used, and\n`artworkSource: \"itunes\"` means the fallback was used.\n\nDiagnose artwork retrieval:\n\n```bash\npython3 nowplaying.py --diagnose-artwork\n```\n\nDisable the network fallback entirely:\n\n```bash\npython3 nowplaying.py --no-network-artwork\n```\n\n## Generated Files\n\nWhile running, the tool writes the following files into `runtime\u002F`:\n\n| File                 | Description                                        |\n| -------------------- | -------------------------------------------------- |\n| `nowplaying.json`    | Track data consumed by the Browser Source          |\n| `nowplaying.txt`     | Plain-text output, usable as an OBS Text Source    |\n| `cover_direct.*`     | Artwork exported directly from Music.app           |\n| `cover_windows.*`    | Artwork exported from Windows SMTC thumbnail data  |\n| `cover_fallback.jpg` | Artwork fetched via the iTunes Search API fallback |\n\n> Everything under `runtime\u002F` is ignored by `.gitignore`.\n\nThe JSON schema is documented in [`docs\u002Fnowplaying-json.md`](docs\u002Fnowplaying-json.md).\n\n## Troubleshooting\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Nothing appears in OBS\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- Make sure Music.app is running.\n- The overlay does not update while playback is stopped.\n- Confirm the Browser Source URL is `http:\u002F\u002Flocalhost:8765\u002Foverlay.html`.\n- Run `python3 nowplaying.py --demo` to verify the overlay layout.\n- On Windows, confirm `py -3 -m pip install \".[windows]\"` has been run (or that you launched the portable EXE) and Apple Music exposes a media session.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Artwork does not appear\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n- Run `python3 nowplaying.py --diagnose-artwork` to inspect provider artwork diagnostics.\n- The iTunes Search API fallback requires network access.\n- Use `--no-network-artwork` if you would rather not send track metadata over the network.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>The port is already in use\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nStart the server on a different port:\n\n```bash\npython3 nowplaying.py --port 8766\n```\n\nThen update the OBS Browser Source URL to match:\n\n```text\nhttp:\u002F\u002Flocalhost:8766\u002Foverlay.html\n```\n\n\u003C\u002Fdetails>\n\n## Privacy\n\nThis tool reads playback information from your local Music.app on macOS or from\nthe Windows system media session API on Windows, then writes it to the local\n`runtime\u002F` directory.\n\nBy default, when provider artwork retrieval fails, the track title and artist are sent to\nthe iTunes Search API to look up fallback artwork. Pass `--no-network-artwork` to\ndisable this behavior.\n\n## Contributing\n\nIssues and pull requests are welcome. When reporting a bug, it helps to include your\nOS version, OBS version, provider (`auto`, `macos`, `windows`, or `demo`), and the\noutput of `python3 nowplaying.py --diagnose-artwork`.\n\n## License\n\nThis project is released under the MIT License. See [LICENSE](LICENSE) for details.\n\n## Credits\n\n- **Creator** — shin ([GitHub: @m-shintaro](https:\u002F\u002Fgithub.com\u002Fm-shintaro), [X: @xyzmiku](https:\u002F\u002Fx.com\u002Fxyzmiku))\n- [OBS Studio](https:\u002F\u002Fobsproject.com\u002F) — streaming software and Browser Source runtime\n- Apple Music \u002F Music.app — source of playback information on macOS\n- Windows Media Control \u002F SMTC — source of playback information on Windows\n- [iTunes Search API](https:\u002F\u002Fdeveloper.apple.com\u002Flibrary\u002Farchive\u002Fdocumentation\u002FAudioVideo\u002FConceptual\u002FiTuneSearchAPI\u002F) — fallback artwork lookup\n\n---\n\n> **Disclaimer** — This is not an official project by Apple Inc. or the OBS Project.\n> Apple, Apple Music, iTunes, and macOS are trademarks of Apple Inc. OBS and OBS Studio\n> are names of the OBS Project. Track metadata and artwork belong to their respective\n> rights holders.\n","该项目是一个适用于macOS和Windows的OBS实时播放覆盖插件，支持Apple Music、Spotify、YouTube等音乐平台，展示当前播放曲目的专辑封面、歌曲信息及进度条。其核心功能包括通过Python后端获取并更新当前播放信息，并将这些信息以透明HTML页面的形式呈现于OBS的浏览器源中。对于macOS用户，该插件利用内置的`osascript`与`sips`命令访问Music.app；而对于Windows用户，则可通过系统媒体会话API或预编译的可执行文件（无需安装Python）来实现类似功能。此项目特别适合需要在直播或录制过程中显示正在播放音乐信息的内容创作者使用。","2026-06-11 04:07:33","CREATED_QUERY"]