Radreise-Wiki:Ini.pl: Unterschied zwischen den Versionen
Aus Radreise-Wiki
Jmages (Diskussion | Beiträge) |
Jmages (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
'''ini.pl''' enthält die Pfade des Hauptverzeichnisses '''''Wiki-Content''''' (''$baseDir'') und des Output-Verzeichnisses (''$outDir''). In letzterem landen alle generierten Dateien (kmz-Files, Imagemaps und Kilometrierungen). Ebenso müssen ''$username'' und ''$password'' an die lokalen Gegebenheiten angepasst werden. Das Output-Verzeichnis wird nicht automatisch angelegt. | '''ini.pl''' enthält die Pfade des Hauptverzeichnisses '''''Wiki-Content''''' (''$baseDir'') und des Output-Verzeichnisses (''$outDir''). In letzterem landen alle generierten Dateien (kmz-Files, Imagemaps und Kilometrierungen). Ebenso müssen ''$username'' und ''$password'' an die lokalen Gegebenheiten angepasst werden. Das Output-Verzeichnis wird nicht automatisch angelegt. Des weiteren sind ein paar globale Encoding-Routinen und ein Filewriter im Skript enthalten. | ||
'''Quellcode des Skripts:''' | |||
<nowiki> | <nowiki> | ||
use strict; | use strict; | ||
sub getIni | my $baseDir = "D:/a/data/Radfernwege-Wiki/Wiki-Content"; | ||
my $outDir = "D:/Eigene Dateien"; | |||
my $encoding = 'utf-8'; # Unicode | |||
my $encAnsi = 'cp1252'; # Windows Ansi | |||
my $encOut = 'cp850' ; # DOS Shell | |||
#====================================================== | |||
sub getIni { | |||
my $username = "username"; | my $username = "username"; | ||
my $password = "password"; | my $password = "password"; | ||
return ($baseDir, $outDir, $username, $password); | return ($baseDir, $outDir, $username, $password, $encoding, $encAnsi, $encOut); | ||
} | |||
#====================================================== | |||
use Digest::MD5 qw(md5_hex); | |||
use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); | |||
sub saveFileIfChangedOrNew { | |||
my ($path, $fileName, $file, $kmz) = @_; | |||
my $exitCode = 0; | |||
if (open(FILE, "< $path$fileName")) { | |||
my $md5 = Digest::MD5->new; | |||
while (<FILE>) { | |||
$md5->add($_); | |||
} | |||
close(FILE); | |||
my $md5_old = $md5->hexdigest; | |||
$md5 = Digest::MD5->new; | |||
$md5->add($file); | |||
my $md5_new = $md5->hexdigest; | |||
unless ($md5_old eq $md5_new) { | |||
print encode $encOut, " *** Overwriting file $fileName ***\n"; | |||
open FT,"> $path$fileName"; | |||
print FT $file; | |||
close FT; | |||
$exitCode = 1; | |||
if ($kmz) { | |||
my $zip = Archive::Zip->new(); | |||
$zip->addFile("$path$fileName","doc.kml"); | |||
$fileName =~ s/\.kml/\.kmz/; | |||
unless ( $zip->writeToFileNamed("$outDir/$fileName") == AZ_OK ) { | |||
die 'write error'; | |||
} | |||
} | |||
} | |||
} else { | |||
print encode $encOut, " *** Creating new file $fileName ***\n"; | |||
open FT,"> $path$fileName"; | |||
print FT $file; | |||
close FT; | |||
$exitCode = 1; | |||
if ($kmz) { | |||
my $zip = Archive::Zip->new(); | |||
$zip->addFile("$path$fileName","doc.kml"); | |||
$fileName =~ s/\.kml/\.kmz/; | |||
unless ( $zip->writeToFileNamed("$outDir/$fileName") == AZ_OK ) { | |||
die 'write error'; | |||
} | |||
} | |||
} | |||
return $exitCode; | |||
} | |||
#====================================================== | |||
use URI::Escape qw( uri_escape_utf8 ); | |||
use CGI; my $cgi = new CGI; | |||
sub encodePlaceNameURL { | |||
my $placeNameURL = $cgi->escape($_[0]); | |||
$placeNameURL =~ s/\%20/\_/g; | |||
$placeNameURL =~ s/\%/\./g; | |||
return $placeNameURL; | |||
} | |||
sub encodeRouteNameURL { | |||
my $urlstring = uri_escape_utf8($_[0]); | |||
$urlstring =~ s/%20/\_/g; | |||
$urlstring =~ s/\(/%28/g; | |||
$urlstring =~ s/\)/%29/g; | |||
$urlstring =~ s/\'/%27/g; | |||
return $urlstring; | |||
} | } | ||
return 1; | return 1; | ||
</nowiki> | </nowiki> |
Version vom 9. September 2011, 18:15 Uhr
ini.pl enthält die Pfade des Hauptverzeichnisses Wiki-Content ($baseDir) und des Output-Verzeichnisses ($outDir). In letzterem landen alle generierten Dateien (kmz-Files, Imagemaps und Kilometrierungen). Ebenso müssen $username und $password an die lokalen Gegebenheiten angepasst werden. Das Output-Verzeichnis wird nicht automatisch angelegt. Des weiteren sind ein paar globale Encoding-Routinen und ein Filewriter im Skript enthalten.
Quellcode des Skripts:
use strict; my $baseDir = "D:/a/data/Radfernwege-Wiki/Wiki-Content"; my $outDir = "D:/Eigene Dateien"; my $encoding = 'utf-8'; # Unicode my $encAnsi = 'cp1252'; # Windows Ansi my $encOut = 'cp850' ; # DOS Shell #====================================================== sub getIni { my $username = "username"; my $password = "password"; return ($baseDir, $outDir, $username, $password, $encoding, $encAnsi, $encOut); } #====================================================== use Digest::MD5 qw(md5_hex); use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); sub saveFileIfChangedOrNew { my ($path, $fileName, $file, $kmz) = @_; my $exitCode = 0; if (open(FILE, "< $path$fileName")) { my $md5 = Digest::MD5->new; while (<FILE>) { $md5->add($_); } close(FILE); my $md5_old = $md5->hexdigest; $md5 = Digest::MD5->new; $md5->add($file); my $md5_new = $md5->hexdigest; unless ($md5_old eq $md5_new) { print encode $encOut, " *** Overwriting file $fileName ***\n"; open FT,"> $path$fileName"; print FT $file; close FT; $exitCode = 1; if ($kmz) { my $zip = Archive::Zip->new(); $zip->addFile("$path$fileName","doc.kml"); $fileName =~ s/\.kml/\.kmz/; unless ( $zip->writeToFileNamed("$outDir/$fileName") == AZ_OK ) { die 'write error'; } } } } else { print encode $encOut, " *** Creating new file $fileName ***\n"; open FT,"> $path$fileName"; print FT $file; close FT; $exitCode = 1; if ($kmz) { my $zip = Archive::Zip->new(); $zip->addFile("$path$fileName","doc.kml"); $fileName =~ s/\.kml/\.kmz/; unless ( $zip->writeToFileNamed("$outDir/$fileName") == AZ_OK ) { die 'write error'; } } } return $exitCode; } #====================================================== use URI::Escape qw( uri_escape_utf8 ); use CGI; my $cgi = new CGI; sub encodePlaceNameURL { my $placeNameURL = $cgi->escape($_[0]); $placeNameURL =~ s/\%20/\_/g; $placeNameURL =~ s/\%/\./g; return $placeNameURL; } sub encodeRouteNameURL { my $urlstring = uri_escape_utf8($_[0]); $urlstring =~ s/%20/\_/g; $urlstring =~ s/\(/%28/g; $urlstring =~ s/\)/%29/g; $urlstring =~ s/\'/%27/g; return $urlstring; } return 1;