Hallo, marcus.wolsc...@googlemail.com wrote: > Wenn du mir etwas schreibst um die automatisiert hoch zu laden. > Momentan mach ich das Reinkopieren in die Wiki-Seiten von Hand.
Ich hab hier aus einem anderen Leben ein Perl-Skript, mit dem ich automatisch Seiten an ein Mediawiki hochlade. Das MediaWiki.pm findet man bei CPAN, und den ganzen diff-Kram kann man sich natuerlich ggf. schenken. Bye Frederik use MediaWiki; use Text::Diff; use strict; die "usage: $0 <pagename> <contentfile>" unless ((scalar(@ARGV) == 2) or (scalar(@ARGV) == 3)); my $pagename = $ARGV[0]; my $contentfile = $ARGV[1]; my $force_otheruser = 0; my $force_bigchange = 0; die ("cannot open file '$contentfile'") unless open(CONT, $contentfile); local $/; my $new_content = <CONT>; close(CONT); my $wiki = MediaWiki->new(); $wiki->setup( { "wiki" => { "host" => "wiki.openstreetmap.de", "path" => "/" }, "bot" => { "user" => "my_username", pass => "my_password" } }); die ("page '$pagename' does not exist in wiki") unless $wiki->exists($pagename); my $page = $wiki->get($pagename, "rw"); my $lastedit = $page->last_edit(); my $lastedituser = $lastedit->{"user"}; $lastedituser =~ s/<[^>]*>//g; if ($lastedituser ne $wiki->user()) { die ("page '$pagename' edited by other user ($lastedituser)") unless ($force_otheruser); } my $old_content = $page->{"content"}; if ($old_content eq $new_content) { print "content not changed\n"; } else { my $d = diff(\$old_content, \$new_content, { CONTEXT => "0" }); my $plus=0; my $minus=0; foreach my $line(split/\n/, $d) { my $sign=substr($line,0,1); if ($sign eq "+") { $plus++; } elsif ($sign eq "-") { $minus++ }; } #print $d; die "too many changes" if (($plus + $minus > 20) && (!$force_bigchange)); print "changes: +$plus -$minus\n"; my $sum = $ARGV[2]; $sum .= " / " if ($sum ne ""); $sum .= "Automatisches Update +$plus Zeilen -$minus Zeilen"; $page->{"summary"} = $sum; $page->{"content"} = $new_content; $page->save(); print "page updated.\n"; } _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de