Χρήστης:Flubot/Αυτοματοποιημένη εισαγωγή σε θηλυκά ουσιαστικά
Εμφάνιση
Αυτοματοποιημένη εισαγωγή ετυμολογιών (και ορισμών) σε θηλυκά ουσιαστικά
[επεξεργασία]Eίναι δυνατόν να εισάγουμε μαζικά ετυμολογίες και ορισμούς τύπου {{βλ|ΧΧΧΧΧ}} σε μια ομάδα λημμάτων με κοινά χαρακτηριστικά, όπως είναι τα θηλυκά ουσιαστικά σε -τρια, -τρα, -ισσα. Χρειαζόμαστε δύο αρχεία εισαγωγής, το ένα με τους τίτλους των θηλυκών λημμάτων και το δεύτερο με τα αρσενικά αντίστοιχά τους.
Παίρνουμε ως παράδειγμα τα θηλυκά σε -τρια. Ονομάζουμε τα δύο αρχεία list-f-tria και list-m-tria αντιστοίχως. Οι λέξεις πρέπει να βρίσκονται η μία κάτω από την άλλη και χωρίς τετράγωνες αγκύλες. Το bot θα αντικαταστήσει το {{λείπει ο ορισμός}} με το {{βλ|αρσενικόΧΧΧ}} και το {{λείπει η ετυμολογία}} καθώς και το {{θηλ του|ΧΧΧ}} με το {{θηλ τρια|αρσενικόΧΧΧ.
Κώδικας
[επεξεργασία]#!/usr/bin/python
# -*- coding: utf-8 -*-
import wikipedia
import sys, re, codecs
#reload(sys)
#sys.setdefaultencoding('utf-8')
debug_bul = True
page_tag = re.compile('(.*)')
etym1 = re.compile(u'PAGENAME\}\}\'\'\'( *)(\<|\:)?( *)\{\{λείπει η ετυμολογία\}\}')
etym2 = re.compile(u'PAGENAME\}\}\'\'\'( *)(\<|\:)?( *){\{θηλ_του\|([^\}]+)}\}')
etym3 = re.compile(u'PAGENAME\}\}\'\'\'( *)(\<|\:)?( *)\[\[([^\]]+)\]\]')
etym4 = re.compile(u'PAGENAME\}\}\'\'\'( *)(\<|\:)?( *)θηλυκό του \[\[([^\]]+)\]\]')
orism = re.compile(u'\{\{λείπει ο ορισμός\}\}')
wikipedia.setAction(u'Εισαγωγή ετυμολογίας, ανακατεύθυνσης στον ορισμό')
# Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές
fin1 = codecs.open('list-f-tria', 'r', 'utf-8')
fin2 = codecs.open('list-m-tria', 'r', 'utf-8')
eof=0
while not eof:
line = fin1.readline()
line2 = fin2.readline()
if line == "":
eof = 1
else:
t1 = page_tag.search(line)
title = t1.group(1)
m2 = page_tag.search(line2)
t2 = m2.group(1)
page = wikipedia.Page(wikipedia.getSite(), title)
arxiko = page.get(get_redirect=True)
# Αντικαταστάσεις
p2 = etym2.sub(u'PAGENAME}}\'\'\' < {{θηλ τρια|'+t2+'}}', arxiko)
p2 = etym1.sub(u'PAGENAME}}\'\'\' < {{θηλ τρια|'+t2+'}}', p2)
p2 = etym3.sub(u'PAGENAME}}\'\'\' < {{θηλ τρια|'+t2+'}}', p2)
p2 = etym4.sub(u'PAGENAME}}\'\'\' < {{θηλ τρια|'+t2+'}}', p2)
p2 = orism.sub(u'{{βλ|'+t2+'}}', p2)
keimeno = p2
# Εδώ ο κώδικας για την αποθήκευση
if keimeno != page.get():
# Show the title of the page we're working on.
# Highlight the title in purple.
wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.title())
## show what was changed
wikipedia.showDiff(page.get(), keimeno)
if debug_bul:
choice = wikipedia.inputChoice(u'Do you want to accept these changes?', ['yes', 'No', 'all'], ['y', 'N', 'a'], 'N')
if choice == 'a':
choice = 'y'
debug_bul = False
elif choice != 'y':
choice='n'
if choice == 'y':
try:
# Save the page
page.put(keimeno)
except wikipedia.EditConflict:
wikipedia.output(u'Skipping %s because of edit conflict' % (page.title()))
except wikipedia.SpamfilterError, error:
wikipedia.output(u'Cannot change %s because of spam blacklist entry %s' % (page.title(), error.url))
fin2.close()
fin1.close()