Funktionsweise des Bots im Detail
BearbeitenDie Tabellen
BearbeitenDer in PHP geschriebene Bot benutzt eine lokale Datenbank mit (derzeit) 3 Tabellen, um die Anzahl der Abfragen in die Wikipedia zu reduzieren.
- LinkFA_config
- Die config-Tabelle enthält den aktuellen 'Status' des Bots, so dass bei einem Neustart die Abarbeitung an (ungefähr) der Stelle weitergeführt werden kann, an der sie beendet wurde. Weiterhin sind in der config-Tabelle die Zähler für hinzugefügte & entfernte InterWiki - Auszeichnungen gespeichert.
- LinkFA_linking_articles
- Eine Liste der Artikel aus den abzuarbeitenden Wikipedia-Sprachversionen, welche die Vorlage Link FA verwenden, zusammen mit einem Marker, ob der Artikel schon abgearbeitet wurde oder nicht.
- LinkFA_featured_articles
- Eine Liste aller als "Excellent" bekannten Artikel aus allen Sprachversionen, für die eine entsprechende Vorlage bzw. Kategorie bekannt ist.
Der Ablauf
BearbeitenDie folgenden Schritte stellen grob umrissen den Ablauf einer Prüfung dar - die Reihenfolge der Arbeitsschritte stimmt nicht zwingend mit dem Code überein, entspricht aber der Abarbeitungslogik.
Vorbereitung
Bearbeiten- Leeren der Datenbank - Tabellen LinkFA_linking_articles und LinkFA_featured_articles
- Lese aus allen beauftragten Sprachversionen alle Artikel aus, welche die Vorlage Link FA (oder ihre Entsprechung) benutzen, und trage diese Artikel in LinkFA_linking_articles ein.
- Lese alle InterWiki - Links aus Benutzer:LinkFA-Bot/Vorlagen. Für jede dieser Vorlagen sammle alle diese Vorlage benutzenden Artikel und trage sie in die Tabelle LinkFA_featured_articles ein.
- Lese alle InterWiki - Links aus Benutzer:LinkFA-Bot/Kategorien. Für jede dieser Kategorien sammle alle enthaltenen Artikel und trage sie in die Tabelle LinkFA_featured_articles ein
- Gehe in den Modus Prüfung
Prüfung
Bearbeiten- Hole einen nicht abgearbeiteten Artikel aus der Tabelle LinkFA_linking_articles (Alphabetisch aufsteigend nach Titelname sortiert, die Sprachversion ist dabei zufällig). Wenn kein Artikel mehr unbearbeitet ist, gehe in den Modus Suche über.
- Lese den Artikeltext aus
- Sammle temporär alle InterWiki - Links des gefundenen Artikels
- Prüfe für jeden Interwiki - Link, ob der Zielartikel in LinkFA_featured_articles enthalten ist - wenn ja, muss der Link markiert werden.
- markiere den Artikel als abgearbeitet
- Sammle alle Vorkommen der Vorlage Link FA im Artikeltext
- Vergleiche die Vorkommen mit dem Sollwert aus den InterWiki - Links, bei Gleichheit gehe zum nächsten Artikel (kein Edit!)
- Für alle zu entfernenden Auszeichnungen prüfe nach, ob der Link ggf. auf eine Weiterleitung führt. Falls ja, korrigiere den InterWiki - Link und prüfe den neuen Zielartikel auf mögliche Exzellenz.
- Entferne sämtliche Link FA - Einträge aus dem Artikel
- Trage die Link FA - Markierungen für die gefundenen Sprachen als Block vor allen InterWiki - Link ein
- speichere den Artikel
Suche
Bearbeiten- Hole einen Artikel aus der Tabelle LinkFA_featured_articles. (Erneut alphabetisch aufsteigend sortiert). Sind keine unreferenzierten Artikel mehr vorhanden, beende den Durchlauf
- Markiere den Artikel als 'erledigt'
- Hole aus dem Artikel sämtliche InterWiki-Links und suche nach einem Link in eine der zu bearbeitenden Sprachversionen. (Ist kein solcher Link vorhanden, ignoriere den Artikel - Rösselsprünge zum Aufbau eines InterWiki - Link - Netzes überlässt dieser Bot den Spezialisten).
- Führe auf dem gefundenen Artikel eine Prüfung aus, sofern der InterWiki - Link "zurück" auf den aktuellen Artikel zeigt (neue InterWiki - Links werden nicht angelegt).