Rescued project files from wiki #1

Open
opened 2024-11-20 19:38:37 -03:00 by aleidk · 0 comments
Owner

Juno

Resources

Kickoff

Completion Criteria

This project will be completed when:

Have a working CLI music player with the following features:

  • Play local files or remote streams (like youtube streams).
  • Local or remote (HTTP) audio output.
  • MPRIS support
  • Dynamic server-client design:
    • On start it attach to a socket, a local unix file socket (default) or a port to allow for remote connections (MPD like).
    • If a second instance is invoque on the same socket, it will act as a client to the process running on that socket, allowing to modify the playback and exiting immediately (MPC like).
    • By default the server process will end when the queue is empty unless it's ran in "daemon" mode. This allows to continue using the clients to add more music later.

Brainstorm

Regarding the Client-Server setup:

  • In "daemon" mode, a path is needed so the server knows where to find the music. The clients can only add files from that path.
  • The server needs an endpoint to return the available songs under the provided path.
  • The server needs an endpoint that return the current information of the playback
  • The communication between client / other front ends and server is with gRPC

The queue should have a soft limit and a hard limit.

  • Soft Limit: Cannot add more than this limit, it's also the same limit when quering the current queue.
  • Hard limit: The actual limit of the query, items above this limit are truncated.
# Juno ## Resources - [Navidrome](https://www.navidrome.org) - [Azuracast](https://www.azuracast.com/) - [Cadence](https://github.com/kenellorando/cadence) (Use Icecast and Liquidsoap) - [forte](https://github.com/kaangiray26/forte) - [Music Player (written in Rust)](https://github.com/tsirysndr/music-player/) - [fd](https://github.com/sharkdp/fd) (for filesystem walking) - [global config in rust](https://github.com/PhilipDaniels/rust-config-example) - [Bind unix port in hyper server]([https://github.com/hyperium/hyper/issues/2102](https://github.com/hyperium/hyper/issues/2102)) ## [Kickoff](Project%20checklists.md#Kickoff) ### Completion Criteria This project will be completed when: Have a working CLI music player with the following features: - [ ] Play local files or remote streams (like youtube streams). - [ ] Local or remote (HTTP) audio output. - [ ] [MPRIS](https://wiki.archlinux.org/title/MPRIS) support - [ ] Dynamic server-client design: - [ ] On start it attach to a socket, a local unix file socket (default) or a port to allow for remote connections ([MPD](https://wiki.archlinux.org/title/Music_Player_Daemon) like). - [ ] If a second instance is invoque on the same socket, it will act as a client to the process running on that socket, allowing to modify the playback and exiting immediately ([MPC](https://www.musicpd.org/clients/mpc/) like). - [ ] By default the server process will end when the queue is empty unless it's ran in _"daemon"_ mode. This allows to continue using the clients to add more music later. ### Brainstorm Regarding the Client-Server setup: - In _"daemon"_ mode, a path is needed so the server knows where to find the music. The clients can only add files from that path. - The server needs an endpoint to return the available songs under the provided path. - The server needs an endpoint that return the current information of the playback - The communication between client / other front ends and server is with gRPC The queue should have a soft limit and a hard limit. - Soft Limit: Cannot add more than this limit, it's also the same limit when quering the current queue. - Hard limit: The actual limit of the query, items above this limit are truncated.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: alecodes/juno#1
No description provided.