BEGIN{push(@INC,'C:/MyScripts');}
use searchFreedb;
mainSearchFreedb('C:/MyScripts/freedb-update-20200201-20200301');
print "End of script\n";
####
package searchFreedb;
use strict;
use utf8;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(mainSearchFreedb);
@EXPORT_OK = qw(mainSearchFreedb);
$VERSION = 1.0;
$| = 1;
#############################################################
# mainSearchFreedb
#############################################################
sub mainSearchFreedb {
my ($searchdir) = @_;
open(FILE, ">C:/MyScripts/sresult_module.txt") || die "$!\n";
binmode FILE, ":utf8";
recursivSearchFreedb($searchdir);
close(FILE);
}
#############################################################
# recursivSearchFreedb
#############################################################
sub recursivSearchFreedb {
my ($dir) = @_;
die "dir $dir!\n" if(!$dir || !(-e $dir && -d $dir));
$dir =~ s/[\/\\]+/\//og;
$dir = $dir . '/' if( $dir !~ /\/$/o );
my ($dirname) = ( $dir =~ /^.*\/([^\/]+?)\/*$/o );
opendir(DIR,$dir) || warn __LINE__."$!\n";
my @all_dir_files = readdir(DIR);
closedir(DIR);
print "Folder: $dir => $dirname\n";
foreach my $dir_file ( sort @all_dir_files ) {
$dir_file =~ /^\.+$/o && next;
my $abspath = $dir . $dir_file;
if( -d $abspath ) {
recursivSearchFreedb($abspath);
}
else {
if($dir_file =~ /(^COPYING$|^README$)$)/io) {
print "skipping $dir_file\n";
next;
}
elsif(-z $abspath) {
next;
}
my ($content);
open(IN, "<$abspath") || die "$!\n";
while(my $line = ) {
next if not $line =~ /^#\s+xmcd/o;
$content .= $line;
my ($TITLEALL,$DISCID,$GENRE);
for(;;) {
my $line2 = ;
if($line2=~/^\s*DTITLE\s*=(.*)$/o) {$TITLEALL .= $1;}
if($line2=~/^\s*DISCID=\s*(.+?)\s*$/o) {$DISCID = $1;}
if($line2=~/^\s*DGENRE\s*=(.*)$/o) {$GENRE .= $1;}
$content .= $line2;
if($line2 =~ /^PLAYORDER=/o) {
if( $TITLEALL =~ /Romanti[cqk]/io ) {
print FILE "$content\n";
}
last;
}
}
}
close(IN);
}
}
}
##############################################################
# end of package
##############################################################
1;
####
use strict;
use utf8;
$| = 1;
#############################################################
# recursivSearchFreedb
#############################################################
sub recursivSearchFreedb {
my ($dir) = @_;
die "dir $dir\n" if(!$dir || !(-e $dir && -d $dir));
$dir =~ s/[\/\\]+/\//og;
$dir = $dir . '/' if( $dir !~ /\/$/o );
my ($dirname) = ( $dir =~ /^.*\/([^\/]+?)\/*$/o );
opendir(DIR,$dir) || warn __LINE__."$!\n";
my @all_dir_files = readdir(DIR);
closedir(DIR);
print "Folder: $dir => $dirname\n";
foreach my $dir_file ( sort @all_dir_files ) {
$dir_file =~ /^\.+$/o && next;
my $abspath = $dir . $dir_file;
if( -d $abspath ) {
recursivSearchFreedb($abspath);
}
else {
if($dir_file =~ /(^COPYING$|^README$)/io) {
print "skipping $dir_file\n";
next;
}
elsif(-z $abspath) {
next;
}
my ($content);
open(IN, "<$abspath") || die "$!\n";
while(my $line = ) {
next if not $line =~ /^#\s+xmcd/o;
$content .= $line;
my ($TITLEALL,$DISCID,$GENRE);
for(;;) {
my $line2 = ;
if($line2=~/^\s*DTITLE\s*=(.*)$/o) {$TITLEALL .= $1;}
if($line2=~/^\s*DISCID=\s*(.+?)\s*$/o) {$DISCID = $1;}
if($line2=~/^\s*DGENRE\s*=(.*)$/o) {$GENRE .= $1;}
$content .= $line2;
if($line2 =~ /^PLAYORDER=/o) {
if( $TITLEALL =~ /Romanti[cqk]/io ) {
print FILE "$content\n";
}
last;
}
}
}
close(IN);
}
}
}
############################################################
# main starts here
############################################################
open(FILE, ">C:/MyScripts/sresult_standalone.txt") || die "$!\n";
binmode FILE, ":utf8";
recursivSearchFreedb('C:/MyScripts/freedb-update-20200201-20200301');
close(FILE);
print "End of script\n";
####
Folder: C:/MyScripts/freedb-20200201-20200301/
Folder: C:/MyScripts/freedb-20200201-20200301/blues/
Folder: C:/MyScripts/freedb-20200201-20200301/classical/
Folder: C:/MyScripts/freedb-20200201-20200301/country/
Folder: C:/MyScripts/freedb-20200201-20200301/data/
Folder: C:/MyScripts/freedb-20200201-20200301/folk/
Folder: C:/MyScripts/freedb-20200201-20200301/jazz/
Folder: C:/MyScripts/freedb-20200201-20200301/misc/
Folder: C:/MyScripts/freedb-20200201-20200301/newage/
Folder: C:/MyScripts/freedb-20200201-20200301/reggae/
Folder: C:/MyScripts/freedb-20200201-20200301/rock/
Folder: C:/MyScripts/freedb-20200201-20200301/soundtrack/
End of script
####
Folder: C:/MyScripts/freedb-20200201-20200301/
Folder: C:/MyScripts/freedb-20200201-20200301/blues/
Malformed UTF-8 character: \xf6\x6e\x20\x26 (unexpected non-continuation byte 0x6e, immediately after start byte 0xf6; need 4 bytes, got 1) in pattern match (m//) at C:\MYSCRI~1\SEARCH~2.PL line 55, line 67.
Malformed UTF-8 character (fatal) at C:\MYSCRI~1\SEARCH~2.PL line 55, line 67.