[Talk-de] TMC-Import startet und braucht eure Hilfe
marcus.wolschon at googlemail.com
marcus.wolschon at googlemail.com
Di Okt 6 14:01:52 UTC 2009
Danke.
Ich versuche das mal zu verstehen und auf dem Windows-Laptop
hier oder einem Linux-Rechner zu Hause irgendwie
ein Perl einzurichten.
Marcus
On Tue, 06 Oct 2009 15:54:40 +0200, Frederik Ramm <frederik at remote.org>
wrote:
> Hallo,
>
> marcus.wolschon at 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 at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-de
Mehr Informationen über die Mailingliste Talk-de