Hallo,
Wolfgang W. Wasserburger wrote:
> Na da bin ich ja froh, daß ichs hier in Österreich umgekehrt gemacht habe
> und dennoch fehlen mir immer wieder Nodes (ich hänge auch an bestehende an
> ;-), gebe aber auch gleich zu, daß ich meine diesbezüglichen Erfahrungen
> noch nirgends zu elektronischem Papier gebracht habe - sorry
Ich hab am Ende jede Stunde:
* aktuelles Stunden-Diff vom planet-Server geholt
* mit oscgrep alle geloeschten Nodes rausgegreppt
* verglichen, ob irgendeine dieser IDs eine war, die ich vorher
eingefuegt hatte (wenn man "comm" bedienen kann, wirds einfacher...)
* dann mit einem kleinen Perlskript (angehaengt) alle diese Nodes
un-geloescht
* und den betr. Usern eine Nachricht geschickt (von Hand)
Bye
Frederik
use strict;
use LWP;
my $dryrun=0;
my ($upload_user, $upload_pass) = ("meinusername","meinpassword");
if (scalar(@ARGV) != 2 || $ARGV[0] !~ /^(node|way|relation)$/)
{
print "usage: undelete.pl <node|way|relation> <id>\n";
exit;
}
my ($what, $id) = @ARGV;
my $undo=0;
my $copy=0;
my $out;
my $lastedit;
my $ua = LWP::UserAgent->new;
$ua->credentials("www.openstreetmap.org:80", "Web Password",
$upload_user, $upload_pass);
my $req = HTTP::Request->new(GET =>
"http://www.openstreetmap.org/api/0.5/$what/$id/history");
my $resp = $ua->request($req);
if (!$resp->is_success)
{
print "$what $id cannot be retrieved: ".$resp->status_line."\n";
exit;
}
my $undo_user;
foreach (split(/\n/, $resp->content()))
{
if (/<$what/)
{
/id="([^"]+)"/ or die;
die unless $id eq $1;
/user="([^"]+)/;
my $user=$1;
/visible="([^"]+)/;
my $visible=$1;
if ($visible eq "false")
{
$undo=1;
$copy=0;
$undo_user=$user;
}
else
{
$lastedit = $user;
$undo=0;
$copy=1;
$out=$_;
}
}
elsif ($copy)
{
$out.=$_;
$copy=0 if (/<\/$what/);
}
};
if ($undo)
{
if (length($out))
{
print "$what $id deleted by '$undo_user'; restoring previous
version by '$lastedit'\n";
exit if $dryrun;
$req = HTTP::Request->new(PUT =>
"http://www.openstreetmap.org/api/0.5/$what/$id");
$req->content("<osm version='0.5'>\n$out</osm>\n");
$resp = $ua->request($req);
if (!$resp->is_success)
{
print "$what $id cannot be uploaded: ".$resp->status_line."\n";
exit;
}
}
}
else
{
print "$what $id is not deleted\n";
}
--
Frederik Ramm ## eMail [email protected] ## N49°00'09" E008°23'33"
_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de