⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tracknames.pl

📁 刻录光盘的程序
💻 PL
字号:
#!/usr/local/bin/perl # A quick perl hack to get rename files pulled in with cdda2wav.# by billo@billo.com#use Socket;use IO::Handle;use Env qw(USER);use strict;no strict 'subs'; # can't get it to stop complaining about SOCKmy $state = "header";my $global_album = "Artist / Title";my $global_title = "Title";my $global_artist = "Artist";my @global_tracks = ("") x 100;my $global_ntracks = 0;my @track_offsets = ();my $disc_id = 0;my $disc_time = 0;if ($#ARGV != 1){    print "usage: cddbhack.pl CDDBHOST PORT < audio.cddb\n";    exit 0;}while (<STDIN>){    if ($state eq "header")    {	if (/#\s[\s]*(\d[\d]*)$/)	{	    push @track_offsets, $1;	} elsif (/#\s[\s]*Disc length:\s(\d[\d]*)/) {   	    $disc_time = $1;	    $state = "discid";        }    } elsif ($state eq "discid")    {	if (/DISCID=(\w[\w]*)/)	{	    $disc_id = $1;	    last;	}     }}my $query_string = "cddb query $disc_id " . ($#track_offsets + 1);foreach my $offset (@track_offsets){    $query_string .= " $offset";}$query_string .= " $disc_time";print "$query_string\n";my $host = $ARGV[0];my $port = $ARGV[1];my $iaddr = inet_aton($host);my $paddr = sockaddr_in($port, $iaddr);socket(SOCK, AF_INET, SOCK_STREAM, getprotobyname('tcp')) or die "socket: $!";connect(SOCK, $paddr) or die "connect: $!";autoflush SOCK 1;print "Connected.\n";my ($status, $result) = &resp(\*SOCK);if (int($status) != 201){    print "Unexpected status.\n";    close(\*SOCK);    exit 0;}$host = `hostname`;$host =~ s/\n//g;&cmd(\*SOCK, "cddb hello $USER $host billo-scan 0.1");($status, $result) = &resp(\*SOCK);if (int($status) != 200){    print "Unexpected status.\n";    close(\*SOCK);    exit 0;}&cmd(\*SOCK, "$query_string");($status, $result) = &resp(\*SOCK);if (int($status) != 200){    print "Unexpected status.\n";    close(\*SOCK);    exit 0;}my ($ignore, $cat, $id, @rest) = split (" ", $result);my $read_string = "cddb read $cat $id";&cmd(\*SOCK, $read_string);&resp(\*SOCK);while (<SOCK>){    if (/^\./)    {	# print $_;	# print "last line\n";	last;    } else {	&process($_);	# print $_;    }}&cmd(\*SOCK, "quit");&resp(\*SOCK);close(\*SOCK);&rename;exit 0;sub cmd{    my ($S, $cmd) = @_;    print "$cmd\n";    print $S "$cmd\r\n";}sub resp{    my ($S) = @_;    my ($code, $message);    while (<$S>)    {	if (/^(\d[\d]*)\s.*/)	{	    # print "\n$1\n";	    print "$_\n";	    $code = $1;	    $message = $_;	    last;	}	sleep(1);    }    my @return_array = ($code, $message);    return @return_array;}sub process {    my ($line) = @_;    $_ = $line;    if (/^DTITLE=(.*)$/)    {	$global_album = $1;	$_ = $global_album;	if (m/([^\/][^\/]*)\s\/\s([^\/][^\/\n\r]*)/)	{	    $global_artist = $1;	    $global_title = $2;	}	print "$global_album\n";	print "$global_title\n";	print "$global_artist\n";	return;    }    if (/^TTITLE(\d[\d]*)=(.*)$/)    {	my $track = $1 + 1;	if ($track > $global_ntracks)	{	    $global_ntracks = $track;	}	$global_tracks[$track] = sprintf ("%s-%02d-%s", $global_title, 					  $track, $2);	$global_tracks[$track] =~ s/\s$//g;	$global_tracks[$track] =~ s/'//g;	$global_tracks[$track] =~ s/\s/_/g;	$global_tracks[$track] =~ s/:/_/g;	$global_tracks[$track] =~ s/\?//g;	$global_tracks[$track] =~ s/\*//g;	$global_tracks[$track] =~ s/\\/_/g;	$global_tracks[$track] =~ s/\s/_/g;	$global_tracks[$track] =~ s/\//_/g;	print "Track match " . $global_tracks[$track] . "\n";    }}sub rename{    my $i = 1;        for ($i = 1; $i <= $global_ntracks; $i++)    {	my $track_name = $global_tracks[$i];	if ($track_name ne "")	{	    my $file_name = sprintf("audio_%02d.wav", $i);	    my $new_file_name = sprintf("$track_name.wav", $i);	    	    my $mv_cmd = "mv '" . $file_name . "' '" 		. $new_file_name . "'";	    print "$mv_cmd\n";	    `echo $mv_cmd >> rename.sh`;	}    }}sub unrename{    my $i = 1;        for ($i = 1; $i <= $global_ntracks; $i++)    {	my $track_name = $global_tracks[$i];	if ($track_name ne "")	{	    my $file_name = sprintf("$track_name.wav", $i);	    my $new_file_name = sprintf("audio_%02d.wav", $i);	    	    my $mv_cmd = "mv '" . $file_name . "' '" 		. $new_file_name . "'";	    print "$mv_cmd\n";	    `echo $mv_cmd >> unrename.sh`;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -