#!/usr/bin/perl -w
#
#	this script is designed to take a standard xmms .m3u playlist
#	where the format is /path/to/your_artist/album/trackname.mp3
#	and output a list of paths for x-cd-record where the format is
# 	different, but will result in your playlist getting burned to 
#	cd still in mp3 format but with the name of the mp3 file 
#	changed to be nnn_artist_trackname.mp3, with all files in the
#	root dir of the cd's filesystem.
#
#	note that this is kind of an in-between translator type thing
#	and just parses one file format into another.  no actual file
#	moving or copying or burning will take place as a result of 
#	running this script.  You'll still have to use x-cd-record to 
#	open the file and acutally master the tracks/burn the cd
#
#	usage:  xm2cd.pl <xmms.m3u> <xcdrecord.lst>
#	where the .m3u file is a standard xmms trask listing, and 
#	xcdrecord.lst is the name of the track list you want to write 
#	it to (doesn't need to exist before the script is run)
#
#	everything else should just work
#
#	by Steve Glista <smiley@fish.malachiarts.org>
#
#

use strict;
use vars qw($DEBUGGING $done_headers);

# Configuration
#

# this should be an xmms playlist
my $playlist = $ARGV[0];

# and this should come out looking like a saved master track project
# be sure to leave the > so when you open the file you can write to it
my $burnlist = "\>$ARGV[1]";

# End configuration
#
#
# the working bits:
# 

# first, open the m3u playlist
open(INPATHS, $playlist)
  or die "Can't open $playlist: $!\n";

## store all lines 
my @paths = <INPATHS>;

## close file cause we don't need it anymore
close(INPATHS);

## open the output file
open(OUTPATHS, $burnlist)
  or die "Can't open $burnlist: $!\n";

## loop the part that does the actual work
foreach my $i (0..@paths-1) {
	my $chompath= $paths[$i];
	chomp $chompath;
	my @trackpath = split /\//, $chompath;
	my $trackname = "$trackpath[3]___$trackpath[5]";
	print OUTPATHS "ADD2 = \"$chompath\"\,\"\/"; 
	printf OUTPATHS ("%03d", $i+1); 
	print OUTPATHS "_$trackname\"\n";
};

close OUTPATHS;


syntax highlighted by Code2HTML, v. 0.9.1