Χρήστης:Mirmibot/Bot
Εμφάνιση
Εγκατάσταση Wikibot
[Επεξεργασία | επεξεργασία κώδικα]Gereral Setings
[Επεξεργασία | επεξεργασία κώδικα]Operation System | WinXP |
PYTHONEXE | C:\Programme\Python26 |
PYTHONLIB | C:\Programme\pywikipedia |
Εγκατάσταση
[Επεξεργασία | επεξεργασία κώδικα]Πως να εγκαταστήσετε το λογισμικό για μποτς |
---|
1) Οδηγίες: http://meta.wikimedia.org/wiki/Pywikipediabot 2) Εγκατάσταση Python - download the latest Python v2.x from http://www.python.org/download/ - install it 3) Εγκατάσταση Framework for Wikipedia - Download PyWikipediaBot from http://tools.wikimedia.de/~valhallasw/pywiki - copy it into destination directory 4) Set Environment - set permanent environment system variables PYTHONEXE PYTHONPATH and PATH - PYTHONPATH = PYTHONEXE + ; + PYTHONLIB - PATH = PATH + PYTHONEXE - reboot 5) Configure framework - cmd - cd %PYTHONPATH% - python generate_user_files.py - family -> default - language -> el - username -> <user>bot - variant -> s 6) Test the framework - δημιούργησε τον χρήστη <user>bot - βρες μια σελίδα για να πειραματιστείς. Εγώ λόγω του cmd που δεν χειρίζεται το ελληνικό αλφάβητο δημιούργησα μια σελίδα Test για προσωρινή δοκιμαστική χρήση. - python login.py - python basic.py -page:Test |
Πρώτες χρήσεις
[Επεξεργασία | επεξεργασία κώδικα]Παραδείγματα
[Επεξεργασία | επεξεργασία κώδικα]Παραδείγματα |
---|
1) Παραδείγματα απλών προγραμμάτων έχει εδώ: http://meta.wikimedia.org/wiki/Pywikipediabot/Scripts - python basic.py -page:Test - python add_text.py -page:Test -text:Kato - python add_text.py -page:Test -up -text:Pano - python replace.py -page:Test "Test" "Kalimera" - python replace.py -page:Test "Kalimera" "Kalispera" 2) Τα βασικά του προγραμματισμού θα τα βρεις εδώ: http://en.wikibooks.org/wiki/Python_Programming Python v2.6.5 documentation http://docs.python.org/ |
Παράδειγμα 1
[Επεξεργασία | επεξεργασία κώδικα]Πως να αφαιρούμε τόνους και διαλυτικά από λέξεις |
---|
Περιγραφή της άσκησης
Λοιπόν, ξεκινούμε: #!/usr/bin/python
# -*- coding: utf-8 -*-
# (C) Mirmibot 2010
__version__ = '$Id: 001.py $'
#import wikipedia as pywikibot def atono_gramma(gramma):# αντικατάσταση κεφαλαίων με τόνους
#if gramma == u'Ά': return u'Α' if gramma == u'Έ': return u'Ε' if gramma == u'Ή': return u'Η' if gramma == u'Ί': return u'Ι' if gramma == u'Ό': return u'Ο' if gramma == u'Ύ': return u'Υ' if gramma == u'Ώ':return u'Ω' αντικατάσταση πεζών με τόνους
#if gramma == u'ά': return u'α' if gramma == u'έ': return u'ε' if gramma == u'ή': return u'η' if gramma == u'ί': return u'ι' if gramma == u'ό': return u'ο' if gramma == u'ύ': return u'υ' if gramma == u'ώ':return u'ω' αντικατάσταση κεφαλαίων με διαλυτικά
#if gramma == u'Ϊ':return u'Ι' αντικατάσταση πεζών με διαλυτικά
#if gramma == u'ΐ': return u'ι' if gramma == u'ϊ': return u'ι' if gramma == u'ΰ': return u'υ' if gramma == u'ϋ':return u'υ' για όλα τα υπόλοιπα, καμιά αλλαγή
return gramma
# end atono_gramma
#def atona_grammata(metonous): xoris_tonous = for i in range (0, len(metonous)-1): xoris_tonous = xoris_tonous + atono_gramma(metonous[i]) return xoris_tonous# end of atona
def main(): Lexi = "Καλημέρα σας παιδιά, τράλαλά, τραλαλά ..." pywikibot.output(Lexi) Lexi = atona_grammata(Lexi)pywikibot.output(Lexi) end of main
if __name__ == "__main__": try: main() finally:pywikibot.stopme() |
Παράδειγμα 2
[Επεξεργασία | επεξεργασία κώδικα]Πως να πιάσουμε το περιεχόμενο μιας σελίδας |
---|
Περιγραφή της άσκησης
Λοιπόν, ξεκινούμε: #!/usr/bin/python
# (C) Mirmibot 2010
__version__ = '$Id: 002.py $'
# Αρχικά μερικές βιβλιοθήκες που υπάρχουν στην διάθεση του καθενός
import wikipedia as pywikibot
# ξέρουμε ότι η ζητούμενη σελίδα λέγεται «Test» και την αναρτούμε
page = pywikibot.Page(pywikibot.getSite(), ' Test')
# Τώρα έχουμε όλα τα στοιχεία που χρειαζόμαστε και που μπορεί να μας ενδιαφέρουν για την επιπλέον επεξεργασία
# μπορούμε να τα δούμε, ή και να τα επεξεργαστούμε ανάλογα με τις ανάγκες μας
# εδώ για παράδειγμα απλώς εκτυπώνουμε μερικά στοιχεία που μπορεί να μας ενδιαφέρουν
# ο Τίτλος της σελίδας
pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.title())
# Όλο το κείμενο της σελίδας
pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.get())
# Σε ποιες κατηγορίες είναι;
pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.categories())
# Ποιες φωτογραφίες περιέχει;
pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.imagelinks())
# Ποια πρότυπα περιέχει;
pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.templates())
|
Παράδειγμα 3
[Επεξεργασία | επεξεργασία κώδικα]Πως βρίσκουμε αν υπάρχει το κλειδί |
---|
m = re.search('DEFAULTSORT',page.get())
if m == None:
# το DEFAULTSORT δεν υπάρχει και πρέπει να προστεθεί
|
Παράδειγμα 4
[Επεξεργασία | επεξεργασία κώδικα]Πως βρίσκουμε την σωστή θέση |
---|
Το DEFAULTSORT πάει στο τέλος της σελίδας και πριν από τις κατηγορίες, και πριν από τα ιντερβίκι. Εδώ υποθέτουμε ότι δεν υπάρχουν ιντερβίκια, είναι όμως εύκολο και να εξακριβωθεί. m = re.search('[[Κατηγορία',page.get())
if m == None:
# το DEFAULTSORT μπορεί να προστεθεί κατευθείαν στο τέλος της σελίδας
else:# προσθέτουμε το DEFAULTSORT στο σημείο που δείχνει το m
|
Παράδειγμα 5
[Επεξεργασία | επεξεργασία κώδικα]Πως προσθέτουμε το DEFAULTSORT |
---|
Ας πούμε, ότι έχουμε την σελίδα.
Παράδειγμα #page είναι η σελίδα και page.title() ο τίτλος της σελίδας
# αφαιρούμε τους τόνους
text = atona_grammata(page.title())
# τμηματίζουμε τον τίτλο σε λέξεις (όνομα, επώνυμο, άλλες λέξεις κλπ)
onomateponymo = string.split(text)
# από πόσες λέξεις αποτελείται ο τίτλος;
Len = len(onomateponymo)
# συνήθως έχουμε δύο λέξεις (όνομα, επώνυμο)
# εδώ αντιστρέφουμε την σειρά τους
# if Len == 2:text = onomateponymo[1] + ' ' + onomateponymo[0] μερικές φορές έχουμε μόνο μια λέξη (μόνο όνομα ή μόνο επώνυμο, ή μόνο παρατσούκλι)
elif Len == 1:text = onomateponymo[0]
|
Εφαρμογές
[Επεξεργασία | επεξεργασία κώδικα]Εφαρμογή 1
[Επεξεργασία | επεξεργασία κώδικα]Πως να σχηματίσουμε μια λίστα των άρθρων που βρίσκονται στις Κατηγορίες «Γεννήσεις το χ» μέχρι «Γεννήσεις το ψ», όπου χ και ψ είναι έτη. |
---|
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia as pywikibot import catlib newCatTitle = u'Χρήστης:Μυρμηγκάκι/τι να ελέγξω/Στοιχεία προσώπου' listString = "" for etos in range (0, 100): if etos < 10: oldCatTitle = u'Γεννήσεις το 180'+str(etos) else: oldCatTitle = u'Γεννήσεις το 18'+str(etos) cat = catlib.Category(pywikibot.getSite(), 'Category:' + oldCatTitle) listOfArticles = cat.articlesList(recurse = False) for article in listOfArticles: listString = listString + "*[[%s]]\n" % article.title() list = pywikibot.Page(pywikibot.getSite(), newCatTitle) list.put(listString, comment=u'Ανακεφαλαίωση Κατηγορίας') pywikibot.stopme() |
Εφαρμογή 2
[Επεξεργασία | επεξεργασία κώδικα]Πως να βρούμε τα ιντερβίκια από μια δεδομένη σελίδα. |
---|
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia as pywikibot import string #έστω ότι έχουμε την σελίδα [[Παύλος Κουντουριώτης]] #να τα ιντερβίκια: #πιάσε τα ιντερβίκια με την σειρά και δες την γλώσσα και τον τίτλο elPage = pywikibot.Page(pywikibot.getSite(), u'Παύλος Κουντουριώτης') interwikis = elPage.interwiki() for foreignPage in interwikis: pywikibot.output(u"\n>>> interwiki site \03{lightpurple}%s\03{default} <<<" % foreignPage.site()) pywikibot.output(u"\n>>> interwiki page \03{lightpurple}%s\03{default} <<<" % foreignPage.title()) #τέλος pywikibot.stopme() |
Εφαρμογή 3
[Επεξεργασία | επεξεργασία κώδικα]Πως να πιάσουμε όλα ή ένα συγκεκριμένο πρότυπο μαζί με τα δεδομένα του από μια δεδομένη σελίδα. |
---|
# Έστω ότι έχουμε την σελίδα του Ντέμη Ρούσου και θέλουμε το κουτί πληροφοριών. # Ξέρουμε ότι στην σελίδα αυτή υπάρχουν διάφορα πρότυπα. Το κουτί πληροφοριών είναι ένα # από αυτά. Το δεύτερο είναι το «ηλικία από έτος γεννήσεως», κοινώς «ηγη». # Το ηγη θα μας ενδιαφέρει αργότερα, αλλά εδώ απλώς θέλουμε το κουτί πληροφοριών, # που λέγεται «πληροφορίες καλλιτέχνη». # Λοιπόν, ξεκινάμε. #!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia as pywikibot elPage = pywikibot.Page(pywikibot.getSite(), u'Ντέμης Ρούσος') templates = elPage.templates() templatesWithParams = elPage.templatesWithParams() for (inPageTemplate, param) in templatesWithParams: if inPageTemplate.title() == u"Πληροφορίες Καλλιτέχνη": pywikibot.output(u"Το πρότυπο ονομάζεται >>> \03{lightpurple}%s\03{default} <<<" % inPageTemplate.title()) pywikibot.output(u"και έχει τις εξής παράμετρους: ") for parameter in param: pywikibot.output(u"\03{lightpurple}%s\03{default}" % parameter) pywikibot.stopme() |
Εφαρμογή 4
[Επεξεργασία | επεξεργασία κώδικα]Πως να συμπληρώσουμε τα πεδία του «Στοιχεία προσώπου» από το αντίστοιχο πρότυπο της γερμανικής βικιπαίδειας μέσω ιντερβίκι. |
---|
Σημείωση: Το παρόν σκριπτ είναι απλώς μια προσωρινή έκδοση μιας προσωπικής εργασίας του χρήστη Μυρμηγκάκι. Χρησιμοποιήθηκε για την εξόρυξη στοιχείων και δούλεψε σε ικανοποιητικό βαθμό. Όποιος θέλει να το επεκτείνει ή να το βελτιώσει, ή να το τροποποιήσει για τους δικούς του σκοπούς, ας το κάνει. Το σκριπτ διατίθεται ελεύθερα όπως όλη η βικιπαίδεια. #!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia as pywikibot import re, string #Initialization #CatTitle = u'Οικογένεια Κουντουριώτη' CatTitle = u'Χρήστης:Μυρμηγκάκι/τι να ελέγξω' #CatTitle = u'Χρήστης:Μυρμηγκάκι/τι να ελέγξω/πολλά είναι ρε' #CatTitle = u'Χρήστης:Μυρμηγκάκι/τι να ελέγξω/Στοιχεία προσώπου' newCatTitle = u'Συζήτηση_προτύπου:Στοιχεία_προσώπου/Συμπλήρωση μέσω ιντερβίκι' page = pywikibot.Page(pywikibot.getSite(), CatTitle) Fehler_gefunden = False Anzahl_ausgesonderter_Saetze = 0 slice_number = 5 slice_thick = 250 counter = 0 if slice_number < 10: newCatTitle = newCatTitle + u'/0'+str(slice_number) else: newCatTitle = newCatTitle + u'/'+str(slice_number) def etos_gennisis_i_thanatou( datum ): ETOS = u'' vChr = None m = re.search(u'v. Chr.',datum) if m != None: vChr = True m = re.search(u'Jahrhundert',datum) if m != None: datum = datum.split('.',1) datum = datum[0] datum = datum.split(' ') datum = datum[len ( datum ) - 1] datum = datum.lstrip(u'[') try: jh = int(datum) Jahrhundert = str(jh) + u'ος αιώνας' if vChr == True: Jahrhundert = Jahrhundert + u' π.Χ.' return Jahrhundert except ValueError: return u'' etos = 0 datum = datum.split(' ') for teil in datum: teil = teil.rstrip(u']') teil = teil.lstrip(u'[') try: etos = int(teil) except ValueError: continue if (etos > 31) and (etos <2020): ETOS = teil if vChr == True: ETOS = ETOS + u' π.Χ.' break else: ETOS = u'' return ETOS def imerominia_genniseos_i_thanatou( datum ): m = re.search(u'v. Chr.',datum) if m != None: return u'' m = re.search(u'Jahrhundert ',datum) if m != None: return u'' imera = 0 minas = u'' datum = datum.split(' ') if len(datum) < 3: return u'' tag = datum[0].split('.') try: tag[0] = tag[0].rstrip(u']') tag[0] = tag[0].lstrip(u'[') imera = int(tag[0]) except ValueError: imera = 0 datum[1] = datum[1].rstrip(u']') datum[1] = datum[1].lstrip(u'[') if datum[1] == u'Januar': minas = u'Ιανουαρίου' elif datum[1] == u'Februar': minas = u'Φεβρουαρίου' elif datum[1] == u'März': minas = u'Μαρτίου' elif datum[1] == u'April': minas = u'Απριλίου' elif datum[1] == u'Mai': minas = u'Μαΐου' elif datum[1] == u'Juni': minas = u'Ιουνίου' elif datum[1] == u'Juli': minas = u'Ιουλίου' elif datum[1] == u'August': minas = u'Αυγούστου' elif datum[1] == u'September': minas = u'Σεπτεμβρίου' elif datum[1] == u'Oktober': minas = u'Οκτωβρίου' elif datum[1] == u'November': minas = u'Νοεμβρίου' elif datum[1] == u'Dezember': minas = u'Δεκεμβρίου' if (imera > 0) and (minas != u''): imerominia = str(imera)+u' '+minas else: imerominia = u'' return imerominia def topos_gennisis_i_thanatou( site, orte ): global Fehler_gefunden listString = u'' pywikibot.output(u">>> Orte ist \03{lightpurple}.%s.\03{default} <<<" % orte ) #--Direktumsetzungstabelle -------------------------------------- if orte == u'[[Trabzon|Trapezunt]]': ort = u'[[Τραπεζούντα]]' listString = listString + u"%s " % ort return listString if orte == u'[[Serres (Griechenland)|Serres]], [[Griechenland]]': ort = u'[[Νομός Σερρών]] [[Ελλάδα]]' listString = listString + u"%s " % ort return listString if orte == u'[[Eleusis]], [[Attika (Landschaft)|Attika]]': ort = u'[[Ελευσίνα]] [[Αττική]]' listString = listString + u"%s " % ort return listString if orte == u'[[Epirus (historische Region)]], Griechenland': ort = u'[[Ήπειρος]] [[Ελλάδα]]' listString = listString + u"%s " % ort return listString if orte == u'[[Skiathos (Chora), Skíathos, Griechenland': ort = u'[[Σκιάθος]] [[Ελλάδα]]' listString = listString + u"%s " % ort return listString if orte == u'[[Pella (Makedonien)|Pella]]': ort = u'[[Αρχαία Πέλλα]]' listString = listString + u"%s " % ort return listString if orte == u'[[Mon Repos]], [[Korfu]]': ort = u'[[Μον Ρεπό]] [[Κέρκυρα]]' listString = listString + u"%s " % ort return listString if orte == u'Buenos Aires': ort = u'[[Μπουένος Άιρες]] [[Αργεντινή]]' listString = listString + u"%s " % ort return listString if orte == u'New York City': ort = u'[[Νέα Υόρκη]]' listString = listString + u"%s " % ort return listString if orte == u'[[New York City]]': ort = u'[[Νέα Υόρκη]]' listString = listString + u"%s " % ort return listString if orte == u'[[Tripolis (Griechenland)]]': ort = u'[[Τρίπολη Αρκαδίας]]' listString = listString + u"%s " % ort return listString orte = orte.split(u' ') for ort in orte: ort = ort.rstrip(u",") ort = ort.rstrip(u"]") ort = ort.lstrip(u"[") if len (ort) == 0: #--Tabele der zu ignorierenden Wörter --------------------------- return listString if ort == u'Berg': continue if ort == u'unsicher:': continue if ort == u'auf': continue if ort == u'bei': continue if ort == u'der': continue if ort == u'Insel': continue if ort == u'Longbridge': continue if ort == u'Xydra': continue if ort == u'Kymi': continue if ort == u'Agia': continue if ort == u'Triada': continue if ort == u'Stadt': continue if ort == u'heute': continue if ort == u'oder': continue if ort == u'Maritima': continue #--Umsetzungstabelle -------------------------------------------- if ort == u'Sylebria': ort = u'[[Σηλυβρία]]' listString = listString + u"%s " % ort continue if ort == u'Vouni': ort = u'[[Βουνί Κεφαλονιάς]]' listString = listString + u"%s " % ort continue if ort == u'Kalenzi': ort = u'[[Καλέντζι Αχαΐας]]' listString = listString + u"%s " % ort continue if ort == u'Psari': ort = u'[[Ψάρι Τριφυλίας]]' listString = listString + u"%s " % ort continue if ort == u'Antiochia': ort = u'[[Αντιόχεια]]' listString = listString + u"%s " % ort continue #--Versetzungstabelle ------------------------------------------- if ort == u'Skíathos': ort = u'Skiathos' if ort == u'Prousos': ort = u'Ευρυτανία' if ort == u'Tripoli': ort = u'Tripoli (Griechenland)' if ort == u'Arta': ort = u'Arta (Griechenland)' if ort == u'Volos': ort = u'Volos (Stadt)' if ort == u'Pyrgos': ort = u'Pyrgos (Peloponnes)' if ort == u'England': ort = u'Vereinigtes Königreich' if ort == u'Drama': ort = u'Drama (Stadt)' if ort == u'Mani': ort = u'Mani (Peloponnes)' if ort == u'Lamia': ort = u'Lamia (Griechenland)' if ort == u'Ägina': ort = u'Ägina (Griechenland)' if ort == u'Aigai': ort = u'Vergina' if ort == u'Soloi': ort = u'Soloi (Kilikien)' if ort == u'Caesarea': ort = u'Caesarea Maritima' if ort == u'Trapezunt': ort = u'Trabzon' try : pywikibot.output(u">>> 7. Ort ist \03{lightpurple}.%s.\03{default} <<<" % ort ) local_page = pywikibot.Page(site, ort) if local_page.isRedirectPage(): local_page = local_page.getRedirectTarget () local_interwikis = local_page.interwiki() for local_elPage in local_interwikis: local_site = local_elPage.site() if (local_site.family.name == 'wikipedia') and (local_site.lang == 'el'): listString = listString + u"[[%s]] " % local_elPage.title() pywikibot.output(u">>> Ort: \03{lightpurple}%s\03{default} wurde durch: \03{lightpurple}%s\03{default} ersetzt.<<<" % (ort , local_elPage.title())) break except: # listString = listString + u"%s " % ort pywikibot.output(u">>> Fehler in Zeile 106: Ort \03{lightpurple}.%s.\03{default} <<<" % ort ) Fehler_gefunden = True return listString listString = "" #|ΟΝΟΜΑ=Δημητράκης Δεληγιάννης #|ΑΛΛΑ ΟΝΟΜΑΤΑ= #|ΜΙΚΡΗ ΠΕΡΙΓΡΑΦΗ= #|ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΗΣ= #|ΕΤΟΣ ΓΕΝΝΗΣΗΣ=1783 #|ΤΟΠΟΣ ΓΕΝΝΗΣΗΣ= #|ΗΜΕΡΟΜΗΝΙΑ ΘΑΝΑΤΟΥ= #|ΕΤΟΣ ΘΑΝΑΤΟΥ=1848 #|ΤΟΠΟΣ ΘΑΝΑΤΟΥ= listString = listString + u"__TOC__\n" listString = listString + u"==Εισαγωγή==\n" listString = listString + u"Ο Κατάλογος αυτός περιέχει άρθρα της Ελληνικής βικιπαίδειας " listString = listString + u"στα οποία λείπει το πρότυπο «[[:Πρότυπο:Στοιχεία προσώπου|Στοιχεία προσώπου]]», ενώ υπάρχει κάποιο " listString = listString + u"αντίστοιχο ξένο άρθρο στην Γερμανική ή και Αγγλική βικιπάιδεια που διαθέτει " listString = listString + u"συμπληρωμένο αντίστοιχο πρότυπο. Πιθανώς, ο κατάλογος αυτός να βρίσκεται ακόμα σε " listString = listString + u"δοκιμαστικό στάδιο. Τυχόν λάθη, ελλείψεις, συμβουλές και παρατηρήσεις, όχι όμως " listString = listString + u"ζητωκραυγές και συγχαρητήρια μπορούν να γραφτούν [[Συζήτηση προτύπου:Στοιχεία " listString = listString + u"προσώπου|στην σελίδα συζήτησης]] ή να διευθυνθούν στο [[Συζήτηση " listString = listString + u"χρήστη:Μυρμηγκάκι|Μυρμηγκάκι]].\n" listString = listString + u"==Κατάλογος==\n" listString = listString + u"Τα πεδία του προτύπου θέλουν έλεγχο, είναι όμως μάλλον έτοιμα. " listString = listString + u"Ο έλεγχος γίνεται με το σηματάκι {{Y}} στο πεδίο «Έτοιμο», " listString = listString + u"ή με γενική κριτική εδώ ακριβώς.\n" listString = listString + u"{|class = \"wikitable\"\n" listString = listString + u"|-\n" listString = listString + u"|Έτοιμο\n" listString = listString + u"|Όνομα σελίδας\n" listString = listString + u"|ΟΝΟΜΑ\n" #listString = listString + u"|ΑΛΛΑ ΟΝΟΜΑΤΑ\n" #listString = listString + u"|ΜΙΚΡΗ ΠΕΡΙΓΡΑΦΗ\n" listString = listString + u"|ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΗΣ\n" listString = listString + u"|ΕΤΟΣ ΓΕΝΝΗΣΗΣ\n" listString = listString + u"|ΤΟΠΟΣ ΓΕΝΝΗΣΗΣ\n" listString = listString + u"|ΗΜΕΡΟΜΗΝΙΑ ΘΑΝΑΤΟΥ\n" listString = listString + u"|ΕΤΟΣ ΘΑΝΑΤΟΥ\n" listString = listString + u"|ΤΟΠΟΣ ΘΑΝΑΤΟΥ\n" listString = listString + u"|Στοιχεία προσώπου\n" listString = listString + u"|Γερμανική σελίδα\n" #listString = listString + u"|NAME (DE)\n" #listString = listString + u"|ALTERNATIVNAMEN\n" #listString = listString + u"|KURZBESCHREIBUNG\n" listString = listString + u"|GEBURTSDATUM\n" listString = listString + u"|GEBURTSORT\n" listString = listString + u"|STERBEDATUM\n" listString = listString + u"|STERBEORT\n" giaElegxo = u"" giaElegxo = giaElegxo + u"==Προς περεταίρω βελτίωση - Να μην ελεγχθούν==\n" giaElegxo = giaElegxo + u"Τα πεδία του προτύπου δεν θέλουν ακόμα έλεγχο, διότι δεν είναι ακόμη έτοιμα. " giaElegxo = giaElegxo + u"Παρόλαυτά, όποιος θέλει να τα ελέγξει, ο έλεγχος γίνεται όπως και πιο πάνω με το σηματάκι {{Y}} στο πεδίο «Έτοιμο», " giaElegxo = giaElegxo + u"ή με γενική κριτική εδώ ακριβώς.\n" giaElegxo = giaElegxo + u"{|class = \"wikitable\"\n" giaElegxo = giaElegxo + u"|-\n" giaElegxo = giaElegxo + u"|Έτοιμο\n" giaElegxo = giaElegxo + u"|Όνομα σελίδας\n" giaElegxo = giaElegxo + u"|ΟΝΟΜΑ\n" #giaElegxo = giaElegxo + u"|ΑΛΛΑ ΟΝΟΜΑΤΑ\n" #giaElegxo = giaElegxo + u"|ΜΙΚΡΗ ΠΕΡΙΓΡΑΦΗ\n" giaElegxo = giaElegxo + u"|ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΗΣ\n" giaElegxo = giaElegxo + u"|ΕΤΟΣ ΓΕΝΝΗΣΗΣ\n" giaElegxo = giaElegxo + u"|ΤΟΠΟΣ ΓΕΝΝΗΣΗΣ\n" giaElegxo = giaElegxo + u"|ΗΜΕΡΟΜΗΝΙΑ ΘΑΝΑΤΟΥ\n" giaElegxo = giaElegxo + u"|ΕΤΟΣ ΘΑΝΑΤΟΥ\n" giaElegxo = giaElegxo + u"|ΤΟΠΟΣ ΘΑΝΑΤΟΥ\n" giaElegxo = giaElegxo + u"|Στοιχεία προσώπου\n" giaElegxo = giaElegxo + u"|Γερμανική σελίδα\n" #giaElegxo = giaElegxo + u"|NAME (DE)\n" #giaElegxo = giaElegxo + u"|ALTERNATIVNAMEN\n" #giaElegxo = giaElegxo + u"|KURZBESCHREIBUNG\n" giaElegxo = giaElegxo + u"|GEBURTSDATUM\n" giaElegxo = giaElegxo + u"|GEBURTSORT\n" giaElegxo = giaElegxo + u"|STERBEDATUM\n" giaElegxo = giaElegxo + u"|STERBEORT\n" for elPage in page.linkedPages(): if counter >= slice_number * slice_thick: break counter = counter +1 if counter < (slice_number -1) * slice_thick: continue pywikibot.output(u">>> \03{white}%4d\03{default} \03{lightpurple}%s\03{default} <<<" % ( counter, elPage.title())) if elPage.isRedirectPage(): elPage = elPage.getRedirectTarget () deutscher_treffer = False try : elText = elPage.get() templatesWithParams = elPage.templatesWithParams() weitermachen = True for (inPageTemplate, param) in templatesWithParams: m = re.search(u'πληροφορίες',inPageTemplate.title().lower()) weitermachen = weitermachen and (m == None) m = re.search(u'στοιχεία προσώπου',inPageTemplate.title().lower()) weitermachen = weitermachen and (m == None) except: pywikibot.output(u"[[el:%s - Fehler in Zeile 185" % elPage.title()) weitermachen = False # pywikibot.output(u"weitermachen ? %s " % weitermachen) if weitermachen: interwikis = elPage.interwiki() for foreignPage in interwikis: site = foreignPage.site() if (site.family.name == 'wikipedia'): if (site.lang == 'de'): try : if foreignPage.isRedirectPage(): foreignPage = foreignPage.getRedirectTarget () dePage = pywikibot.Page(foreignPage.site(), foreignPage.title()) detemplatesWithParams = dePage.templatesWithParams() for (deinPageTemplate, param) in detemplatesWithParams: # pywikibot.output(u">>> de: Vorlage gefunden \03{lightpurple}%s\03{default} <<<" % deinPageTemplate.title()) if deinPageTemplate.title().lower() == u'personendaten': Personendaten = param deutscher_treffer = True pywikibot.output(u">>> deutsche site gefunden \03{lightpurple}%s\03{default} <<<" % dePage.title()) except: pywikibot.output(u"[[de:%s - Fehler in Zeile 206" % dePage.title()) if deutscher_treffer: Fehler_gefunden = False STOIXEIA_PROSOPOU = u'{{Στοιχεία προσώπου\n' ONOMA = u'' # ALLA_ONOMATA = u'' # MIKRI_PERIGRAFI = u'' IMEROMINIA_GENNISIS = u'' ETOS_GENNISIS = 0 TOPOS_GENNISIS = u'' IMEROMINIA_THANATOU = u'' ETOS_THANATOU = 0 TOPOS_THANATOU = u'' if deutscher_treffer: for parameter in Personendaten: if (re.search(u'NAME',parameter) != None) and (re.search(u'ALTERNATIVNAMEN',parameter) == None): NAME = parameter.split('=',1) NAME[1] = NAME[1].rstrip("\r\n") # for parameter in Personendaten: # if re.search(u'ALTERNATIVNAMEN',parameter) != None: # ALTERNATIVNAMEN = parameter.split('=',1) # ALTERNATIVNAMEN[1] = ALTERNATIVNAMEN[1].rstrip("\r\n") # for parameter in Personendaten: # if re.search(u'KURZBESCHREIBUNG',parameter) != None: # KURZBESCHREIBUNG = parameter.split('=',1) # KURZBESCHREIBUNG[1] = KURZBESCHREIBUNG[1].rstrip("\r\n") for parameter in Personendaten: if re.search(u'GEBURTSDATUM',parameter) != None: GEBURTSDATUM = parameter.split('=',1) GEBURTSDATUM[1] = GEBURTSDATUM[1].rstrip("\r\n") IMEROMINIA_GENNISIS = imerominia_genniseos_i_thanatou( datum = GEBURTSDATUM[1]) ETOS_GENNISIS = etos_gennisis_i_thanatou(datum = GEBURTSDATUM[1]) for parameter in Personendaten: if re.search(u'GEBURTSORT',parameter) != None: GEBURTSORT = parameter.split('=',1) GEBURTSORT[1] = GEBURTSORT[1].rstrip("\r\n") TOPOS_GENNISIS = topos_gennisis_i_thanatou( site = dePage.site(), orte = GEBURTSORT[1]) for parameter in Personendaten: if re.search(u'STERBEDATUM',parameter) != None: STERBEDATUM = parameter.split('=',1) STERBEDATUM[1] = STERBEDATUM[1].rstrip("\r\n") IMEROMINIA_THANATOU = imerominia_genniseos_i_thanatou( datum = STERBEDATUM[1]) ETOS_THANATOU = etos_gennisis_i_thanatou(datum = STERBEDATUM[1]) for parameter in Personendaten: if re.search(u'STERBEORT',parameter) != None: STERBEORT = parameter.split('=',1) STERBEORT[1] = STERBEORT[1].rstrip("\r\n") TOPOS_THANATOU = topos_gennisis_i_thanatou( site = dePage.site(), orte = STERBEORT[1]) onoma = elPage.title() if re.search(u' ο ',onoma) != None: ONOMA = onoma elif re.search(u' η ',onoma) != None: ONOMA = onoma elif re.search(u'Άγιος',onoma) != None: ONOMA = onoma elif re.search(u'της Ελλάδας',onoma) != None: ONOMA = onoma elif re.search(u' του ',onoma) != None: ONOMA = onoma elif re.search(u' των ',onoma) != None: ONOMA = onoma elif re.search(u' ντος ',onoma) != None: ONOMA = onoma elif onoma == u"Άννα της Αυστρίας (1528-1590)": ONOMA = u"Άννα της Αυστρίας" elif re.search(u' της ',onoma) != None: ONOMA = onoma elif re.search(u'Πατριάρχης',onoma) != None: ONOMA = onoma elif re.search(u'μητροπολίτης',onoma.lower()) != None: ONOMA = onoma elif re.search(u'επίσκοπος',onoma.lower()) != None: ONOMA = onoma elif re.search(u'Καίσαρας',onoma) != None: ONOMA = onoma elif re.search(u'πασάς',onoma.lower()) != None: ONOMA = onoma elif onoma == u"Αγησίστρατος (μηχανικός)": ONOMA = u"Αγησίστρατος" elif onoma == u"Αλέξανδρος (Βυζαντινός αυτοκράτορας)": ONOMA = u"Αλέξανδρος" elif re.search(u'βασίλισσα',onoma.lower()) != None: ONOMA = onoma elif re.search(u'δούκας',onoma.lower()) != None: ONOMA = onoma elif re.search(u'κόμης',onoma.lower()) != None: ONOMA = onoma elif re.search(u'μέγας',onoma.lower()) != None: ONOMA = onoma elif re.search(u'μεγάλος',onoma.lower()) != None: ONOMA = onoma elif re.search(u'μεγάλη',onoma.lower()) != None: ONOMA = onoma elif onoma == u"Dr. Dre": ONOMA = onoma elif onoma == u"DJ Shadow": ONOMA = onoma elif onoma == u"Dr. Alban": ONOMA = onoma elif onoma == u"J. Holiday": ONOMA = onoma elif onoma == u"Triple H": ONOMA = onoma elif onoma == u"Αγησίπολις Α΄": ONOMA = onoma elif onoma == u"Ice Cube": ONOMA = onoma elif onoma == u"Αμπντούλ Μετζίτ Α΄": ONOMA = onoma elif onoma == u"Αμπντούλ Χαμίτ Β΄": ONOMA = onoma elif onoma == u"Απολλόδωτος Α΄": ONOMA = onoma elif onoma == u"Αρεύς Α΄": ONOMA = onoma elif onoma == u"Ιουστινιανός Α'": ONOMA = onoma elif onoma == u"Ιουστινιανός Β'": ONOMA = onoma elif onoma == u"Ιωάννης Β'": ONOMA = onoma elif onoma == u"Αλέξανδρος Ρίζος Ραγκαβής": ONOMA = u"Ρίζος Ραγκαβής, Αλέξανδρος" elif onoma == u"Γκαμπριέλ (τραγουδίστρια)": ONOMA = u"Γκαμπριέλ" elif onoma == u"Δημήτριος Πετροκόκκινος (αντισφαίριση)": ONOMA = u"Πετροκόκκινος, Δημήτριος" elif onoma == u"Ερατοσθένης (τύραννος)": ONOMA = u"Ερατοσθένης" elif onoma == u"Ερμογένης (αρχιτέκτονας)": ONOMA = u"Ερμογένης" elif onoma == u"Ευάγγελος Δαμάσκος (αθλητής)": ONOMA = u"Δαμάσκος, Ευάγγελος" elif onoma == u"Ευφράνωρ (καλλιτέχνης)": ONOMA = u"Ευφράνωρ" elif onoma == u"Θεοδώρα (9ος αιώνας)": ONOMA = u"Θεοδώρα" elif onoma == u"Θεοδώρα (10ος αιώνας)": ONOMA = u"Θεοδώρα" elif onoma == u"Θεοδώρα (11ος αιώνας)": ONOMA = u"Θεοδώρα" elif onoma == u"Ιάκωβος Πάλμα (νεότερος)": ONOMA = u"Πάλμα, Ιάκωβος" elif onoma == u"Ιάκωβος Πάλμα (πρεσβύτερος)": ONOMA = u"Πάλμα, Ιάκωβος" elif onoma == u"Αγησίπολις Α΄": ONOMA = onoma elif onoma == u"Τιβέριος Β'": ONOMA = onoma elif onoma == u"Τιβέριος Γ'": ONOMA = onoma elif onoma == u"Αρχίδαμος Α΄": ONOMA = onoma elif onoma == u"Αρχίδαμος Β΄": ONOMA = onoma elif onoma == u"Αρχίδαμος Γ΄": ONOMA = onoma elif onoma == u"Φίλα Α'": ONOMA = onoma elif onoma == u"Βίκτωρ Εμμανουήλ Β'": ONOMA = onoma elif onoma == u"Βαγιαζήτ Α΄": ONOMA = onoma elif onoma == u"Φαίδρος Γάιος Ιούλιος": ONOMA = onoma elif onoma == u"Αναστάσιος Α'": ONOMA = onoma elif onoma == u"Γορδιανός Α'": ONOMA = onoma elif onoma == u"Γορδιανός Β'": ONOMA = onoma elif onoma == u"Γορδιανός Γ'": ONOMA = onoma elif onoma == u"Ευαγόρας Α΄": ONOMA = onoma elif onoma == u"Θεοδόσιος Β'": ONOMA = onoma elif onoma == u"Θεοδόσιος Γ'": ONOMA = onoma elif onoma == u"Ιβάν Ασέν Β΄": ONOMA = onoma elif onoma == u"Ιμπραήμ Α'": ONOMA = onoma elif onoma == u"Ιουστίνος Α'": ONOMA = onoma elif onoma == u"Ιουστίνος Β'": ONOMA = onoma elif onoma == u"Ισαάκιος Α'": ONOMA = onoma elif onoma == u"Ισαάκιος Β'": ONOMA = onoma elif onoma == u"Καλιμάν Ασέν Α΄": ONOMA = onoma elif onoma == u"Καλιμάν Ασέν Β΄": ONOMA = onoma elif onoma == u"Καρλομάν Α'": ONOMA = onoma elif onoma == u"Ιωάννης ΣΤ'": ONOMA = onoma elif onoma == u"Βαλερί Ζισκάρ Ντ' Εστέν": ONOMA = u"Ζισκάρ Ντ' Εστέν, Βαλερί" elif onoma == u"Γεώργιος Τέρτερ Β΄": ONOMA = u"Τέρτερ Β΄, Γεώργιος" elif onoma == u"Αγάθων (ποιητής)": ONOMA = u"Αγάθων" elif onoma == u"Αγαθοκλής (τύραννος)": ONOMA = u"Αγαθοκλής" elif onoma == u"Αγησίστρατος (μηχανικός)": ONOMA = u"Αγησίστρατος" elif onoma == u"Αλέξανδρος Δουμάς (πατέρας)": ONOMA = u"Δουμάς, Αλέξανδρος" elif onoma == u"Αρήτη (φιλόσοφος)": ONOMA = u"Αρήτη" elif onoma == u"Αρίστων (του Αριστοκλή)": ONOMA = u"Αρίστων" elif onoma == u"Αριστομένης (ο Ακαρνάν)": ONOMA = u"Αριστομένης" elif onoma == u"Βασίλης Ξανθόπουλος (καλαθοσφαιριστής)": ONOMA = u"Ξανθόπουλος, Βασίλης" elif onoma == u"Γιάροσλαβ Ντρόμπνι (ποδοσφαιριστής)": ONOMA = u"Ντρόμπνι, Γιάροσλαβ" elif onoma == u"Γκούσταβ Κρουπ φον Μπόλεν ουντ Χάλμπαχ": ONOMA = u"Κρουπ φον Μπόλεν ουντ Χάλμπαχ, Γκούσταβ" elif onoma == u"Ιωάννης Γεωργιάδης (ολυμπιονίκης)": ONOMA = u"Γεωργιάδης, Ιωάννης" elif onoma == u"Ιωάννης Ζυγομαλάς (1498 - 1584)": ONOMA = u"Ζυγομαλάς, Ιωάννης" elif onoma == u"Γοργώ (της Σπάρτης)": ONOMA = u"Γοργώ" elif onoma == u"Ιωάννης Φωκάς (θαλασσοπόρος)": ONOMA = u"Φωκάς, Ιωάννης" elif onoma == u"Κίνο (Σκιτσογράφος)": ONOMA = u"Κίνο" elif onoma == u"Καλλίνικος (αρχιτέκτονας)": ONOMA = u"Καλλίνικος" elif onoma == u"Μελέαγρος (στρατηγός)": ONOMA = u"Μελέαγρος" elif onoma == u"Αλέξανδρος Διομήδης - Κυριακός": ONOMA = u"Διομήδης-Κυριακός, Αλέξανδρος " else: onoma = onoma.split (' ') ONOMA = onoma[len(onoma)-1] if len(onoma) > 1: ONOMA = ONOMA + u', ' for i in range(1, len(onoma)): ONOMA = ONOMA + u'%s ' % onoma[i-1] if re.search(u'\(',ONOMA) != None: Fehler_gefunden = True pywikibot.output(u">>> Klammer auf gefunden \03{lightpurple}%s\03{default} <<<" % ONOMA) if re.search(u" - ",ONOMA) != None: Fehler_gefunden = True pywikibot.output(u">>> Bindestrich in Leerzeichen gefunden \03{lightpurple}%s\03{default} <<<" % ONOMA) Zeile = u"" Zeile = Zeile + u"|-\n" Zeile = Zeile + u"|\n" Zeile = Zeile + u"|[[%s]]\n" % elPage.title() Zeile = Zeile + u"|%s\n" % ONOMA STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΟΝΟΜΑ=%s\n" % ONOMA # Zeile = Zeile + u"|%s\n" % ALLA_ONOMATA STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΑΛΛΑ ΟΝΟΜΑΤΑ=\n" # Zeile = Zeile + u"|%s\n" % MIKRI_PERIGRAFI STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΜΙΚΡΗ ΠΕΡΙΓΡΑΦΗ=\n" if IMEROMINIA_GENNISIS != u'': Zeile = Zeile + u"|[[%s]]\n" % IMEROMINIA_GENNISIS STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΗΣ=[[%s]]\n" % IMEROMINIA_GENNISIS else: Zeile = Zeile + u"|\n" STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΗΣ=\n" if ETOS_GENNISIS != u'': Zeile = Zeile + u"|[[%s]]\n" % ETOS_GENNISIS STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|[[%s]]\n" % ETOS_GENNISIS else: Zeile = Zeile + u"|\n" STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|\n" Zeile = Zeile + u"|%s\n" % TOPOS_GENNISIS STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΤΟΠΟΣ ΓΕΝΝΗΣΗΣ=%s\n" % TOPOS_GENNISIS if IMEROMINIA_THANATOU != u'': Zeile = Zeile + u"|[[%s]]\n" % IMEROMINIA_THANATOU STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΗΜΕΡΟΜΗΝΙΑ ΘΑΝΑΤΟΥ=[[%s]]\n" % IMEROMINIA_THANATOU else: Zeile = Zeile + u"|\n" STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΗΜΕΡΟΜΗΝΙΑ ΘΑΝΑΤΟΥ=\n" if ETOS_THANATOU != u'': Zeile = Zeile + u"|[[%s]]\n" % ETOS_THANATOU STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΕΤΟΣ ΘΑΝΑΤΟΥ=[[%s]]\n" % ETOS_THANATOU else: Zeile = Zeile + u"|\n" STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΕΤΟΣ ΘΑΝΑΤΟΥ=\n" Zeile = Zeile + u"|%s\n" % TOPOS_THANATOU STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|ΤΟΠΟΣ ΘΑΝΑΤΟΥ=%s\n" % TOPOS_THANATOU STOIXEIA_PROSOPOU = STOIXEIA_PROSOPOU + u"|}" # Zeile = Zeile + u"|<div style="font-size:85%;"><nowiki>%s</nowiki>\n" % STOIXEIA_PROSOPOU Zeile = Zeile + u"|\n" Zeile = Zeile + u"|[[:de:%s]]\n" % dePage.title() # ZeileZeile = Zeile + u"|%s\n" % NAME[1] # Zeile = Zeile + u"|%s\n" % ALTERNATIVNAMEN[1] # Zeile = Zeile + u"|%s\n" % KURZBESCHREIBUNG[1] Zeile = Zeile + u"|%s\n" % GEBURTSDATUM[1] Zeile = Zeile + u"|%s\n" % GEBURTSORT[1] Zeile = Zeile + u"|%s\n" % STERBEDATUM[1] Zeile = Zeile + u"|%s\n" % STERBEORT[1] if not Fehler_gefunden: listString = listString + Zeile else: pywikibot.output (">>> \03{lightred}Zeile wird aussortiert\03{default}") giaElegxo = giaElegxo + Zeile Anzahl_ausgesonderter_Saetze = Anzahl_ausgesonderter_Saetze +1 listString = listString + u"|}\n" giaElegxo = giaElegxo + u"|}\n" if Anzahl_ausgesonderter_Saetze > 0: listString = listString + giaElegxo #pywikibot.output(u"%s" % listString) list = pywikibot.Page(pywikibot.getSite(), newCatTitle) list.put(listString, comment=u'εξόρυξη πληροφοριών') pywikibot.stopme() </nowiki> |
Εφαρμογή 5
[Επεξεργασία | επεξεργασία κώδικα]Πως να βρούμε ποιες σελίδες από μια λίστα βιογραφιών δεν έχουν φωτογραφία για να τις επεξεργαστούμε και ενδεχομένως να προσθέσουμε μια. |
---|
Σημείωση: Το παρόν σκριπτ είναι απλώς μια προσωρινή έκδοση μιας προσωπικής εργασίας του χρήστη Μυρμηγκάκι. Χρησιμοποιήθηκε και δούλεψε σε ικανοποιητικό βαθμό. Όποιος θέλει να το επεκτείνει ή να το βελτιώσει, ή να το τροποποιήσει για τους δικούς του σκοπούς, ας το κάνει. Το σκριπτ διατίθεται ελεύθερα όπως όλη η βικιπαίδεια. #!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia as pywikibot import re, string #Initialization TemplateTitle = u'Πρότυπο:Καθηγητές του Εθνικού και Καποδιστριακού Πανεπιστημίου Αθηνών (1837 - 1937)' newCatTitle = u'Χρήστης:Μυρμηγκάκι/τι να ελέγξω' page = pywikibot.Page(pywikibot.getSite(), TemplateTitle) listString = "" for elPage in page.linkedPages(): if elPage.isRedirectPage(): elPage = elPage.getRedirectTarget () try : elText = elPage.get() images = elPage.imagelinks() except: continue if images == []: listString = listString + u"# [[%s]]\n" % elPage.title() list = pywikibot.Page(pywikibot.getSite(), newCatTitle) list.put(listString, comment=u'ευρετήριο') pywikibot.stopme() |