Giter Club home page Giter Club logo

hifi.rs's Introduction

hifi.rs

A terminal-based (tui), high resolution audio player backed by Qobuz

Powered by Qobuz. Requires a paid subscription. This does not allow you to listen for free.

Qobuz only supports Linux through the browser and has no officially supported API. There are ways of accessing Qobuz in Linux outside of the browser through third-party applications like Squeezelite and Roon. These apps are great, but I wanted something simpler that just focused on being able to quickly find and play an album inside the console.

screenshot

Player Features

  • Low resource usage
  • GStreamer-backed player, SQLite database
  • High resolution audio: Supports up to 24bit/192Khz (max quality Qobuz offers)
  • MPRIS support (control via playerctl or other D-Bus client)
  • Gapless playback
  • Resume last session
  • TUI can be disabled to use as a headless player, controlled via MPRIS

In addition to the player, there is a Spotify to Qobuz playlist sync tool and an incomplete Rust library for the Qobuz API.

Installation

Download tar from releases page, extract the tar and execute it or copy it to the your $PATH.

Get started

Run hifi-rs --help or hifi-rs <subcommand> --help to see all available options.

To get started:

hifi-rs config username # enter username at prompt
hifi-rs config password # enter password at prompt
hifi-rs config default-quality # enter quality at prompt (mp3, cd, hifi96 or hifi192)
hifi-rs play --uri <Qobuz Album, Playlist or Track URL>

Keyboard Shortcuts

Command Key(s)
Switch screen tab
Play/Pause space
Next track N
Previous track P
Jump forward l or right arrow
Jump backward h or left arrow
Quit ctrl + c
Move up in list k
Move down in list j
Select item in list enter
Dismiss popup esc
Enter search query /

Known Issues

  • If left paused for a while, the player will crash when attempting to play again
  • UI will freeze during loading of long lists and then works fine. The issue is there is no feedback alerting the user that something is happening in the background and signifying it is normal behavior. Probably best solved when switching to Cursive.

Todo

  • Build binaries and make Github releases
  • Use unified search endpoint instead of individual
  • Switch to Cursive for UI library
  • Enable searching for albums, tracks and playlists in the UI
  • Sortable lists

hifi.rs's People

Contributors

iamdb avatar carrieroent avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.