1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/perl
- use strict;
- use warnings;
- if ( ! defined $ARGV[0] ) {
- print "Need to pass dir\n";
- exit 1;
- }
- my $dir_path = shift(@ARGV);
- if ( ! -d $dir_path ) {
- print "$dir_path doesnt look like a dir\n";
- exit 1;
- }
- my @info_files;
- my @audio_files;
- foreach my $file ( split("\n",`ls $dir_path`) ) {
- if ( $file =~ m/^(audio_[0-9]{2}.inf)/ ) {
- push(@info_files, $1);
- } elsif ( $file =~ m/^(audio_[0-9]{2}.wav)/ ) {
- push(@audio_files, $1);
- }
- }
- my %tracks_map;
- @tracks_map{@audio_files} = @info_files;
- sub sanitize_title($) {
- my $title = shift;
- my $san_title;
- open(my $fh, ">>", \$san_title) or die "Couldnt open $!\n";
- foreach my $char ( split("",$title) ) {
- if ( $char =~ m/[\'\"\:\,\.\&\(\)]/ ) {
- print $fh "";
- } elsif ( $char =~ m/\s/ ) {
- print $fh "_";
- } else {
- print $fh "$char";
- }
- }
- close $fh;
- return $san_title;
- }
- foreach my $audio_file ( sort keys %tracks_map ) {
- my $track_title = "null";
- foreach my $line ( split("\n", `cat $dir_path/$tracks_map{$audio_file}`) ) {
- if ( $line =~ m/^Tracktitle=\s+(.*)$/ ) {
- $track_title = sanitize_title($1);
- }
- }
- if ( $track_title eq "null" ) {
- print "Couldnt get title from $tracks_map{$audio_file}\n";
- exit 1;
- }
- #print "$audio_file -> $tracks_map{$audio_file} -> '$track_title'\n";
- $tracks_map{$audio_file} = $track_title;
- }
- foreach my $audio_file ( sort keys %tracks_map ) {
- my $filename;
- if ( $audio_file =~ m/^audio_([0-9]{2}).wav/ ) {
- $filename = $1 . "_" . $tracks_map{$audio_file} . ".wav";
- } else {
- print "could get track number\n";
- exit 1;
- }
- print "mv $dir_path/$audio_file $dir_path/$filename\n";
- system("mv $dir_path/$audio_file $dir_path/$filename") == 0
- or die "Failed to mv $audio_file\n";
- }
|