Benutzer Diskussion:LPT2011Bot

Aus Piratenwiki
Wechseln zu: Navigation, Suche

Doku zu dem Antragsbot

Hier soll die Doku entstehen zu dem ehemaligen Anthbot, der für Antragsfabriken in der Vergangenheit gute Dienste geleistet hat.

Benutzer_Diskussion:Mauk hat den Bot gesperrt, so dass derzeit keine Tests möglich sind ArnoldSchiller 06:18, 11. Jul. 2011 (CEST)

Simple LPT2011Bot

macht noch nichts ausser auf Benutzer:LPT2011Bot/Lastrun wild rumzuschreiben.

<?php
/*
Benötigt wikimate php-curl shuber-curl.php
*/

include 'globals.php';

$wiki = new Wikimate;
$lastrun = $wiki->getPage('Benutzer:LPT2011Bot/Lastrun'); // create a new page object
//$lastrunCode = $lastrun->getText(); //Sicherung
$date =  date(DATE_RFC822); //Zeit
$text = "\n".$date."\n"; //Zeit plus Sicherung
print $text;
$lastrun->setText("$text"); //Löscht lastrun und setzt das neue Datum
$section = 0;
$summary = "$date";
$minor = 1;
$lastrun->setSection( $text, $section, $summary, $minor ); // Zurückschreiben
$antragsfabrik = array(
    'prop' => 'links',
    'titles' => 'BY:Landesparteitag_2011.1/Antragsfabrik'
);

$link_result =  $wiki->query($antragsfabrik);

foreach ($link_result[query][pages] as $antrags_pageid) {
          $antragsfabrik_links = $antrags_pageid[links];
}

foreach ($antragsfabrik_links as $antragsfabrik_linktitle) {
              $antragstexte["$antragsfabrik_linktitle[title]"] =  $wiki->getPage("$antragsfabrik_linktitle[title]");
}

foreach ($antragstexte  as $seite => $text) {
                  $lastrun = $wiki->getPage('Benutzer:LPT2011Bot/Lastrun');
                  $posant = strpos($seite, 'Antragsfabrik');
                  if ($posant !== false) {
                  $ja = 0;
                  $nein = 0;
                  $enthaltung = 0;
                  $regex = '/# [0-9|a-z|A-Z|Ä|ä|Ü|ü|Ö|ö|\[|:|\||\]|\s|\w]+/';
                    foreach ($antragstexte[$seite]->getAllSections(false, WikiPage::SECTIONLIST_BY_NAME) as $key=>$value){
                            $posfuer = strpos($key, 'FÜR');
                            if ($posfuer !== false){
                          if(preg_match_all($regex,$value,$matches))
                           {
                           print_r($matches);
                           foreach($matches[0] as $val){
                                              $ja++;
                           }
                                                   
                           }
                           $jastimmen = "\n|Ja = ".$ja."";
                         }
                  $posgegen = strpos($key, 'GEGEN');
                  if ($posgegen !== false){
                        
                      if(preg_match_all($regex,$value,$matches))
                       {
                       print_r($matches);
                       foreach($matches[0] as $val){
                                     $nein++;
                       }
                          
                           }
                           $neinstimmen = "\n|Nein = ".$nein."";
                         }
                  $posent = strpos($key, 'enthalten');
                  if ($posent !== false){
                           if(preg_match_all($regex,$value,$matches)){
                           print_r($matches);
                           foreach($matches[0] as $val){
                                $enthaltung++;
                       }
                          
                           }
                           $enthaltungstimmen = "\n|Enthaltung = ".$enthaltung."";
                         }
                        
                    }
                    $stimmen = $jastimmen.$neinstimmen.$enthaltungstimmen;
                    $antrag = "".$antragstexte[$seite]->getText()."";
                    $patterns = '/}}/';
                    $replace = "<!-- LPT2011Bot Count Begin //-->".$stimmen."\n<!-- LPT2011Bot Count End //-->}}";
                    $warschonda = strpos($antrag, '<!-- LPT2011Bot Count Begin //-->');
                            if ($warschonda === false){
                $antrag = preg_replace($patterns, $replace, $antrag,1);
                            } else {
                $patterns = '/\|Ja = \d+/';
                $replace = $jastimmen;
                $antrag = preg_replace($patterns, $replace, $antrag,1);
                $patterns = '/\|Nein = \d+/';
                $replace = $neinstimmen;
                $antrag = preg_replace($patterns, $replace, $antrag,1);
                $patterns = '/\|Enthaltung = \d+/';
                $replace = $enthaltungstimmen;
                $antrag = preg_replace($patterns, $replace, $antrag,1);
                            }
                   
                    $lastrun->newSection($seite, $stimmen);
                    $testseite = preg_replace('/\/BY:Landesparteitag 2011.1\/Antragsfabrik/', '', $seite);
                    //print $testseite;
                    $lasttest = $wiki->getPage('Benutzer:LPT2011Bot'.$testseite.'');
                    $lasttest->setText("$antrag");
                      $section = ($section + 1);
                    }else{
                    print "\n\n\n".$seite." interessiert mich nicht!!!\n\n\n";
                    }
          }

?>

DPL benötigt

Die Extension:DynamicPageList ist ein universelles reporting im Piratenwiki welches Inhalte von Seiten einer Kategorie darstellt. Ist bereits installiert und kumuliert schon die BW Stammtische und auch schon über alpha (1.8.8). Testweise der Kontostand in KontostandDPL.

Übernimmt bisher die Funkton von weiten Wikidatenbank-Diensten.

Anwendungen

Antragsfabrik Bayern

BY:Landesparteitag_2011.1/Antragsfabrik bindet bestimmte Inhalte von SÄA

Strukturen dieser Seiten sind äquivalent, z.B. in SÄA:Einbindung von Vorlage:Satzungsänderungsantrag ist hauptsächlich (aber nicht nur!) damit das ganze nach was aussieht. Wichtiger ist die Vorlage:Satzungsänderungsantrag Bayern die alle für die Listendarstellung wichtigen Daten enthält.

Die Listenform kommt dann mit DPL zustande: Dabei wird erst nach einer Kategorie vorselektiert (die Kategorie wird in Vorlage:Satzungsänderungsantrag Bayern gesetzt), dann mittels eines regulären Ausdrucks (includenotmatch/includematch) eingereichte von nicht-eingereichten Anträgen unterschieden. Die Parameter zur Vorlage:Satzungsänderungsantrag Bayern werden dann an die Vorlage:Satzungsänderungsantrag Bayern Listview weitergegeben, und die dann ausgegeben. (Falls Teile des Templates möglicherweise schwer lesbar sind: Sorry, einfach als Magie begreifen :))

Das ist alles was für eine erste Version der Antragsfabrik nötig ist.

Für das was aktuell in Bayern läuft braucht man dann noch einen Hausmeister ein wenig Mathematik beherrscht, also Stimmen zählt und eine inverse, gewichtete Entropie (aka. mehr Magie) bestimmt - aber das kann mein Haustier auch für euch machen wenn ihr wollt.Benutzer:LPT2011Bot

Weblinks

LPT2011Bot Autolist

Benutzer_Diskussion:LPT2011Bot/Autolist