Fórum:ParcervenychBot.py (dokumentace)

Z WikiSkript

Tato stránka je dokumentace bota ParcervenychBot, jehož zdrojový kód je umístěn na MediaWiki:ParcervenychBot.py. Tento bot v žádném případě neaspiruje na to, aby byl profesionálně a dokonale naprogramován.

Editace, které bot provádí[upravit | editovat zdroj]

Bot provádí automatické úpravy textu článků v hlavním jmenném prostoru, ve jmenném prostoru Fórum, WikiSkripta a Nápověda podle přesně formulovaných kriterií. Jedná se o

  • úpravu obsahu článků — funkce check_page_content(pageTitle) —, zaměňují se nesprávně zapsaný název projekt „WikiSkripta“ (absence camelcase), špatně použité znaky pro spojovník pomlčkou, tři tečky za znak pro výpustku a anglické uvozovky českými,
  • přidávání redakční šablony — funkce add_redaction_template(pageTitle) — diskusním stránkám článků z hlavního prostoru, v nichž chybí.

Pro každý z těchto úkolů je vyhrazen editační limit maximálního počtu editací při jednom spuštění bota (proměnná editLimit).

Pokud text prošlý níže popsanými procesy není shodný s textem původním, dojde k editaci. V opačném případě k editaci nedochází.

„Wikiskripta“ → „WikiSkripta“, „wikiskripta“ → „WikiSkripta“[upravit | editovat zdroj]

Nejprve dojde k záměně všech sekvencí obsahujících „wikiskripta“ nebo „Wikiskripta“ za „WikiSkripta“, posléze dojde k záměně „wikiskripta.eu“ za „wikiskripta.eu“.

Spojovník → pomlčka[upravit | editovat zdroj]

Pokud

  • se na stránce nachází sekvence „ - “ (mezera — spojovník — mezera),
  • není zde tag <gallery>,
  • není zde tag <pre> a
  • není zde tag <source>,

dojde k nahrazení „ - “ za „ – “ a pak se v původním textu naleznou všechny

  • odkazy (text uvozený „[[“ a „]]“),
  • matematické vzorce (text uvozený „<math>“ a „</math>“),
  • texty uvozené tagy „<nowiki>“ a „</nowiki>“ a
  • texty uvozené tagy „<code>“ a „</code>“,

u nichž dojde k ekvivalentní záměně „ - “ za „ – “ a pak zpětnému nahrazení těchto fragmentů v textu stránky.

„...“ → „…“[upravit | editovat zdroj]

Pokud

  • se na stránce nachází sekvence „...“ (tři tečky),
  • není zde tag <gallery>,
  • není zde tag <pre> a
  • není zde tag <source>,

dojde k nahrazení „...“ za „…“ a pak se v původním textu naleznou všechny

  • odkazy (text uvozený „[[“ a „]]“),
  • matematické vzorce (text uvozený „<math>“ a „</math>“),
  • texty uvozené tagy „<nowiki>“ a „</nowiki>“ a
  • texty uvozené tagy „<code>“ a „</code>“,

u nichž dojde k ekvivalentní záměně „...“ za „…“ a pak zpětnému nahrazení těchto fragmentů v textu stránky.

"*" → „*“[upravit | editovat zdroj]

Pokud

  • se na stránce nachází anglické uvozovky,
  • nejsou zde nikde na stránce české (pravé české uvozovky využívají stejný znak jako anglické levé, což by při záměnách dělalo neplechu),
  • není zde tag <gallery>,
  • není zde tag <pre> a
  • není zde tag <source>,

je každý text uvozený anglickými uvozovkami nahrazen stejným textem uvozeným českými uvozovkami — v případě, že tyto uvozovky těsně nepředchází znak pro rovnítko. (Zabrání se tak nahrazování uvozeného textu ve zdrojovém kódu HTML, CSS a JavaScriptu.)

Zároveň je zde připojen cyklus, který prochází všechny možné části uvozeného textu rozděleného dle případných dalších uvozovek a provádí další případné náhrady, jelikož regulární výrazy v Pythonu neprovádí nejkratší možný match, nýbrž nejdelší.

Redakční šablona[upravit | editovat zdroj]

Pokud

  • vlastní článek neobsahuje text „{{Pracuje se“,
  • vlastní článek neobsahuje text „{{Rozcestník“,
  • vlastní článek obsahuje více než 100 znaků,
  • diskusní stránka neobsahuje text „{{Redakce“,
  • diskusní stránka neobsahuje text „{{Zkontrolovat“,
  • diskusní stránka neobsahuje text „#PŘESMĚRUJ“ (diskusní stránka by pak přesměrovávala na jinou diskusní stránku),

před vlastní text diskusní stránky je vložen text „{{Redakce\n|citace\n|členění\n|kategorie\n|licence\n|nadpisy\n|synonyma\n|obrázky\n|prolinkování|\nzdroje\n|portály\n|pravopis\n|typografie}}“. (Sekvence „\n“ je Pythonem interpretována jako nový řádek.)

Seznamy, které bot generuje[upravit | editovat zdroj]

Bot generuje seznamy článků se specifickým obsahem:

Wikifikace[upravit | editovat zdroj]

  • Jedním z nežádoucích jevů na wiki je používání html tagů, které se dají opsat wikikódem. Do seznamu Články, které potřebují wikifikaci je článek zařazen, pokud se v něm nachází jeden z těchto řetězců
    • „<br>“, „<br />“, „<br/>“,
    • „<hr>“, „<hr />“, „<hr/>“,
    • „<h1>“, „<h2>“, „<h3>“, „<h1 />“, „<h2 />“, „<h3 />“, „<h1/>“, „<h2/>“, „<h3/>“, „</h1>“, „</h2>“, „</h3>“,
    • „<li>“, „<li />“, „<li/>“, „</li>“,
    • „<b>“, „<b />“, „<b/>“, „</b>“,
    • „<p>“, „<p />“, „<p/>“, „</p>“,
    • „<i>“, „<i />“, „<i/>“, „</i>“,
    • „<u>“, „<u />“, „<u/>“, „</u>“,
    • „<a>“, „<a />“, „<a/>“ nebo „<a>“.
  • Do seznamu Stránky, které špatně používají CSS styly je článek zařazen, pokud se v něm nachází řetězec „style="“ nebo „style='“ (styly by měly být definovány pomocí parametru class).
  • Do seznamu Stránky s neuzavřenými závorkami je článek zařazen, pokud
    • se v jeho název nezačíná řetězcem „Fórum:“ (na stránkách na fóru se velmi často vyskytují emotikony); a zároveň
    • není v článku shodný počet znaků „[“ a „]“; nebo
    • není v článku shodný počet znaků „{“ a „}“; nebo
    • není v článku shodný počet znaků „(“ a „)“; nebo
    • není sudý počet apostrofů.
  • Do seznamu „Opravy obsahu“ je článek zařazen, pokud se u něj bot pokusil o automatickou opravu obsahu („Wikiskripta“ → „WikiSkripta“, „wikiskripta“ → „WikiSkripta“, spojovník → pomlčka, „...“ → „…“, "*" → „*“).

Portály[upravit | editovat zdroj]

Článek je zařazen do seznamu „Stránky bez odkazu na portálu“ v případě, že Aplication programming interface (API) WikiSkript nevrací žádné backlinks (stránky, jež na článek odkazují) ve jmenném prostoru Portál, a do seznamu „Stránky s odkazem jen na portálu zkouškových otázek“ v případě, že jsou API vráceny pouze portály s řetězcem „Otázky“ nebo „otázky“ v názvu, a zároveň pokud

  • není ve whitelistu
  • speciální stránka Odkazuje sem pro daný článek v sobě nemá řetězec „Portál“ (API občas špatně vyhodnotí přesměrovávání – pokud portál odkazuje na stránku A, která přesměrovává stránku B, API může chybně vracet backlinks pro stránku B)
  • nemá kategorii Kategorie:Rozcestník (rozcestníky nepotřebují odkaz na portálu, ten potřebují cílové stránky)
  • nemá v názvu „/PGS“ — v daném případě je zařazen do seznamu „Články postgraduálního studia bez odkazu na portálu“
  • nemá v názvu „/“ — v daném případě, pokud nemá v názvu „/PGS“, je zařazen do seznamu „Podstránky bez odkazu na portálu“
  • nemá kategorii Kategorie:Heslo — v daném případě je zařazen do seznamu „Hesla bez odkazu na portálu“

Seznam navrhovaných redirectů[upravit | editovat zdroj]

Seznam navrhovaných redirectů se tvoří tak, že v seznamu všech stránek (kromě whitelistu) se oboustranně nahradí dvojice řetězců:

  • „asa“ a „áza“,
  • „asy“ a „ázy“,
  • „osa“ a „óza“,
  • „asie“ a „ázie“,
  • „asia“ a „ázia“,
  • „itis“ a „itida“,
  • „choroba“ a „nemoc“,
  • „Choroba“ a „Nemoc“,
  • „emia“ a „émie“,
  • „emie“ a „émie“,
  • „poesa“ a „poéza“,
  • „poeza“ a „poéza“,
  • „ismus“ a „izmus“,
  • „pathie“ a „patie“,
  • „Chromosom“ a „Chromozom“,
  • „chromosom“ a „chromozom“.

Z tohoto seznamu se dále vyřadí položky obsahující řetězce „ochoroba“, „Dignosa“, „diagosa“, „žlas“, „chémie“ a „vasan“. Pokud nově vytvořený název stránky není v seznamu všech stránek, zařadí se do seznamu navrhovaných redirectů.

Přehled úvodních nastavení[upravit | editovat zdroj]

Proměnná Standardní hodnota Význam proměnné
user_name
'parcervenychBot'
Přihlašovací jméno (login) účtu, na něhož se bot přihlašuje
password heslo k účtu ParcervenychBot Heslo k účtu uvedeném v proměnné user_name
testurl
'http://www.test-wiki.lf1.cuni.cz/api.php'
URI API serveru testovací wiki; pokud chcete spouštět bota na testovací wiki, je nutné tuto hodnotu přiřadit do proměnné url:
url = testurl
url
'https://www.wikiskripta.eu/api.php'
URI API serveru WikiSkript
urlWikiHome
'https://www.wikiskripta.eu/index.php'
URI WikiSkript, slouží k vyhledávání nenapřímených odkazů na portálu pomocí speciální stránky, tedy vyhledávání mimo API
upload_server
'http://myform.xf.cz/wiki/upload.php'
URI serveru, který provádí nahrávání výstupu bota na internet; pokud bot edituje a nahrává tak výstup přímo do WikiSkript (Check WikiSkripta), zůstává nevyužito
logfile_name
'parcervenychbot.log'
Název textového souboru, kam má bot ukládat výstup na příkazovou řádku, pokud nenastaveno ("''"), tiskne pouze do standardního výstupu
noportal_whitelist_link
'http://myform.xf.cz/wiki/NPWhiteList.txt'
URI stránky, v níž jsou uvedeny tituly článků, které má bot při vyhledávání článků postrádajících odkaz na portálu ignorovat; každý titul musí být na samostatném řádku
redirect_whitelist_link
'http://myform.xf.cz/wiki/RedirectWhiteList.txt'
stejné jako noportal_whitelist_link, jen pro navrhování redirectů (aby byl návrh ignorován, lze zadat jak stávající název článku, tak návrh redirectu)
cj
cookielib.CookieJar()
Objekt, který se stará o Cookies při komunikaci se servery (API to potřebuje pro identifikaci); zkratka z CookieJar
editCount
0
Proměnná, která udává počet provedených editací, standardně se na začátek určuje jako 0, stejně tak před editací Check WikiSkripta
editLimit
60
Limit editací na jedno spuštění bota