Skip to content

joske/ripperx4

Repository files navigation

RipperX 4

workflow status security audit

20 years ago I was maintainer of ripperX, which was written in C and gtk 1.x. I started a rewrite (also in C, but using gtk 2), called ripperX 3. The code was still forking cdparanoia and lame and reading its output... But it was never finished and abandoned (also by the new maintainers). My friend Kris created a library libcddb (which still exists, although also no longer maintained by him). I came across the ripperx3 branch (the source is still available on sourceforge after all those years!) and tried to revive it, but not much sense in reviving an app written in C and linked against an obsolete GTK+ version. So I started rewriting it in Rust, gstreamer and GTK 4.

This is mostly a learning excercise for me, not sure if this will get released at all (but hey, it's on github so anyone can build it ;-)). It includes code to query the disc on musicbrainz service (previous versions used gnudb, but that service seems down now, so I bit the bullet and implemented a basic query to musicbrainz vast info). Update: some years later and gnudb is back online, and also there is now an external musicbrainz rust crate, so I'm using that instead.

It is now almost feature complete, see below:

What works (tested on Linux, FreeBSD and macOS)

  • can scan CDROM drive
  • reads CD-Text metadata (if available on disc)
  • query musicbrainz with fallback to gnudb
  • you can edit the data
  • adds tags to the files
  • you can select which tracks to rip
  • supports MP3, OGG, FLAC, OPUS, AAC and WAV
  • you can set quality options
  • sends notification when done
  • doesn't overwrite existing files without warning
  • can add playlist (m3u) file
  • can eject CD when done
  • can open music folder when done
  • configurable file naming patterns
  • can disable paranoia (error correction) to speed up ripping (enabling error correction massively slows down ripping)

What is not supported (yet)

  • no support for multiple matches from musicbrainz (just takes the first match)
  • composer field

See COMPARISON.md for a detailed feature comparison with other CD rippers.

Building

Install gtk 4, gstreamer, libdiscid, libcdio (and on macOS: libcdio-paranoia)

cargo build

Tip: builds for macOS and linux are available on every build in Actions/Artifacts.

Running

cargo run

FreeBSD

on FreeBSD you'll need to give permission to your user to use the CD drive, see:

https://forums.freebsd.org/threads/the-truth-please-why-are-cd-dvd-drives-not-usable-are-permissions-issues-a-freebsd-response-to-security-risks.88004/post-598165

You'll also want to install the eject package, or auto eject the CD won't work.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages