Χρήστης: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()