Kategorien
FreewarWiki:Bot/Skripts/parasearch.php: Unterschied zwischen den Versionen
< FreewarWiki:Bot | Skripts
Zabuza (Diskussion | Beiträge) (analog) |
SniGG (Diskussion | Beiträge) (+online) |
||
Zeile 2: | Zeile 2: | ||
<div style="background-color:#ff9;border:1px solid #fc0;border-radius:5px;padding:10px;"> | <div style="background-color:#ff9;border:1px solid #fc0;border-radius:5px;padding:10px;"> | ||
Dies ist ein Skript von [[User:Cembon|Cembon]]. Es ist nicht der vollständige Quelltext des Bots, sondern nur die benötigten Teile. Wenn du hier Änderungen machst, schreibe bitte auf meine [[User Talk:Cembon|Diskussionsseite]] <br/> | Dies ist ein Skript von [[User:Cembon|Cembon]]. Es ist nicht der vollständige Quelltext des Bots, sondern nur die benötigten Teile. Wenn du hier Änderungen machst, schreibe bitte auf meine [[User Talk:Cembon|Diskussionsseite]] <br/> | ||
--[[User:Cembon|Cembon]] ([[User Talk:Cembon|Diskussion]] | [[Spezial:Beiträge/Cembon|Beiträge]]) 13:25, 26. Feb. 2012 (CET) | --[[User:Cembon|Cembon]] ([[User Talk:Cembon|Diskussion]] | [[Spezial:Beiträge/Cembon|Beiträge]]) 13:25, 26. Feb. 2012 (CET) <br /> | ||
Desweiteren befindet sich derzeit hier eine [http://cembon.galaxycore.de/BotFW/ Online-Version] des Bots.--[[Benutzer:sniGG|<font color="#FF0000">s</font><font color="#FACC2E">n</font><font color="#40FF00">i</font><font color="#2EFE9A">G</font><font color="#0000FF">G</font>]] <sup>[[Benutzer Diskussion:sniGG|<font color="#FF0000">why so serious?</font>]]</sup> 00:02, 23. Mai 2012 (CEST) | |||
</div> | </div> | ||
Aktuelle Version vom 23. Mai 2012, 00:02 Uhr
Dies ist ein Skript von Cembon. Es ist nicht der vollständige Quelltext des Bots, sondern nur die benötigten Teile. Wenn du hier Änderungen machst, schreibe bitte auf meine Diskussionsseite
--Cembon (Diskussion | Beiträge) 13:25, 26. Feb. 2012 (CET)
Desweiteren befindet sich derzeit hier eine Online-Version des Bots.--sniGG why so serious? 00:02, 23. Mai 2012 (CEST)
<?php class mwBot { private $server; private $nick; public function __construct($name, $server) { $this->nick = $name; $this->server = $server; } public function status($status, $code = 0) { print date("d.m.y H:i:s") . " => " . $status . ($code == 0?"":(" (".$code.")")) . "<br/>"; } /*################################# # APIVERBINDUNG ## #################################*/ private function getAPI($query) { $c = curl_init('http://' . $this->server . '/api.php?' . $query . '&format=json'); curl_setopt($c, CURLOPT_USERAGENT, 'BotFrameWorkApi -- Benutzer:' . $this->nick); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($c); curl_close($c); return json_decode($result,true)['query']; } /*################################# # HILFSFUNKTIONEN ## #################################*/ private function getContent($title) { $this->status('Hole Artikel: ' . htmlentities($title)); $pages = $this->getAPI('action=query&prop=info|revisions&titles=' . urlencode($title) . '&rvprop=timestamp|content&intoken=edit')['pages']; foreach($pages as $page) { return $page['revisions'][0]['*']; } } /*################################# # SPEZIELLE FUNKTIONEN ## #################################*/ /* Suche nach dem String $searchstr in der Kategorie $cat */ public function searchFor($cat, $searchstr) { $pages = $this->getAPI('action=query&list=categorymembers&cmtitle=Category:' . urlencode($cat) . '&cmlimit=500'); $out = 0; $out2 = 0; $list = ""; foreach($pages['categorymembers'] as $page) { if(strpos($page['title'], "Auftrag:") !== false) { $content = $this->getContent($page['title']); if(preg_match('#' . $searchstr . '=\W*(\w+)#si', $content,$match) == 1) { $out++; if($match[1] == 'none') { $out2++; } else { $list .= "<br>* [[" . $page['title'] . "]]"; } } } else { $this->status($page['title'] . 'wurde übersprungen: Ist kein Auftrag', 80); } } return "Gefunden: " . $out . 'mal, Auf <i>none</i> gesetzt: ' . $out2 . 'mal, ' . $list; } public function print2file($str, $file = 'output.txt') { return file_put_contents($file, $str); } } //Benutzername wird für den User-Agent benötigt $bot = new mwBot('Beispieluser', 'www.fwwiki.de'); //HINWEIS: Skript schreibt Output in die Textdatei output.txt, evtl muss diese bestehen und die nötigen Rechte gegeben sein! $botresult = $bot->searchFor("Aufträge", "Lösung"); if (false === $bot->print2file($botresult)) { echo '<br><br><br>Daten konnten nicht geschrieben werden, Datei "output.txt" vorhanden und beschreibbar?'; } echo '<br><br><br>' . $botresult;