Skip to content
/ termusic Public
forked from tramhao/termusic

Music Player TUI written in Rust

License

GPL-3.0, MIT licenses found

Licenses found

GPL-3.0
LICENSE_GPLv3
MIT
LICENSE_MIT
Notifications You must be signed in to change notification settings

orhun/termusic

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terminal Music Player written in Rust

Nowadays listen to favorite songs are not easy. For online services, the copyrights are owned by several different softwares and websites. Local player becomes the best choice.

As a contributor of GOMU(https://github.com/issadarkthing/gomu), I met serious problems during development. The main problem is data race condition. So I basically rewrite the player in rust, and hope to solve the problem.

As for now, mp3, m4a, flac and ogg/vorbis are supported.

main tageditor

Requirement:

Need gstreamer and related plugins installed to play musics. Please check below:

gstreamer
gstreamer-plugins-base(gst-plugins-base)
gstreamer-plugins-good(gst-plugins-good)
gstreamer-plugins-bad(gst-plugins-bad)
gstreamer-plugins-ugly(gst-plugins-ugly)

Optionally you need youtube-dl installed to download mp3 from youtube.

Installation:

cargo install termusic

Or install manually:

git clone https://github.com/tramhao/termusic.git
cd termusic
make
make install
~/.local/share/cargo/bin/termusic

or if you need mpris support:

make mpris
~/.local/share/cargo/bin/termusic

ChangeLog

[v0.3.13]

  • Released on: Sep 23, 2021.
  • New: mpris support(optional). use "make mpris" to compile and install it.
  • Show a message when start playing a song.
  • Remove the usage of msgbox component and use paragraph instead.

[v0.3.12]

  • Released on: Sep 15, 2021.
  • Minor fix: wrong hints for empty queue.
  • Load queue faster.
  • Remove dependency of openssl.
  • Remove dependency of urlqstring.

[v0.3.11]

  • Released on: Sep 13, 2021.
  • Load faster by loading queue after app start.
  • Remove dependency of ogg-metadata.
  • Display version info in both tui and cli.
  • Could override music directory with command line arguments.

[v0.3.10]

  • Released on: Sep 11, 2021.
  • New: ogg vorbis format support.

[v0.3.9]

  • Released on: Sep 7, 2021.
  • New: flac format support.
  • Refactor invidious.rs.

[v0.3.8]

  • Released on: Sep 4, 2021.
  • Remove the usage of configr, also make the app minimal.
  • Change hotkey for help to Ctrl+h.
  • Rearrange components in tag editor.
  • Embed duration into tag. Load faster.
  • Remove dependency of mp3-duration.
  • Minor fix: lyric lang_ext was set to wrong names.

[v0.3.7]

  • Released on: Sep 2, 2021.
  • Fix table focus issue.
  • Fix invidious search slow down the whole program.
  • Change http client from reqwest to ureq, to make the app minimal, thus speed up compilation.

[v0.3.6]

  • Released on: Aug 31, 2021.
  • Remove the dependency of unicode truncate, as tui-realm-stdlib implemented width for table.
  • Fix playlist sorting with characters of mixed languages.
  • Speed up load_queue and sort playlist.
  • Minor fix: duration display in queue.

[v0.3.5]

  • Released on: Aug 26, 2021.
  • Refactoring status line, to show download success or fail message.
  • Parsing output of youtube-dl to select downloaded song in playlist.
  • Embed all lyrics after youtube download. Switch lyric with "T" key while playing.
  • Show popup messages on top right corner.
  • Sort file name(including chinese) in tree.
  • Can delete single lyric from tag editor.
  • Currently only mp3 support several lyrics.

[v0.3.4]

  • Released on: Aug 24 2021.
  • Refactoring lyric mod to songtag mod.
  • Run songtag search in threads so it'll not block tageditor.
  • Refactoring youtube_options and no more search error with youtube.

[v0.3.3]

  • Released on: August 21, 2021.
  • Run songtag search in parallel to save some time in tageditor.

Implemented features(changelog before v0.3.3):

  • Music library below ~/Music, can be changed via editing $HOME/.config/termusic/config.toml
  • Pause/Skip
  • Seek forward/backward
  • USLT lyric
  • Album Photo display(only for kitty terminal)
  • Youtube-dl integration
  • lyric and tag download
  • yank and paste in playlist
  • Lyric offset adjustment
  • Local service to fetch lyrics
  • Download song in tag editor
  • Configuration v0.2.6
  • Local service for kugou v0.2.10
  • Youtube-dl progress indication(indicated by status line)
  • Youtube search by invidious V0.2.7(from the same dialogue of download)
  • Local service for migu v0.2.8
  • m4a format support v0.2.12
  • switch to Gstreamer playing backend in order to support m4a v0.2.12
  • m4a meta support v0.3.0
  • Invidious servers are random selected and verified, thus no configuration is needed.v0.3.2

Thanks for

License

GPLv3 for netease api code under src/lyric/netease. MIT License for other code.

About

Music Player TUI written in Rust

Resources

License

GPL-3.0, MIT licenses found

Licenses found

GPL-3.0
LICENSE_GPLv3
MIT
LICENSE_MIT

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.9%
  • Makefile 0.1%