Bruger:Hebbot/DaWiki Adm
Udseende
#!/usr/local/bin/perl -w use strict; use MediaWiki::Bot qw(:all); use Time::ParseDate; use Time::Local; use POSIX; use LWP::Simple; my $user = 'Hebbot'; my $pass = '*******'; # create and initialize editor my $WPDa = MediaWiki::Bot->new(); $WPDa->set_wiki({ protocol => 'http', host => 'da.wikipedia.org', path => 'w', }); $WPDa->login({ username => $user, password => $pass, }); my $WPDa_notice = "(vha. [[:en:Wikipedia:MediaWiki::Bot|MediaWiki::Bot]] - [[Brugerdiskussion:Heb|rapporter fejl]])"; # Action sub mytime($) { my $premaa = ""; my $predag = ""; my ($sek,$min,$time,$mdag,$maaned,$aar,$udag,$aardag,$isdst) = localtime(shift); $aar = $aar+1900; $maaned = $maaned+1; if ($maaned < 10) { $premaa = "0"; } if ($mdag < 10) { $predag = "0"; } return $aar."-".$premaa.$maaned."-".$predag.$mdag; } sub myattime($) { my $rawstring = shift; my $aar = substr($rawstring, 0, 4); my $maaned = substr($rawstring, 4, 2); my $dag = substr($rawstring, 6, 2); my $time = substr($rawstring, 8, 2); my $minut = substr($rawstring, 10, 2); my $sekund = substr($rawstring, 12, 2); $aar = $aar - 1900; $maaned = $maaned - 1; my $returntime = timelocal($sekund, $minut, $time, $dag, $maaned, $aar); return $returntime; } # action! my $lastatraw = get("http://toolserver.org/~dungodung/cgi-bin/sysopinactivity?timestamp=&wiki=dawiki&format=csv"); if (!$lastatraw) { exit; } chomp($lastatraw); my @lastat = split(/\n/, $lastatraw); my @botnicks = $WPDa->get_allusers(500, "sysop"); my @parsedbots; my $count365 = 0; my $count180 = 0; my $count30 = 0; my $count14 = 0; my $count5 = 0; my $ccount = 0; my $count = 0; my $count3mdr = 0; foreach my $botnick (@botnicks) { my $lastedit = $WPDa->last_active($botnick); my $lastepoch = parsedate($lastedit); my $nodays = floor(((time()-$lastepoch) / 86400)); my $nodaysun = ((time()-$lastepoch) / 86400); if ($nodays >= 91.3125) { $count3mdr++; } if ($nodays > 365) { $count365++; } elsif (365 >= $nodays && $nodays > 180) { $count180++; } elsif (180 >= $nodays && $nodays > 30) { $count30++; } else { if (14 >= $nodays) { $count14++; } if (5 >= $nodays) { $count5++; } $ccount++; } $count++; if ($count365+$count180+$count30+$ccount != $count) { print STDERR "Count error\n"; } push @parsedbots, $nodays . "|" . $botnick . "|" . $lastepoch; } my ($nusek, $numin, $nutime, $nudag,$numaaned,$nuaar,,,) = gmtime(time()); $nuaar = $nuaar + 1900; $numaaned = $numaaned + 1; my $prenumaaned = ""; my $prenudag = ""; my $prenutime = ""; my $prenumin = ""; my $prenusek = ""; if ($numaaned < 10) { $prenumaaned = "0"; } if ($nudag < 10) { $prenudag = "0"; } my $ligenu = $nuaar . "-" . $prenumaaned . $numaaned . "-" . $prenudag . $nudag . "T" . $nutime . ":" . $numin . ":" . $nusek . "[[UTC]]."; $count180 = $count180 + $count365; $count30 = $count30 + $count180; my $final = qq{Oversigt over tidspunkt for seneste redigeringer fra [[Speciel:Brugerliste/sysop|registrerede]] "[[WP:ADM|administratorer]]" p den danske Wikipedia pr. ''$ligenu''. Ud af $count administratorer har * '''$count365''' ikke foretaget redigeringer inden for de sidste '''365 d¯gn''', * '''$count180''' ikke foretaget redigeringer inden for de sidste '''180 d¯gn''', * '''$count30''' ikke foretaget redigeringer inden for de sidste '''30 d¯gn''' mens * '''$ccount''' har foretaget redigeringer inden for de sidste 30 d¯gn, ** heraf '''$count14''' inden for de sidste '''14 d¯gn''', og ** '''$count5''' inden for de sidste '''5 d¯gn'''. \{| class="wikitable sortable" border="1" ! Brugernavn ! Sidste adminhandling<br /><small>Via [http://toolserver.org/~dungodung/cgi-bin/sysopinactivity dungodungs sysopinactivity tool]</small> ! Sidste redigering }; @parsedbots = sort { (split(/\|/, $a))[2] <=> (split(/\|/, $b))[2] } @parsedbots; foreach my $parsedbot (@parsedbots) { my $editwarnl = ""; my $admwarnl = ""; my $editwarnr = ""; my $admwarnr = ""; my ($nodays, $botnick, $lastepoch) = split(/\|/, $parsedbot); my $attimer = 0; foreach my $attime (@lastat) { my ($atsnick, $atstime) = split(/\t/, $attime); if ($atsnick eq $botnick) { $attimer = myattime($atstime); } } my $nodyears = floor($nodays / 365.25); my $noddays = floor($nodays - ($nodyears*365.25)); my $nodreturn; if ($nodyears > 0) { $nodreturn = $nodyears . " Âr, " . $noddays . " dage <!-- $nodays (a) -->"; } else { if ($noddays == -1) { $noddays++; } $nodreturn = $noddays . " dage <!-- $nodays (b) -->"; } my $atdays = (time() - $attimer) / 86400; # print STDOUT "$atdays - $attimer\n"; my $atdyears = floor($atdays / 365.25); my $atddays = floor($atdays - ($atdyears*365.25)); my $atdreturn; if ($atdyears > 0) { $atdreturn = $atdyears . " Âr, " . $atddays . " dage <!-- $attimer (c) -->"; } else { if ($atddays == 365) { if ((time() - $attimer) < 86400) { $atddays = 0; } } $atdreturn = $atddays . " dage <!-- $attimer (d) -->"; } if ((time() - $attimer) > 15778800) { $admwarnl = "<font color=\"red\">"; $admwarnr = "</font>"; } if ((time() - $lastepoch) > 15778800) { $editwarnl = "<font color=\"red\">"; $editwarnr = "</font>"; } $final .= "|-\n"; $final .= "| " . "[[Bruger:" . $botnick . "|" . $botnick . "]] <small>([[Brugerdiskussion:" . $botnick . "|disk]])</small>\n| " . mytime($attimer) . " (" . $admwarnl . $atdreturn . " siden" . $admwarnr . ")\n| [[Speciel:Bidrag/" . $botnick . "|" . mytime($lastepoch) . "]] (" .$editwarnl . $nodreturn . " siden" . $editwarnr . ")\n"; } $final .= "|}\n\n"; $final .= "''Denne liste opdateres automatisk en gang i timen af [[Bruger:Hebbot|Hebbot]].\n[[Kategori:Wikipedia statistik]]\n\n"; my $includeline = "heraf har $count5 vÊret aktive inden for de sidste 5 d¯gn, $count14 inden for de sidste 14 d¯gn mens $count3mdr ikke har foretaget redigeringer inden for de sidste 3 mÂneder"; # print $final . "\n"; # $WPDa->edit({ # page => "Bruger:Hebbot/AdmStatus/inc", # text => $includeline, # summary => "Hyphest", # is_minor=> 0, # }); $WPDa->edit({ page => "Wikipedia:Wikipedia administratorer efter sidste redigeringstidspunkt/inc", text => $includeline, summary => "Opdateret status over [[WP:ADM|administratorers]] seneste redigeringer $WPDa_notice", }); $WPDa->edit({ page => "Wikipedia:Wikipedia administratorer efter sidste redigeringstidspunkt", text => $final, summary => "Opdateret status over [[WP:ADM|administratorers]] seneste redigeringer $WPDa_notice", });