Βικιεπιστήμιο:Χειρισμός των bots

Πρώτ'απ'όλα, πρέπει να εγκαταστήσουμε τη « γλώσσα » python: όλα τα scripts της pywikipedia είναι γραμμένα σ'αυτή τη γλώσσα.

Πηγαίνουμε στο http://www.python.org: εκεί, εκτός από το python, θα βρούμε και μια πληθώρα από πληροφορίες γι'αυτή τη γλώσσα. Κάνουμε κλικ στο DOWNLOAD και διαλέγουμε το νεότερο python: αυτή τη στιγμή είναι το 2.5.1. Εφόσον έχουμε Windows, διαλέγουμε το Python 2.5.1 Windows installer.

Το εγκαθιστούμε όπως λέει (εγώ το έβαλα στο c:\python, για ευκολία) και... είμαστε έτοιμοι!

Το δεύτερο βήμα είναι η εγκατάσταση της pywikipedia, δηλαδή όλων των script (bot = script, με κάποιες δικές μας αλλαγές). Πηγαίνουμε λοιπόν στη σελίδα της pywikipedia στο toolserver [1]. Διαλέγουμε το pywikipedia-nightly.zip (μια και έχουμε windows). Το κατεβάζουμε, το αποσυμπιέζουμε κάπου και... εγώ προσωπικά το βάζω σε ένα ντοσιέ (που αποκαλώ wiki) μέσα στο ντοσιέ python (με copy-paste).

Πρώτα απ'όλα, ό,τι ακολουθεί ισχύει για τους χρήστες Windows.
Οι εντολές για τα bot δίνονται σε ένα παράθυρο DOS, που ανοίγουμε πληκτρολογώντας cmd στο κουτάκι run.

Το login.py είναι το πρώτο script που τρέχουμε. Μας ανοίγει την πόρτα στο ΒE: αυτή η πόρτα δεν θα κλείσει, ακόμα και αν κλείσουμε το παράθυρο (σταματώντας έτσι το bot). Μόνο αν ξανα-εκκινήσουμε τον Η/Υ, θα πρέπει να ξανατρέξουμε το login.py.

Δεν χρειάζεται να πούμε τίποτα το ιδιαίτερο για αυτό το script: αφού πληκτρολογήσουμε:

login.py

μας ζητάει το συνθηματικό μας (password). Του το δίνουμε και... έτοιμοι για να δουλέψουμε!

Μόνο που, για να δουλέψει, το login.py χρειάζεται μερικές πληροφορίες. Αυτές τις παίρνει από το επόμενο αρχείο (user-config.py).

(Για περισσότερες πληροφορίες, δείτε εδώ.)

mylang = 'el'
family = 'wiktionary'
usernames['wiktionary']['el'] = 'Lou bot'
console_encoding = 'utf-8'

Προσοχή, όμως: εάν χρησιμοποιούμε το notepad των Windows, πρέπει να αποθηκεύσουμε το κείμενο:

1. διαλέγοντας all files (κι όχι το προτεινόμενο .txt: μόνο έτσι μπορούμε να καλέσουμε το αρχείο μας fixes.py (και όχι fixes.py.txt...)
2. διαλέγοντας το utf-8 (κι όχι το προτεινόμενο ANSI). Εάν δεν το κάνουμε, ναι μεν δεν θα δούμε τη διαφορά, όμως το replace.py δεν θα δεχτεί ποτέ να κάνει τις αλλαγές του, βγάζοντας διάφορα μηνύματα για λάθη...

Το replace.py χρησιμοποιείται για να κάνει μαζικές αλλαγές (πχ. διορθώσεις) στο ΒΛ.

Αρχίζει τη δουλειά του « διαβάζοντας » το αρχείο fixes.py που βρίσκεται στο ίδιο ντοσιέ με το ίδιο το script. Αυτό το αρχείο το ετοιμάζουμε εμείς, βάζοντας μέσα όλες τις αλλαγές που θέλουμε να κάνουμε. Ακολουθεί ένα παράδειγμα ενός τέτοιου αρχείου:

# -*- coding: utf-8  -*-
import codecs
import sys, re


fixes = {
    'katigories': {
        'regex': False,
        'msg': {
               'el':u'Μετονομασία κατηγορίας',
              },
        'replacements': [
            (u'[[Κατηγορία:Ανθρώπινο σώμα στα γαλλικά]]', u'[[Κατηγορία:Ανθρώπινο σώμα (γαλλικά)]]'),
            (u'[[Κατηγορία:Αστερισμοί στα γαλλικά]]', u'[[Κατηγορία:Αστερισμοί (γαλλικά)''),
        ]
    }, 
}

Μερικές εξηγήσεις

επεξεργασία

Όταν ετοιμάζω ένα αρχείο fixes.py, αντιγράφω αυτό το μοντέλο, αλλάζοντας μόνο μερικά πράγματα.

  • Το 'katigories' είναι το γενικό όνομα που θα γράψω στην εντολή.
Υπάρχει τέτοιο όνομα διότι μπορεί το αρχείο να περιέχει πολλές τέτοιες κατηγορίες
(διευκολύνεται έτσι η ανάγνωσή του).
  • Το 'el' σημαίνει βέβαια ότι... μιλάμε ελληνικά!
  • Ακολουθεί ο τίτλος της εργασίας που κάνουμε. Αυτός θα εμφανιστεί στις « Πρόσφατες αλλαγές » (εδώ: Μετονομασία κατηγορίας)
  • Κάτω από το 'replacements', βλέπουμε τις αλλαγές.
Αρχίζουν με u': αυτό λέει στο bot ότι ό,τι ακολουθεί είναι γραμμένο σε Unicode.
Μετά βλέπουμε αυτά που θέλουμε να αλλάξουμε: πρώτα, το παλιό κείμενο, μετά, το νέο.

Η εντολή που γράφω συνήθως είναι:

replace.py -fix:katigories -xml:el-dump

Εξηγήσεις

επεξεργασία
  • Πρώτα γράφουμε το όνομα του script : replace.py
  • Του δίνουμε την πρώτη του εντολή: -fix:katigories
Αυτό λέει στο bot να διαβάσει το αρχείο fixes.py, να βρει την κατηγορία που θέλουμε (εδώ: katigories), και να κάνει ό,τι γράφεται κάτω από αυτόν τον τίτλο.
  • Ακολουθεί το : xml:el-dump
Αυτό δίνει την εντολή στο replace.py να διαβάσει το dump (= το συμπιεσμένο σύνολο των λέξεων του ΒΛ).
Το el-dump είναι το όνομα που του έδωσα εγώ, για ευκολία. Το κανονικό είναι κάτι σαν elwiktionary.20070819-pages-articles.xml.bz2!
  • Πατάμε το "enter" ! Το replace.py διαβάζει ό,τι πρέπει να κάνει, περνάει μερικά λεπτά να διαβάζει το xml, βρίσκει τις λέξεις που χρειάζονται αλλαγή και...
  • ...προτείνει την αλλαγή της λέξης! Απαντούμε « ναι », περιμένει μερικά δευτερόλεπτα, κάνει την αλλαγή και... προτείνει κι άλλη λέξη! Εδώ σταματάμε, ανοίγουμε τις « Πρόσφατες αλλαγές », ζητούμε την « εμφάνιση των bots », και ελέγχουμε αν η αλλαγή είναι σύμφωνη με αυτό που ζητήσαμε.
(Για ευκολία, ανοίγουμε την επιτήρηση IRC, όπου αρκεί να κάνουμε κλικ στη λέξη που μόλις τροποποιήθηκε, για να την δούμε μέσα στον browser μας.)
Ξαναρχίζουμε με μερικές ακόμα λέξεις και...
  • ... μετά, αφού βεβαιωθούμε ότι όλα πάνε καλά, πληκτρολογούμε a (= always).
Προσοχή, κίνδυνος: το always λέει στο bot να κάνει όλες τις αλλαγές χωρίς να ζητάει άδεια για κάθε λέξη... εξού ο κίνδυνος!)

Παρατηρήσεις

επεξεργασία
  • Για τη μετονομασία κατηγοριών, θα μπορούσαμε να χρησιμοποιήσουμε άλλο bot...
  • Να μην ξεχάσετε να αποθηκεύσετε το fixes.py σε utf-8!
  • Για περισσότερες πληροφορίες, δείτε εδώ.

Το pagefromfile.py χρησιμοποιείται για τη δημιουργία πολλαπλών σελίδων με βάση ένα αρχείο που τις περιέχει.
Μπορεί να χρησιμοποιηθεί, για παράδειγμα, για την εισαγωγή κλιτών μορφών.

Ας δούμε πρώτα με τι μοιάζει ένα αρχείο σελίδων:

0000
'''jour'''
{{=fr=}}
{{fr-κλίσ-rég}}
{{-ουσ-|fr}}
{{ξεν|fr|{{PAGENAME}}}} {{α}}
* [[μέρα]]
1111

0000
'''nuit'''
{{=fr=}}
{{fr-κλίσ-rég}}
{{-ουσ-|fr}}
{{ξεν|fr|{{PAGENAME}}}} {{θ}}
* [[νύχτα]]
1111

Ορίστε η εντολή που συνηθίζω να γράφω:

pagefromfile.py -start:0000 -end:1111 -titlestart:''' -titleend:''' -file:111.txt -log -notitle
  • Το -start: λέει στο bot πού αρχίζει κάθε σελίδα που θέλουμε να βάλουμε (εδώ: 0000).
  • Το -end: κάνει το ίδιο με το τέλος της σελίδας (εδώ: 1111).
  • Το -titlestart και -titleend του λένε πού αρχίζει και πού τελειώνει ο τίτλος της σελίδας που θέλουμε να δημιουργήσουμε (εδώ: αρχίζει με « ''' » και τελειώνει επίσης με « ''' »).
  • Το -file: παρουσιάζει το όνομα του αρχείου που περιέχει τις σελίδες που βάζουμε (εδώ: 111.txt).
  • Το -log δεν είναι υποχρεωτικό: μας επιτρέπει να δούμε ποιες λέξεις δημιουργήθηκαν<
  • Τέλος, το -notitle λέει στο bot να μην βάλει τον τίτλο μέσα στη σελίδα που δημιουργεί.
(Εξήγηση: ο « τίτλος » δεν χρειάζεται να βρίσκεται στην αρχή του κειμένου που εισάγουμε. Μπορούμε να τον βάλουμε στο τέλος! Εκεί που είναι εξαιρετικά χρήσιμο είναι η δημιουργία ανακατευθύνσεων.)

Παρατηρήσεις

επεξεργασία
  • Εάν η σελίδα υπάρχει ήδη, το bot την παραλείπει (εκτός κι αν βάλουμε την παράμετρο -force...).
  • Για τη δημιουργία του αρχείου σελίδων, υπάρχουν διάφορες μέθοδοι. Μπορείτε πχ. να συμβουλευτείτε τη σελίδα του Geraki (διαχειριστή στην Βικιπαίδεια).
  • Καλά θα είναι να αλλάξετε ελαφρά το αρχείο pagefromfile.py. Το επεξεργάζεστε με ένα απλό πρόγραμμα (πχ. το notepad των windows) και, στα μηνύματα (msg), προσθέτετε τη γραμμή
    'el': u'Αυτόματη εισαγωγή άρθρων'
    (ή ιταλικών ουσιαστικών, ή αγγλικών ρημάτων, ή οτιδήποτε άλλο).
  • Για εισαγωγή ανακατευθύνσεων, μην ξεχνάτε:
  • να βάλετε τον ανάλογο τίτλο στο pagefromfile.py (πχ. 'el' : 'Αυτόματη εισαγωγή ανακατευθύνσεων eo')
  • να γράψετε το αρχείο λέξεων σαν κι αυτό:
1111
'''visxi'''#ΑΝΑΚΑΤΕΥΘΥΝΣΗ [[viŝi]]
9999
δηλαδή βάζοντας τον τίτλο (που θα αφαιρέσετε στην εντολή μέσω του -notitle) στην ίδια γραμμή με το #ΑΝΑΚΑΤΕΥΘΥΝΣΗ)
(μη με ρωτάτε γιατί, δεν ξέρω, με μένα αρνήθηκε να δουλέψει διαφορετικά!)
  • Για περισσότερες πληροφορίες, δείτε εδώ (στα αγγλικά).

Αυτό το bot έχει φτιαχτεί από τον fr:Utilisateur:Kipmaster και βελτιωθεί από το fr:Utilisateur:Ftiercel. Θα χρησιμοποιηθεί στο ελληνικό ΒΛ μόλις αποφασιστεί.

Η δυσκολία προέρχεται απ'το ότι είναι γραμμένο για σύστημα linux, εκτός και αν κάποιος προγραμματιστής το μεταφράσει στα windows...

Εδώ θα βρείτε το tradInter doubleTracker.py, που προσέχει (και αφαιρεί) τις διπλές μεταφράσεις.

  • Εγκαθιστούμε (αν δεν έχει ήδη γίνει) τη γλώσσα perl: http://www.perl.org'. Ο απευθείας σύνδεσμος είναι: http://www.activestate.com/store/activeperl/download/. Γράφουμε τα στοιχεία μας (δεν είναι υποχρεωτικό) και, μετά, κλικ στο "Continue". Διαλέγουμε αυτό που χρειαζόμαστε (Windows x86 msi, για να το δοκιμάσουμε στα windows - αλλιώς, το package που ταιριάζει στο linux μας). Το εγκαθιστούμε.
  • Τρέχουμε το script getall.pl. Αυτό δημιουργεί ένα αρχείο που περιέχει όλες τις λέξεις, σε όλες τις γλώσσες.
  • Μέσα στο tranInter.py, αλλάζουμε τη γραμμή
    ftout = open ('./2007-7-25.txt', 'r')
    και βάζουμε το όνομα του αρχείου που μόλις αποκτήσαμε (δες την προηγούμενη γραμμή) από το getall.pl.
  • Μετά, γράφουμε την εντολή: tranInter.py και...

Αυτό είναι μια προσπάθεια αυτόματης κατηγοριοποίησης των λέξεων. Έχει εφαρμοστεί στα ελληνικά από το γαλλικό.

Το script βρίσκεται εδώ.