Legal stuff
A GPL'ed MP3 File Reorganizer
GPL © 2000 Frank de Lange


George - A GPL'ed file reorganizer and CD creator


  cd whereever_you_untarred_the_tarball/George-0.2

  ./george (or perl george)

  You can also install George using the provided Makefile.PL:

  perl Makefile.PL;make;make install



George is a file reorganizer and CD creator, especially suited for the creation of MP3 archive CD's. It will take files from all around your system and/or network, organize them into somewhat lexicographically sorted CD-sized chunks and provide means to create CDs using external pre-mastering and mastering software.

The current version of George is available through the project website

This is really a pre-release for those who can not wait to get their stuff organized. It works, but it is not as modular as I would like. It also does not abide to some good perl programming practices, although it is fairly robust for the quick hack it really is :-) So if you only want to run perl programs which use strict and such, wait for the next version. Then again, if you're that worried about these things, what are you doing running perl in the first place?

The next version will intergrate both the command line version and the Gnome-version in a single modular program. It will most likely also include a history feature which will make it easier to keep track of were you are in a project. But a said, that is all for future versions of George. Let's first get this thing rolling...



George was created out of a simple need, to move my music collection from all kinds of sources to CD-R. It has the ability to gather files from all around and reorganize those files into something which resembles an ordered list of albums (where an album means `anything organized in directories, excluding subdirectories'). It will collate identically-named directories from several sources into one `album', so you can spread your source files all over the system and/or network. As long as you tell George were to find those files, and as long as the access path to those files is fast enough to allow for on-the-fly CD-recording at your preferred speed, George will be able to work with your files.


Using the Gnome version of George is really simple. Start up the program by changeing into the George directory and running ./george or perl george. The user interface should pop up, and you can start reorganizing stuff. If George does not start but instead complains about missing modules, your system might not provide access to the required perl modules. To run George, you (or your friendly neighbourhood sysadmin) should make sure at least the following perl modules are installed:

If you also want to use George to actually create the CDs you just organized, you need some extra tools:

User Interface

Once you have George up an running, you'll be presented with a three-page notebook interface. The interface is sequentially organized, so you start on the first page and work your way to the last to turn your files into a neat stack of tried-and-true CD's. I'll go over the notebook pages one by one to give an idea of their purpose and functionality. By the way, if you want to have some pictures of what I'm talking about here, have a look at the HTML documentation which is included with the package and available online at the George project website at

Source Selection (Tracks)Source Selection (Albums)
Screenshot George interface 1 Screenshot George interface 2
Target SelectionCreate CDs
Screenshot George interface 3 Screenshot George interface 4


In the previous discussion the Preferences dialog was mentioned a few times. While I'm at it, I might as well describe the options this thing has to offer. You open it through the Settings-Preferences> menu or the Preferences toolbar button. The dialog which pops up has five pages, and should be mostly self-explanatory. If you hover your mouse pointer over an option (not over the labels) you should get a hint to the meaning of that particular option. I'll quickly go over the pages now.

DefaultsExternal ProgramsDevices and MediaIdentificationsUser Interface
Screenshot George preferences page 1 Screenshot George preferences page 2 Screenshot George preferences page 3 Screenshot George preferences page 4 Screenshot George preferences page 5



George nedds to be able to figure out some characteristics of a file by looking at some value in a textfile, since it is one of the intended goals of this program to be able to use arched source content as input for new CDs. This means that all relevant information has to be gathered at some point and stored in some easily parseable format. The output from the GNU find tool is appropriate for this, so I chose that to be the current `standard' fileformat. To create a filelist for use by George, you need the following incantation of find:

find directory -follow -type f ! -type d -printf 'directory\t%i %k %m %n %u %g %s %Tb %Td %TY %p\n'

or the simpler version of this:

find directory -follow -type f ! -type d -printf 'directory\t' -ls

The first line an edit of the code used in George, the second line is mostly equivalernt except for some weird cases involving symlinks. If you don't want your find to follow symlinks, leave out the -follow part of these commands. The <-type f ! -type d> stuff is there to avoid some problems when following symlinked directories. You may want to experiment with this to get the best results... Whatever you do, don't forget to include the tab between the directory and the rest of the find -ls output. George won't recognize you files without it.


George produces path-list files (which I dubbed cuesheets, 'cause that word has a nice professional ring to it :-) for consumption by mkisofs. These cuesheets consist of lines of filenames, one per line, which mkisofs uses to arrange files on the ISO9660 filesystem it creates. Since you can put a file almost anywhere (within the constraints of the ISO9660 filesystem) on a cdrom no matter its source location, the cuesheets have to provide mkisofs with both the location of the source file as well as the intended location of that file on the CD-ROM. As of version 1.12, mkisofs supports the use of external path-list files, before that you had to feed it these files through standard input. This is the reason why Geroge needs at leat this version of mkisofs. The format of a cuesheet file is simple, it consists of lines containing 'target_directory=source_file' directives. This is an example of a line from a cuesheet:


Everything before the '=' sign is the directory (starting from the implied root directory) on the CD where the file is supposed to go. Everything after the '=' sign is the soure file to use. The actual filename on CD consists of the target directory followed by the basename of the source file, This example would land at:



George needs a couple of modules of its own to function correctly. Currently the list includes the following `private' modules:


All these files reside in the lib directory of the distribution. If you run George directly from this directory, they should be found. If you instead use the makefile to install George somewhere on your system, they will probably land somewhere in your site_perl directory. George should still work OK, although it is possible that the logo pixmap won't show up in the About box. You can blame this on the vaguaries of the Gnome::About class.


George is not finished. Ther are many things which could and should be added, changed and/or improved. To name just a few:


Since all this documentation is actually included at the end of the main script source in perldoc format (also known as `pod'), you can generate your own fresh copy using the perldoc tools. The HTML-version was created using this command:

pod2html --noindex --title "George - Reorganize your MP3 collection" george > george.html

This creates the documentation for the command-line version of George:

pod2html --noindex --title "George - Reorganize your MP3 collection" george-command > george-command.html


Zarro Boogs Found, to paraphrase Bugzilla. Well, that's only because I haven't looked good enough. If you find 'm, or even kill 'm, send 'm to me please. Me in this case is Frank de Lange (> and don't forget to remove the spam block from that address...

Legal stuff

(C) 2000 Frank de Lange <>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Right, that's the standard preamble for the GNU General Public License. If you want to read the full version, you can find it in the COPYING file which comes with George. For the most up to date version go to


Frank de Lange <>