{"id":23969087,"url":"https://github.com/jiab77/jellystream","last_synced_at":"2026-05-16T19:39:00.184Z","repository":{"id":87588099,"uuid":"504319715","full_name":"Jiab77/jellystream","owner":"Jiab77","description":"A simple script that gives you the possibility to listen your music from your terminal within your Jellyfin server API.","archived":false,"fork":false,"pushed_at":"2024-09-02T00:03:03.000Z","size":550,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-07T00:59:17.641Z","etag":null,"topics":["api","bash","cli","jellyfin","music","server","streaming"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/Jiab77.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":"2022-06-16T22:09:33.000Z","updated_at":"2024-09-02T00:03:06.000Z","dependencies_parsed_at":"2023-12-11T00:23:12.332Z","dependency_job_id":"a4eae69c-896b-445e-9eb0-cb6d915499d6","html_url":"https://github.com/Jiab77/jellystream","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fjellystream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fjellystream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fjellystream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fjellystream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jiab77","download_url":"https://codeload.github.com/Jiab77/jellystream/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240498096,"owners_count":19811194,"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":["api","bash","cli","jellyfin","music","server","streaming"],"created_at":"2025-01-07T00:59:48.538Z","updated_at":"2026-05-16T19:38:55.164Z","avatar_url":"https://github.com/Jiab77.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jellystream \u003c!-- omit from toc --\u003e\n\nA simple script that gives you the possibility to listen your music from your terminal within your Jellyfin server API.\n\n## Current version \u003c!-- omit from toc --\u003e\n\nThe latest version is __`0.2.0`__.\n\n## Content \u003c!-- omit from toc --\u003e\n\n* [Dependencies](#dependencies)\n  * [Music players](#music-players)\n* [How to use it](#how-to-use-it)\n  * [Desktop notifications](#desktop-notifications)\n* [Config file](#config-file)\n* [Screenshots](#screenshots)\n* [Todolist](#todolist)\n* [Known issues](#known-issues)\n* [Extra](#extra)\n* [Author](#author)\n\n---\n\n## Dependencies\n\nThe script has some dependencies that needs to be installed before trying to run it:\n\n```\nsudo apt install curl jq sed\n```\n\n### Music players\n\nHere is a list of currently supported music players:\n\n* `mpg123`\n* `mpv`\n\nHowever, `mpv` remains the recommanded player as it provides extra functionalities like __desktop notifications__ which offer the possibility to control the player from a notification.\n\n\u003e Support for `gst123` will be added soon but already exist in the [random music player](#extra).\n\n## How to use it\n\nThe script is quite easy to use, you basically just need to do the following before running it:\n\n1. Create an API key on your Jellyfin server\n2. Put your new API key and your server address in the script or in the config file\n3. Save and run it\n\nIf the API key is correctly defined, you should see a text menu where you'll be asked to enter the number in front of the music genre. It will then automatically create an __IntantMix__ (_a feature from Jellyfin_) for the selected music genre which is apparently limited to __200__ songs.\n\nThat __InstantMix__ stream will be then passed to `mpg123` (or `mpv`) that will read it and play the songs.\n\nTo control the player, a support for `playerctl` has been implemented and you can pass the following actions to the scripts:\n\n* `status`\n* `stop`\n* `play`\n* `pause`\n* `prev`\n* `next`\n\n\u003e These actions are only for `mpv`.\n\nRun the `man` command for `mpg123` or `mpv` to find the control keys for each music players.\n\n### Desktop notifications\n\nThe support for __desktop notifications__ is based on `dbus` and provided by `mpv_mpris` library when `mpv` is installed. The script will look for the library and load it.\n\n## Config file\n\nHere is the config file structure:\n\n\u003e The script will look for a file called `jellystream.conf` and load it if exists.\n\n```conf\nSERVER_ADDR=\"YOUR-SERVER-ADDRESS-WITH-PORT-IF-ANY\"\nAPI_KEY=\"YOUR-API-KEY\"\nLOGIN_AS=\"YOUR-USERNAME\"\n```\n\n__The `SERVER_ADDR` variable must contain the protocol and port.__\n\nHere is an example of valid server addresses:\n\n* `http://a.b.c.d:1234`\n* `https://a.b.c.d:1234`\n* `http://my-jellyfin-server.tld:1234`\n* `https://my-jellyfin-server.tld:1234`\n* `https://my-secret-jellyfin-tunnel.tld`\n\n## Screenshots\n\n![image](images/screenshot-1.png)\n![image](images/screenshot-2.png)\n\n\u003e Screenshots needs to be updated.\n\n## Todolist\n\n* [X] Display songs metadata\n* [X] Improve metadata display\n* [X] Improve navigation between tracks\n* [ ] Improve authentication method by using `AuthenticateByName` API endpoint\n* [ ] Find a way to pass the generated stream to __Icecast__ or similar\n* [X] Find a better way to kill the player\n\n## Known issues\n\nNothing for the moment.\n\n## Extra\n\nI've kinda reused the same code / concept to create a random music player that can be run from CLI:\n\n* [Random Music Player](rmp.sh) - (_Or 'RMP' for short_)\n\nIt will look for the default music folder (`XDG_MUSIC_DIR`) and generate a dynamic list of existing audio files in memory and pass it to one of the supported music players.\n\n## Author\n\n* __Jiab77__","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiab77%2Fjellystream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiab77%2Fjellystream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiab77%2Fjellystream/lists"}