0
|
1 #!/usr/bin/perl -w |
|
2 |
|
3 |
|
4 use strict; |
|
5 |
|
6 my $verbose=1; |
|
7 |
|
8 my $bins_edit="bins_edit"; |
|
9 |
|
10 sub readTxt{ |
|
11 my $file=shift; |
|
12 my %hash; |
|
13 |
|
14 if (! open (FILE, $file)) { |
|
15 print "Warning: cannot open file '$file' for reading ($!), skiping."; |
|
16 return 1; |
|
17 } |
|
18 |
|
19 my $tag; |
|
20 my $value=""; |
|
21 LINE: while (<FILE>) { |
|
22 chomp; |
|
23 next LINE if /^#/; #discard comments |
|
24 next LINE if /^\s*$/; #ignore total whitespace |
|
25 s/^\s+//; |
|
26 s/\s+$//; |
|
27 print " Reading line '$_'\n" if ($verbose >= 3); |
|
28 if ($tag) { |
|
29 if (m%</$tag>%) { |
|
30 print " Found end tag </$tag>, " if ($verbose >= 2); |
|
31 chomp($value); |
|
32 $hash{$tag} = $value; |
|
33 print "value is '$hash{$tag}'\n" if ($verbose >= 2); |
|
34 $tag = ""; |
|
35 $value = ""; |
|
36 } else { |
|
37 $value .= $_."\n"; |
|
38 } |
|
39 } elsif (m/<\w+>/) { |
|
40 $tag = $_; |
|
41 $tag =~ s/<(\w+)>/$1/; |
|
42 print " Found begin tag <$tag>\n" if ($verbose >= 2); |
|
43 } |
|
44 } |
|
45 close (FILE) || bail ("can't close $file ($!)"); |
|
46 return %hash; |
|
47 } |
|
48 |
|
49 |
|
50 sub processFile{ |
|
51 my $file = shift; |
|
52 my $album = shift; # -a if album, empty string otherwise |
|
53 |
|
54 my %hash = readTxt($file); |
|
55 |
|
56 my $commandLine; |
|
57 if ($file =~ m%/album.txt$%) { |
|
58 $file =~ s%/album.txt$%/.%; |
|
59 $commandLine="$bins_edit --html --album "; |
|
60 } else { |
|
61 $file =~ s/.txt$/.xml/; |
|
62 $commandLine="$bins_edit --html "; |
|
63 } |
|
64 $commandLine .= "-v " foreach (2..$verbose); |
|
65 my $tagName; |
|
66 my $tagValue; |
|
67 while ( ($tagName, $tagValue) = each(%hash) ) { |
|
68 $tagValue =~ s/\'/\'\\\'\'/g; |
|
69 $commandLine .= "-g $tagName='$tagValue' " |
|
70 } |
|
71 $commandLine .= "$file"; |
|
72 |
|
73 print " Executing ?$commandLine?" if ($verbose >= 3); |
|
74 system($commandLine); |
|
75 } |
|
76 |
|
77 sub main { |
|
78 my $dir = shift; |
|
79 |
|
80 print "Processing directory '$dir'...\n" if ($verbose >= 1); |
|
81 |
|
82 if (!opendir(DIR, "$dir")) { |
|
83 print ("Warning: can't open dir $dir: $!\n"); |
|
84 return; |
|
85 } |
|
86 my @files = grep { !/^\./ } readdir(DIR); |
|
87 closedir DIR; |
|
88 |
|
89 foreach my $file (@files) { |
|
90 if (-d $dir."/".$file) { |
|
91 main ($dir."/".$file) |
|
92 } elsif ($file =~ m/^album.txt$/) { |
|
93 processFile($dir."/".$file, "-a"); |
|
94 } elsif ($file =~ m/.txt$/) { |
|
95 processFile($dir."/".$file, ""); |
|
96 } |
|
97 } |
|
98 } |
|
99 |
|
100 main($ARGV[0]); |