Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: linuxrip (Read 38985 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

linuxrip

I came into the gnu/linux world over a year ago, back then there was nothing meeting my needs.

Linuxrip is a secure ripper (test and copy, with autoretry (first a third, then a fourth, etc), 2 matching rips = ok).
It does xml style logging.
Uses cdparanoia or cdda2wav for ripping.
Can encode to flac(also support for flake), wavpack, vorbis, musepack and mp3.
Does (album) replayain for all types (mp3gain for mp3, because i included support for people who might have portables).
It's multithreaded in the sense it can do encoding and ripping at the same time (only one encode at a time currently).
It can retrieve cddb info.
Automaticly adds capital letters to each word (with an exclude list), to make a more unified appearance (it can be disabled).
Supports multiple naming convention (2 by default, custom ones can be added for those not completely alien to bash scripting).
Supports (simple) nfo's with the option to add notes.
It embeds logs into tags for flac and vorbis (which have a readily available commandline tagger).

I think that's most of the major features, one thing it (will probably never) doesn't support is single flac+cuesheet.

Linuxrip has had a little under 25 (mostly private) releases over a period of almost a year (i guess).
The Makefile is not perfect yet.

It has been tested on gentoo linux and arch linux (not the most recent version). Probably runs on other unix like systems if you can meet the dependencies.

I've been working a release ready for the public, consider this a beta.

Please make sure you have some space in /tmp (for a few small files), forgot to put that into readme.

Let me know what you think.

Currently only svn:
linuxrip page

linuxrip

Reply #1
An example log to serve (possible) curiosity.

Code: [Select]
<?xml version="1.0"?>
<linuxrip>

<linuxripversion>0.081</linuxripversion>
<logversion>0.05</logversion>

<albuminfo>
<artist>Joe Jackson</artist>
<album>Live</album>
<genre>Misc</genre>
<year>2004</year>
</albuminfo>

<settings>
<ripper>cdparanoia</ripper>
<ripperoptions>-X -z -O 6 -d /dev/hdb</ripperoptions>
<encodeflac>1</encodeflac>
<flacencoder>flake</flacencoder>
<flakeoptions>-10</flakeoptions>
<drive>Lite-On LTR-52327</drive>
<maxattempts>10</maxattempts>
<rex>1</rex>
<leo>1</leo>
</settings>

<tracks>
<track number="1">
<filename>01 - Prelude-hell of a Town.wav</filename>
<md5 pass="1">f11348b1f09cdf1441750c3b8505869c</md5>
<md5 pass="2">f11348b1f09cdf1441750c3b8505869c</md5>
<attempts>2</attempts>
</track>
<track number="2">
<filename>02 - You Can't Get What You Want 'til You Know What You Want.wav</filename>
<md5 pass="1">3bcb0cff913942e86ab342c242272d5e</md5>
<md5 pass="2">3bcb0cff913942e86ab342c242272d5e</md5>
<attempts>2</attempts>
</track>
<track number="3">
<filename>03 - Happyland.wav</filename>
<md5 pass="1">e716cb61094aa99f526b8620bef68360</md5>
<md5 pass="2">e716cb61094aa99f526b8620bef68360</md5>
<attempts>2</attempts>
</track>
<track number="4">
<filename>04 - Stranger than You.wav</filename>
<md5 pass="1">8adfe07b273ea317612875e2fdd33522</md5>
<md5 pass="2">8adfe07b273ea317612875e2fdd33522</md5>
<attempts>2</attempts>
</track>
<track number="5">
<filename>05 - Another World.wav</filename>
<md5 pass="1">d0b2c3288b3dc1607ccd3323437cc51b</md5>
<md5 pass="2">d0b2c3288b3dc1607ccd3323437cc51b</md5>
<attempts>2</attempts>
</track>
<track number="6">
<filename>06 - Is She Really Going Out with Him.wav</filename>
<md5 pass="1">96d26619a6670a30d1fd3e8a6fa1e550</md5>
<md5 pass="2">96d26619a6670a30d1fd3e8a6fa1e550</md5>
<attempts>2</attempts>
</track>
<track number="7">
<filename>07 - Home Town.wav</filename>
<md5 pass="1">7f38851de05331e1b63661af4fd20e4e</md5>
<md5 pass="2">7f38851de05331e1b63661af4fd20e4e</md5>
<attempts>2</attempts>
</track>
<track number="8">
<filename>08 - Real Men.wav</filename>
<md5 pass="1">8bd285da1b83491938ecf6d163310c92</md5>
<md5 pass="2">8bd285da1b83491938ecf6d163310c92</md5>
<attempts>2</attempts>
</track>
<track number="9">
<filename>09 - Stranger than Fiction.wav</filename>
<md5 pass="1">ebccefc84001094a0fca64985bc720f7</md5>
<md5 pass="2">ebccefc84001094a0fca64985bc720f7</md5>
<attempts>2</attempts>
</track>
<track number="10">
<filename>10 - Glamour & Pain.wav</filename>
<md5 pass="1">e18840a4d0d8a43083384025e892abba</md5>
<md5 pass="2">e18840a4d0d8a43083384025e892abba</md5>
<attempts>2</attempts>
</track>
<track number="11">
<filename>11 - Target.wav</filename>
<md5 pass="1">0232e4d13b459e3960c11495b6a723c1</md5>
<md5 pass="2">0232e4d13b459e3960c11495b6a723c1</md5>
<attempts>2</attempts>
</track>
<track number="12">
<filename>12 - Just Because.wav</filename>
<md5 pass="1">1d0c3c929527fd7d91b3ebb132c40c76</md5>
<md5 pass="2">1d0c3c929527fd7d91b3ebb132c40c76</md5>
<attempts>2</attempts>
</track>
<track number="13">
<filename>13 - Got the Time.wav</filename>
<md5 pass="1">af1d98a36bb2d2f57068397efe642be7</md5>
<md5 pass="2">af1d98a36bb2d2f57068397efe642be7</md5>
<attempts>2</attempts>
</track>
<track number="14">
<filename>14 - Slow Song.wav</filename>
<md5 pass="1">7c0daa14ab96396f5aaa4a6d63005afd</md5>
<md5 pass="2">7c0daa14ab96396f5aaa4a6d63005afd</md5>
<attempts>2</attempts>
</track>

</tracks>

</linuxrip>

linuxrip

Reply #2
How does this compare with rubyripper?

linuxrip

Reply #3
Never tried rubyripper, because i already had my own thing when it came out.
I suppose i could try.

linuxrip

Reply #4
Initial impressions(compared to what i did):

pros:
- asks for config settings

cons:
- can't select cddb server (and it doesn't work for me)
- logs are not the way i would do them (plaintext for one)
- less choices for encoding
- lacking all the little bits and finetuning i'm used to

Not meant for me, but then again i wrote my own script which suits me better (how unexpected :-) ).

Rubyripper's dependency on libraries does make it a smaller codebase, the cli ripper was 200-250 lines of code. My efforts required much more code (one reason is the lack of modules for bash), around 2500 lines (although many lines are short).

linuxrip

Reply #5
I'm mainly curious if the ripping method is similar

I've been getting better results with rubyripper + cdparanoia, then any other ripper for Windows even

I would welcome the same/similar method of ripping and comparing w/ more configuration options, especially if it's all CLI

I will give it a shot in a bit, I'm currently running windows so I could update my drives firmware.

linuxrip

Reply #6
Some comments after first look at the sources:
  • Is it possible to separate internally used scripts (and put in something like /usr[/local]/lib/linuxrip) from end user scripts (like linuxrip and createnfo)? It will be simple to package such project.
  • I have no nano editor at all!  I prefer vim. Maybe better to get editor name from $EDITOR and (if it's unset) find (by 'which') available editor from small list? Nano in requirements is nice!
  • For simple arithmetics you can use shell $((expression)) instead of 'echo expression | bc' (and one dependencies will go away again).

Anyway it's a great work for shell only program. If my (mainly admin related) code begins grow too quick I'm switching to more high-level language like python.

Real ripper work I'll test later, sorry.

linuxrip

Reply #7
The method seems similar, but the difference is that my script has a load of options for small things. I'm basicly calling cdparanoia with a set of options (which is are definable), it makes md5's after each rip, compares them, does another rip checks if two matches, etc. Then stores them. Very similar approach in terms of ripping

linuxrip

Reply #8
Quote
I'm mainly curious if the ripping method is similar


It's the wiki if you want to take a look at the correction mechanism. It's a fairly straightforward approach that makes sense logically. The lead developer did a good job explaining it. It doesn't gurantee an MD5 sum on each rip. The approach is very similar
budding I.T professional

linuxrip

Reply #9
Some comments after first look at the sources:
  • Is it possible to separate internally used scripts (and put in something like /usr[/local]/lib/linuxrip) from end user scripts (like linuxrip and createnfo)? It will be simple to package such project.
  • I have no nano editor at all!  I prefer vim. Maybe better to get editor name from $EDITOR and (if it's unset) find (by 'which') available editor from small list? Nano in requirements is nice!
  • For simple arithmetics you can use shell $((expression)) instead of 'echo expression | bc' (and one dependencies will go away again).
Anyway it's a great work for shell only program. If my (mainly admin related) code begins grow too quick I'm switching to more high-level language like python.

Real ripper work I'll test later, sorry.


I will make the text editor an option, thanks for the $(()) advice, i guess i'll slowly start using/converting that.
My attempt to properly intergrate into the filesystem was just a first attempt, i will change that as well (at some point).

linuxrip

Reply #10
this sounds great, i just wish it supported flac images w/ cue sheets...  i'll check it out anyway.  thanks madman2003!
a windows-free, linux user since 1/31/06.

linuxrip

Reply #11
this sounds great, i just wish it supported flac images w/ cue sheets...  i'll check it out anyway.  thanks madman2003!


Find me a console based cue sheet generator or something like that and i might reconsider adding it  (the last broken cue sheet handler was a load of code and didn't work very well and i don't want to write it myself atm).

linuxrip

Reply #12
I used cdrdao read-toc + cueconvert before switched to EAC under Wine. To embed later into FLAC as the metadata block it's enough.

linuxrip

Reply #13
There might a problem using $(()), since integer math doesn't always do it for me.

linuxrip

Reply #14
Try to use decimal point in first used operand, something like $((2./3)) or $(($n./3)).


linuxrip

Reply #16

this sounds great, i just wish it supported flac images w/ cue sheets...  i'll check it out anyway.  thanks madman2003!


Find me a console based cue sheet generator or something like that and i might reconsider adding it  (the last broken cue sheet handler was a load of code and didn't work very well and i don't want to write it myself atm).

mkcue is what abcde uses apparently.  i just pulled that link up w/ google...  i have no idea if its up-to-date or accurate...
a windows-free, linux user since 1/31/06.

linuxrip

Reply #17
Quote
mkcue generates cue sheets from a CD's TOC (Table Of Contents).


But what about pre-gap info? It can be found only from tracks itself, not from TOC. cdrdao read-toc can read it (and also ISRC).

linuxrip

Reply #18
Quote
mkcue generates cue sheets from a CD's TOC (Table Of Contents).


But what about pre-gap info? It can be found only from tracks itself, not from TOC. cdrdao read-toc can read it (and also ISRC).


For the moment i'm using cdrdao with quicktoc option, the base for flac+cue ripping is there. Just no support for tags in cue (which doesn't matter for the built in cue, but does for the external one).

Also added option for text editor.

Will be in the next version.

linuxrip

Reply #19
New version in start post.

Added choosable text editor and initial flac+cue sheet support.

linuxrip

Reply #20
Added version 0.091, which adds cue sheet support for multiple flac file ripping (probably expanded to other codecs in the future, just not yet :-) ). It needs testing, especially on tracks with subtracks or strange pregap tracks (i only tested normal pregaps on one cd).

EDIT: the style is very similar to eac's non-compliant cue sheets

linuxrip

Reply #21
 i apologize if this is a very noobish request, but do any of you know of any online how-to's or anything that would teach me how to install things in ubuntu that are not any any repo's, and don't have deb's.

simply put, i'm very interested in linuxrip, but i have no idea how to use it... 
a windows-free, linux user since 1/31/06.

linuxrip

Reply #22
There are two ways, making proper debs or just a package with no dependency checking or anything like that (a package just to be able to uninstall it).

(Source: http://ubuntuforums.org/showthread.php?t=2683)

checkinstall: http://www.ubuntuforums.org/showthread.php?t=2356
debian's maintainer guide (meant for developers): http://www.debian.org/doc/maint-guide/

In this case (because it's just a script and just for you) i would use checkinstall.

linuxrip

Reply #23
Here's a somewhat simpler article too:
http://www.debian-administration.org/articles/336


And some source packages (*.tar.gz or *.tar.bz2, usually) are nice enough to come with a "debian" directory. In which case you can build your *.deb by simply doing such in the root directory of the source:

fakeroot debian/rules binary

or, if you want to pass configure options:

DEB_BUILD_OPTIONS="--enable-something --enable-somethingelse" fakeroot debian/rules binary

variables are also possible:

CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-something" fakeroot debian/rules binary

then to clean:

fakeroot debian/rules clean

and to install:

dpkg -i somepackage.deb


But ofcourse, not all source packages are so well behaved. You can check out CheckInstall as Madman2003 mentioned. But it doesn't always work. But if what it installs won't run; atleast you can simply uninstall what was installed, so it's no hassle.....

[EDIT]
Here's a tutorial on CheckInstall too:
http://www.debian-administration.org/articles/147
And here are mentioned some of it's limitations:
http://asic-linux.com.mx/~izto/checkinstall/faq.php

Personally I recently tried to use it on FAAC 1.25. I could install it by first running "find . -type f -exec dos2unix -f '{}' \;" over the sources to get rid of all the DOS lineendings, then doing "./bootstrap" and then finally "./configure", "make" and "sudo make install". But I first tried "checkinstall" instead of "make install", but it didn't install several files or any of the symlinks, so the program wouldn't run. When using old "make install" I got a functioning program.....
[/EDIT]
"ONLY THOSE WHO ATTEMPT THE IMPOSSIBLE WILL ACHIEVE THE ABSURD"
        - Oceania Association of Autonomous Astronauts

linuxrip

Reply #24
If anyone has makefile suggestion's (if something doesn't work), then please recommend. Also keep in mind that this is just a script, so no compiling is needed. The makefile is just to facilitate a normal "way" of installing. I have never used debian or ubuntu, the install is only tested on gentoo.