#!/usr/bin/perl -w

################################################################################
#
# Used programs: - mv
#                - rm
#                - ls
#                - mp3info
#
# Sorts MP3 files into a generated directory structure.
#
# The file has to be named like 'author - title.mp3'.
#
# Calling: organize_mp3.pl /home/foo/mp3
#
# Copyright: Sven Gaerner (sgaerner@gmx.net)
#
# License: GPL
#
################################################################################
#
# Version: 1.0 Sven Gaerner
# 20.01.2000
# added base functionality
#
# Version: 1.1 Sven Gaerner
# 10.02.2000
# added functionality to modify the MP3 tag
################################################################################

$directory = $ARGV[0];
$usage = "Please enter the directory which should be reorganized as first parameter: \nUsage: $0 /home/foo/dir\n";
$tmpfile = "/tmp/list.tmp";
$mp3file = "";
$ls_cmd = "ls -1 *.mp3 > $tmpfile";
$mv_cmd = "mv \"$mp3file\" \"$dirname[0]\"";
$rm_cmd = "rm -rf $tmpfile";
$status = "ok\n";
$count = 0;
$ext = ".mp3";

if($#ARGV) {
	print($usage);
	exit 1;
}

print "\nChanging directory to $directory...";
chdir $directory;

print "\nCreating file list...";
system $ls_cmd ;
print "$status";

open(INFILE, "<$tmpfile");
while(<INFILE>) {
	chop;
	$mp3file = $_;
	@dirname = split(/ - /);
	$dirname[1] =~ s/$ext//g;
	mkdir $dirname[0], 0755;
	print "Moving $mp3file to $dirname[0]...";
	system "mv \"$mp3file\" \"$dirname[0]\"";
	print "$status";
	system "mp3info -w -G \"\" -t \"$dirname[1]\" -a \"$dirname[0]\" \"$dirname[0]/$mp3file\"";
	$count += 1;
}
close(INFILE);

if($count eq 1) {
	print "\n$count file was moved.\n";
}
else {
	print "\n$count files were moved.\n";
}

print "Deleting temp file...";
system $rm_cmd;
print "$status";
