{"id":14065111,"url":"https://github.com/BinaryBrain/Beetstream","last_synced_at":"2025-07-29T20:31:06.511Z","repository":{"id":38000116,"uuid":"324197902","full_name":"BinaryBrain/Beetstream","owner":"BinaryBrain","description":"Beets.io plugin that expose SubSonic API endpoints, allowing you to stream your music everywhere.","archived":false,"fork":false,"pushed_at":"2024-05-07T14:45:17.000Z","size":203,"stargazers_count":36,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-25T16:23:56.090Z","etag":null,"topics":["airsonic","beets","beets-plugin","hacktoberfest","music","subsonic","subsonic-server"],"latest_commit_sha":null,"homepage":"","language":"Python","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/BinaryBrain.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}},"created_at":"2020-12-24T16:39:58.000Z","updated_at":"2024-11-16T09:17:42.000Z","dependencies_parsed_at":"2024-05-07T15:49:30.992Z","dependency_job_id":null,"html_url":"https://github.com/BinaryBrain/Beetstream","commit_stats":{"total_commits":86,"total_committers":2,"mean_commits":43.0,"dds":0.03488372093023251,"last_synced_commit":"1d30f9712b869af040e37850ceb4c231500ad31a"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryBrain%2FBeetstream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryBrain%2FBeetstream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryBrain%2FBeetstream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BinaryBrain%2FBeetstream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BinaryBrain","download_url":"https://codeload.github.com/BinaryBrain/Beetstream/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228046075,"owners_count":17861089,"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":["airsonic","beets","beets-plugin","hacktoberfest","music","subsonic","subsonic-server"],"created_at":"2024-08-13T07:04:18.393Z","updated_at":"2024-12-04T04:30:45.831Z","avatar_url":"https://github.com/BinaryBrain.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Beetstream\n\nBeetstream is a [Beets.io](https://beets.io) plugin that exposes [SubSonic API endpoints](http://www.subsonic.org/pages/api.jsp), allowing you to stream your music everywhere.\n\n## Motivation\n\nI personally use Beets to manage my music library on a Raspberry Pi but when I was looking for a way to stream it to my phone I couldn't find any comfortable, suitable and free options.  \nI tried [AirSonic](https://airsonic.github.io) and [SubSonic](http://www.subsonic.org), [Plex](https://www.plex.tv) and some other tools but a lot of these solutions want to manage the library as they need (but I prefer Beets) and AirSonic/SubSonic were quite slow and CPU intensive and seemed to have a lot of overhead just to browse albums and send music files. Thus said, SubSonic APIs are good and implemented by a lot of different [clients](#supported-clients), so I decided to re-implement the server side but based on Beets database (and some piece of code).\n\n## Install \u0026 Run\n\nRequires Python 3.8 or newer.\n\n1) First of all, you need to [install Beets](https://beets.readthedocs.io/en/stable/guides/main.html):\n\n2) Install the dependancies with:\n\n```\n$ pip install beetstream\n```\n\n3) Enable the plugin for Beets in your config file `~/.config/beets/config.yaml`:\n```yaml\nplugins: beetstream\n```\n\n4) **Optional** You can change the host and port in your config file `~/.config/beets/config.yaml`.  \nYou can also chose to never re-encode files even if the clients asks for it with the option `never_transcode: True`. This can be useful if you have a weak CPU or a lot of clients.\n\nHere are the default values:\n```yaml\nbeetstream:\n  host: 0.0.0.0\n  port: 8080\n  never_transcode: False\n```\n\n5) Run with:\n```\n$ beet beetstream\n```\n\n## Clients Configuration\n\n### Authentication\n\nThere is currently no security whatsoever. You can put whatever user and password you want in your favorite app.\n\n### Server and Port\n\nCurrently runs on port `8080`. i.e: `https://192.168.1.10:8080`. You can configure it in `~/.config/beets/config.yaml`. Defaults are:\n```yaml\nbeetstream:\n  host: 0.0.0.0\n  port: 8080\n```\n\n## Supported Clients\n\nAll clients below are working with this server. By \"working\", it means one can use most of the features, browse library and most importantly play music!\n\n### Android\n\n- [Subsonic](https://play.google.com/store/apps/details?id=net.sourceforge.subsonic.androidapp) (official app)\n- [DSub](https://play.google.com/store/apps/details?id=github.daneren2005.dsub)\n- [Audinaut](https://play.google.com/store/apps/details?id=net.nullsum.audinaut)\n- [Ultrasonic](https://play.google.com/store/apps/details?id=org.moire.ultrasonic)\n- [GoSONIC](https://play.google.com/store/apps/details?id=com.readysteadygosoftware.gosonic)\n- [Subtracks](https://play.google.com/store/apps/details?id=com.subtracks)\n- [Music Stash](https://play.google.com/store/apps/details?id=com.ghenry22.mymusicstash)\n- [substreamer](https://play.google.com/store/apps/details?id=com.ghenry22.substream2)\n\n### Desktop\n\n- [Clementine](https://www.clementine-player.org)\n\n### Web\n\n- [Jamstash](http://jamstash.com) ([Chrome App](https://chrome.google.com/webstore/detail/jamstash/jccdpflnecheidefpofmlblgebobbloc))\n- [SubFire](http://subfireplayer.net)\n\n_Currently supports a subset of API v1.16.1, avaiable as Json, Jsonp and XML._\n\n## Contributing\n\nThere is still some [missing endpoints](missing-endpoints.md) and `TODO` in the code.\nFeel free to create some PR!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBinaryBrain%2FBeetstream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBinaryBrain%2FBeetstream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBinaryBrain%2FBeetstream/lists"}