rip 1.07 ======== (1) Grrr. This time for sure. Fix the $#%@! quote problem when tagging ogg vorbis files. Why exactly did ogg developers decide it would be a "good idea" if tagging was done on the command-line where shells could screw up special chars left, right, and sideways. Anyway, about a dozen different "fixes" patching this problem came into my inbox. I think I have done one that will leave special chars (like those german u's) alone but also not screw up on a filename with ' in it. We shall see how I fare this time. No credit is going anywhere on this one but it sure was nice to have several patch possiblities to choose from. Thanks to everyone who gave this some thought. Hopefully I don't have to go near this one again. (2) Another thing people have been beating me over the head about since I started this is whether files should be named using " " or "_" for white-space. Now there's a flag to turn on and off the use of underscores while renaming files. Note that now you need to use -n/--nounderscore if you do not want underscores in filenames, even if you are using -f/--format. Marco von Loon finally motivated me on this one. (3) No longer append extension to rip temp file because it is useless and because when you loop over many CDs, the while loop causes the appension of the extension multiple times unless you move it to a very odd part of the code. Thanks to Kevin Mulholland. (4) No longer remove "-" from dir and file names. Just got a little overzealous removing special chars from names that would cause crashes otherwise. Oh well. Thanks to Marco von Loon. (5) Kevin Lester caught a rare bug: if the CDDB entry is the empty string for some tracks, the parse logic goes into an infinite loop. properNameList is now checked for "" and replaces it with "Unknown". (6) Russel Smith was first to notice that the "-o" flag needs to be appended to the end of the flag list. As the code that did this work was a patch and not something I tested, this problem has been around for a while. Good thing someone is actually using flac and noticed. Tai Lee suggests removing the stdin "-" flag entirely. Anyone know if that is a good idea on all platforms? (7) Mike Irwin noticed that $dev from ~/.riprc on the first run causes problems and should be tested. (8) Playlists are now created relative to the inital directory you ran rip from. Though he didn't have it quite right, this too was motivated by Marco von Loon. rip 1.06 ======== (1) Added check to song titles returned from CDDB, escaping any quotes to prevent oggenc from bailing out on the command-line from incorrect quoting of song titles. Also changed oggenc tag command-line to use single quote instead of double quote. Hopefully this will make things more robust. (2) Added track number to MP3 ID3 tags per John Harrold's request. (3) Added sanity check to make sure $dev, the device variable, is always set to at least "/dev/cdrom" in case someone decides to use --dev and give no argument. Sigh. (4) Removed dependence on dd. Buffering was giving no noticable benefit. (5) Altered which chars are removed when creating filenames. Should leave more chars alone now. (6) Remove encoder paranoia, allowing user to set bitrate to whatever they like (was bitrate of 160 kbps). Remove space between " -z 3 " in ripper paranoia per Michael Muller's suggestion. rip 1.05 ======== (1) Added support for the encoder notLAME thanks to Markus Trapp (2) Added support for the ripper cdda2wav (3) The "%N" format descriptor is now zero-padded to two positions, that is: two is 02, five is 05, and eleven is 11 (4) Standard output is automatically flushed so it always appears on screen rip 1.04 ======== There are too many people to mention who sent things in which I used. The main changes include: (1) Using GetOptions and getopts instead of rolling my own (2) You may now use -M/--many to loop repeatedly through the script to rip many CDs in a row (3) Gone are -N/--number and -A/--artist since now I am making available a -f/--format to allow you to specify your own format. See the -h/--help output for more information on this one. (4) No more -a/--all as rip now rips all tracks by default if you do not specify what tracks to rip. (5) You may now do a lazy/superlazy rip on only a specific subset of tracks. Just do something like: rip -S 1-3 5 7-10 13 and rip will do all the normal lazy things, but it will also only do them for tracks 1, 2, 3, 5, 7, 8, 9, 10, and 13. (6) Fixed the bug that disallows using a fixed bit rate during a lazy rip. Now if you say -b 128 during a lazy rip, it will use 128 kbps. If you say -q 3 -L during a lazy rip, it will use LAME at quality 3. There are probably more fixes, but I can't think of them right now. rip 1.01 ======== (1) Anders Rosendal suggested that the user be able to define the default. I have added a ~/.riprc file that will allow users to define some of the default flags and values used in the script. More defaults to be added later, as I have time. (2) Malte Uhl sent in a diff file with some code to allow the user to set quality values for variable bit rate encoding (available if you're using oggenc or LAME as the encoder). (3) The lazy and superlazy modes now use variable bit rate for encoding if the encoder is LAME or oggenc. The default quality for LAME is 3 and the default quality for oggenc is 9. You need the newest version of oggenc to use the quality flag "-q" now required by lazy/superlazy rips. You may override the quailty by using the -q/--quality flag. (4) Fixed a bug where if you used the --generate flag without giving a playlist name or an album title, it would name the playlist ".list" (a hidden file). Now it names it "playlist.list" by default if you don't give it a name. (5) Added more things you can tag ogg vorbis' with, such as year and genre. Sent in by Chris Hirsch. (6) Rob Scott suggested that the artist name should be prepended to the file name, if so flagged (ArtistName-Track_Name.mp3). A flag -A/--artist has been added to rip. (7) Robin Pollard helped add support for FLAC, a lossless encoder. This adds the flag -F/--flac to rip. (8) Fixed a long standing bug where the incorrect device would be ejected/loaded. This also fixes the bug where rip would attempt to rip from some device other than the one specified. This was also sent in my Robin Pollard. (9) If there is an error during the rip, the script will still eject the CD tray before terminating. (10) *May* have fixed the bug: if the CD contains tracks that are not audio in nature, rip will error attempting to rip that track, and possibly hang. rip 1.00 ======== (1) Jonas Petersson sent in an alteration to the manual rename function so that it remembers the previous values if you decide you wish to re-enter the entire list due to a typing mistake somewhere. (2) Kianusch Karadji suggested a fix for all system commands such that variables are wrapped in quotes to prevent failures such as can happen when doing a `mkdir ~/My Music` when the dir has spaces in its name. rip 0.99 ======== (1) Artist names, album titles, and song names now have fairly strict schemes that remove non-word characters that UNIX might hate to see in a dir or file name. (2) Many, many little things you might not notice. Do a diff with 0.98 if you want to see them. Most I have forgotten myself since it has been a busy year and lost of changes in rip have occurred slowly. rip 0.98 ======== (1) CDDB lookup is now done directly using CDDB_get.pm instead of through cddb.pl, which ought to be cleaner code-wise and likely more robust. (2) Moved many variables to the top of the script if they could be changed by the user in some meaningful way. This includes the variable for the default bitrate, encoder search order, CD read rate, backspace character, and CD device. The last is especially useful to set if you have an uncommon device that you use for audio CDs (think DVD). Anyway, rip is a text file, so you are free to change those variables as you see fit, so I thought I'd put them in a more convenient place: the top of the file. (3) Many tweaks to the documentation and help screen to help clarify some things and fix notes that were no longer relevant due to changes in the code over the last few major releases. (4) Updated the files INSTALLING and README. Also added a FAQ. (5) Changed the included version of CDDB_get/CDDB to 1.66. rip 0.97 ======== (1) When using "-n/--number" and "-T/--tag" flags together, the track number will be added to the comments tag. Also, "Connecting to [CDDB...]" no longer has freedb's info hardcoded into the script, as some connect to local CDDBs. (2) Major bug fix to the "-T/--tag" implementation so that tracks have the correct tag information added to them if not all tracks on the CD are ripped. (3) Now sorting the track list so that order of tracks given to rip does not matter (rip 4 1 3 == rip 1 3 4). rip 0.96 ======== (1) Buffering added to the rip process using "dd" per suggestion from Nicholas Kelleher. Should speed up rips that use oggenc. (2) Sanity check for /dev/cdrom so that cddb.pl does not fail with a non-verbose error message, sent in by Geoff Raye. rip 0.95 ======== (1) A fix so that rip handles mkdir on names with spaces in them sent in by Rune Kristian Viken. (2) Removed code that forces -r/--rename by default. rip 0.94 ======== (1) Added the flag "-T/--tag" which adds tagging info to the output audio file. For MP3s this is an ID3v1 tag generated by the MP3::Info perl module. For Ogg Vorbis this is the tagging produced using oggenc. (2) More documentation added to the code. rip 0.92 ======== (1) Added "use strict" declaration and fixed all errors. (2) The symbol "=" is no longer needed for flags that take variables. For example, you can use either "-m=~/mp3" or "-m ~/mp3" to do a move. (3) Many structural changes to rip's framework should make the script more robust. (4) Move bug from rip 0.90 that names files without a "/" in between as in: $dir$filename instead of $dir/$filename, should be fixed. rip 0.90 ======== (1) Added a debugging file for debugging output lines, and a debug flag, -D/--debug. (2) Corrected how tracknames from CDDB with the same name are named so that 3 tracks named "Chorus" translates to three files named "Chorus.$ext" "Chorus_2.$ext" and "Chorus_3.$ext" where $ext is either "mp3", "ogg", or "wav", depending on flags. (3) Similar duplication checking has been added to code related to -r/--rename. (4) Added a flag -a/--all to support ripping of the entire CD without having to explicitly give a track arg of, say, "1-11" if the CD were to have eleven tracks. (5) Ogg Vorbis support will now require the *newest* "oggenc", or rather, one that supports a "-b/--bitrate" flag. Older "oggenc" binaries will no longer be supported. (6) Cleaned up manual -r/--rename so that it translates names like "Riders On The Storm" to "Riders_On_The_Storm.$ext" before storing in the rename list. $ext is one of "mp3", "ogg", or "wav". (7) Fixed use of backspace during script (does a "stty erase ^H" which hopefully will work on most systems). (8) The -q/--query flag has been removed. (9) Fixed parsing of CDDB entries that have ":" in the track name. (10) Reworked CDDB parsing so that if there is more than one CDDB entry, the user is asked which they prefer. (11) Added recovery code so that if CDDB fails, the script will ask the user if they wish to continue by using either a manual or a generic track renaming scheme. (12) Added signal handling so that rip will abort operation correctly on an error from a system call, on a CONTROL-C, or on similar "kill" signals. (13) Fixed creation of directories that do not have pre-existing parent directories by using "mkdir -p $outputDir" instead of just "mkdir $outputDir". (14) Fixed output directory names in the playlist so that there aren't any double slash "//" seperators in the absolute pathname. (15) The playlist now has an extension "*.playlist", thanks to Darin Ohashi, so that if the album title is the same as the artist's name the lazy rips don't end up trying to open a file with the same name as a directory. (16) Also thanks to Darin, a more robust parsing of CDDB entries that doesn't rely on splitting using ":" has been added to rip. rip 0.82 ======== (1) Support for ripping CDs to Ogg Vorbis has been added in part thanks to Gabriel Finch. (2) Bugs related to -m=/--move= should (hopefully) finally be fixed. (3) Parsing related UNIX home var '~' has been fixed so that it is expanded to user's $HOME var (an absolute pathname) instead. (4) Another bug related to needing to remove some non-word chars such as \/ from the output filename has been sent in by Aryeh "Cody" Sherr. (5) Lastly, most flags should be working when using the Ogg Vorbis flag -O/--oggenc, except the obvious ones like -B/--bladeenc, -G/--gogo, and -L/--lame. rip 0.80 ======== (1) A new flag (-P/--play) that allows the user to play ripped MP3s using XMMS during the rip, and (2) cleanups to the output of rip so that rip's child processes do not produce output unless the verbose flag is set. No output is generated by child processes or by rip if the quiet flag is set. (3) Normal output (neither flag set) produced by rip has been reformatted to be more pleasing to the eye and more useful. rip 0.78 ======== (1) This release makes improvements to the documentation and help screen. (2) There is also better parsing of several special characters when renaming files via CDDB. For example, the name "Rhyme & Reason" would become "Rhyme_And_Reason.mp3" instead. (3) Lastly, some minor code clean up has been done. rip 0.76 ======== (1) This release adds support for LAME and GOGO for MP3 encoding in addition to BladeEnc; which MP3 encoder to use is now flaggable (-L, -G, -B). (2) The playlist file is now put in $PWD when using the -l/--lazy flag. (3) A new flag was added, -S/--superlazy, that rips an entire CD, puts an XMMS compatible playlist in $PWD, places output MP3 files in $PWD/ArtistName/AlbumTitle/, and renames the MP3s using CDDB. (4) A "rip -c" (no track args) now prints the CDDB info to the terminal as one would suspect. (5) -t/--trayclose and -e/--eject have been added to allow closing and ejecting of the CD tray at the beginning/end of the script. rip 0.65 ======== (1) New features related to using cddb.pl from CDDB/CDDB_get (a flag to allow online users to automatically rename the files they rip with the track names found via CDDB, and (2) a --lazy flag that rips the entire CD, encodes it to MP3, renames it via the CDDB, makes a dir named after the artist "$PWD/ArtistName/", moves all MP3 files into that dir, and finally adds a playlist to the dir which XMMS can use). rip 0.51 ======== (1) Minor bugfixes and code cleanups were made to the code. rip 0.50 ======== (1) Version 0.50 adds new functionality including a flag to specify which CDROM device to rip the audio track(s) from and (2) a flag to set the CDROM read speed to multiples of "x" (e.g. 8x, 32x, 50x) rip 0.40 ======== (1) A fix was made for a "--move" bug which occured when attempting to move ripped mp3 files to a specified dir. (2) Code was added to allow the user to only rip to *.wav and not rip all the way to *.mp3. rip 0.32 ======== (1) This development release includes the addition of a flag to permit the automatic moving of MP3 files to a specified directory after they are ripped. (2) The ARGV parsing has also been significantly modified to shorten the script up a bit, hence the "development" status. rip 0.28 ======== (1) Initial version supports track rip args of the form "1-4 7 9-11 13 15" which it expands and rips tracks "1 2 3 4 7 9 10 11 13 15". (2) There are also flags for querying the CD in the drive and producing more verbose output.