Χρήστης:Flubot/Κλείδα ταξινόμησης/παρωχημένο
Πολωνική γλώσσα
επεξεργασία(υπό κατασκευή)
Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε πολωνικές μόνο λέξεις. Η κλείδα θα προστίθεται
- μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
- σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx πολωνικά]] ή [[Κατηγορία:xxxxxxxx (πολωνικά)]]
- σε ετυμολογίες, π.χ {{ετυμ xx|PL}}
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia import sys, re, codecs #reload(sys) #sys.setdefaultencoding('utf-8') # a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż spaces_tag = re.compile('([ \*\'\-\(\)]*)') page_tag = re.compile('(.*)') meros_tag = re.compile('\{\{-([^\|\}]+)\|pl\}\}') meros1_tag = re.compile('\{\{-([^\|\}]+)\|pl\|([^\}]*)\}\}') etym_tag = re.compile(u'\{\{ετυμ ([a-z]+)\|PL\}\}') categ_tag = re.compile(u'\[\[Κατηγορία:(.*)πολωνικά(\)*)\]\](.*)') set_string = re.compile('set') debug_bul = True # πίνακες αντιστοίχισης mtg_apo = u'ą ć ę ł ń ó ś ź ż' mtg_se = u'aα cα ea lα nα oα sα zα zε' trkeys = mtg_apo.split(u' ') for i in range(len(trkeys)): trkeys[i] = ord(trkeys[i]) trvals = mtg_se.split(u' ') trtable = dict(zip(trkeys,trvals)) wikipedia.setAction(u'Εισαγωγή κλείδας ταξινόμησης') # Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές fin = codecs.open('pl-list', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() #line = unicode(line, 'utf-8') if line == "": eof = 1 else: t1 = page_tag.search(line) # t = t1.group(1) #Tο πρώτο γράμμα της λέξης μένει εκτός κλείδας print(t) T0=t[0:1] t9=t[1:len(t)+1] kleida = t9.translate(trtable) kleida = spaces_tag.sub('',kleida) kleida = T0 + kleida kleida = kleida.lower() page = wikipedia.Page(wikipedia.getSite(), t) arxiko = page.get(get_redirect=True) # Αντικαταστάσεις p2 = meros_tag.sub(r'{{-\1|pl|'+kleida+'}}',arxiko) p2 = meros1_tag.sub(r'{{-\1|pl|'+kleida+'}}',p2) p2 = etym_tag.sub(u'{{ετυμ \g<1>|PL|'+kleida+'}}',p2) keimeno = categ_tag.sub(u'[[Κατηγορία:\g<1>πολωνικά\g<2>|'+kleida+']]',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)) fin.close()
Ρουμανική γλώσσα
επεξεργασίαΑκολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε ρουμανικές μόνο λέξεις. Η κλείδα θα προστίθεται
- μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
- σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx ρουμανικά]] ή [[Κατηγορία:xxxxxxxx (ρουμανικά)]]
- σε ετυμολογίες, π.χ {{ετυμ xx|RO}}
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia import sys, re, codecs #reload(sys) #sys.setdefaultencoding('utf-8') spaces_tag = re.compile('([ \*\'\-\(\)]*)') page_tag = re.compile('(.*)') meros_tag = re.compile('\{\{-([^\|\}]+)\|ro\}\}') meros1_tag = re.compile('\{\{-([^\|\}]+)\|ro\|([^\}]*)\}\}') etym_tag = re.compile(u'\{\{ετυμ ([a-z]+)\|RO\}\}') categ_tag = re.compile(u'\[\[Κατηγορία:(.*)ρουμανικά(\)*)\]\](.*)') set_string = re.compile('set') debug_bul = True # πίνακες αντιστοίχισης mtg_apo = u'ă â î ş ţ' mtg_se = u'aα aε iα sα tα' trkeys = mtg_apo.split(u' ') for i in range(len(trkeys)): trkeys[i] = ord(trkeys[i]) trvals = mtg_se.split(u' ') trtable = dict(zip(trkeys,trvals)) wikipedia.setAction(u'Εισαγωγή κλείδας ταξινόμησης') # Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές fin = codecs.open('ro-list', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() #line = unicode(line, 'utf-8') if line == "": eof = 1 else: t1 = page_tag.search(line) #t1=u"absorptivité" # t = t1.group(1) #Tο πρώτο γράμμα της λέξης μένει εκτός κλείδας print(t) T0=t[0:1] t9=t[1:len(t)+1] kleida = t9.translate(trtable) kleida = spaces_tag.sub('',kleida) kleida = T0 + kleida kleida = kleida.lower() page = wikipedia.Page(wikipedia.getSite(), t) arxiko = page.get(get_redirect=True) # Αντικαταστάσεις p2 = meros_tag.sub(r'{{-\1|ro|'+kleida+'}}',arxiko) p2 = meros1_tag.sub(r'{{-\1|ro|'+kleida+'}}',p2) p2 = etym_tag.sub(u'{{ετυμ \g<1>|RO|'+kleida+'}}',p2) keimeno = categ_tag.sub(u'[[Κατηγορία:\g<1>ρουμανικά\g<2>|'+kleida+']]',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) #choice= 'y' 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)) fin.close()
Γλώσσα Εσπεράντο
επεξεργασίαΑκολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε λέξεις μόνο της εσπεράντο. Η κλείδα θα προστίθεται
- μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
- σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx εσπεράντο]] ή [[Κατηγορία:xxxxxxxx (εσπεράντο)]]
- σε ετυμολογίες, π.χ {{ετυμ xx|ΕΟ}}
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia import sys, re, codecs #reload(sys) #sys.setdefaultencoding('utf-8') spaces_tag = re.compile('([ \*\'\-\(\)]*)') page_tag = re.compile('(.*)') meros_tag = re.compile('\{\{-([^\|\}]+)\|eo\}\}') meros1_tag = re.compile('\{\{-([^\|\}]+)\|eo\|([^\}]*)\}\}') etym_tag = re.compile(u'\{\{ετυμ ([a-z]+)\|EO\}\}') categ_tag = re.compile(u'\[\[Κατηγορία:(.*)εσπεράντο(\)*)\]\](.*)') set_string = re.compile('set') debug_bul = True # πίνακες αντιστοίχισης mtg_apo = u'ĉ ĝ ĥ ĵ ŝ ŭ' mtg_se = u'cα gα hα jα sα uα' trkeys = mtg_apo.split(u' ') for i in range(len(trkeys)): trkeys[i] = ord(trkeys[i]) trvals = mtg_se.split(u' ') trtable = dict(zip(trkeys,trvals)) wikipedia.setAction(u'Εισαγωγή κλείδας ταξινόμησης') # Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές fin = codecs.open('eo-list', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() #line = unicode(line, 'utf-8') if line == "": eof = 1 else: t1 = page_tag.search(line) t = t1.group(1) print(t) t2 = spaces_tag.sub('',t) #Tο πρώτο γράμμα της λέξης μένει εκτός κλείδας T0=t2[0:1] t9=t2[1:len(t2)+1] kleida = t9.translate(trtable) kleida = T0 + kleida kleida = kleida.lower() page = wikipedia.Page(wikipedia.getSite(), t) arxiko = page.get(get_redirect=True) # Αντικαταστάσεις p2 = meros_tag.sub(r'{{-\1|eo|'+kleida+'}}',arxiko) p2 = meros1_tag.sub(r'{{-\1|eo|'+kleida+'}}',p2) p2 = etym_tag.sub(u'{{ετυμ \g<1>|ΕΟ|'+kleida+'}}',p2) keimeno = categ_tag.sub(u'[[Κατηγορία:\g<1>εσπεράντο\g<2>|'+kleida+']]',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) #choice= 'y' 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)) fin.close()
Γερμανική γλώσσα
επεξεργασίαΑκολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε γερμανικές μόνο λέξεις. Η κλείδα θα προστίθεται
- μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
- σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx γερμανικά]] ή [[Κατηγορία:xxxxxxxx (γερμανικά)]]
- σε ετυμολογίες, π.χ {{ετυμ xx|DE}}
Οι λέξεις που θα επεξεργαστεί το bot πρέπει να βρίσκονται σε αρχείο κειμένου με το όνομα de-list, στον κατάλογο pywikipedia, όπως και ο κώδικας. Οι λέξεις γράφονται χωρίς αγκύλες και μία σε κάθε γραμμή. Αν ο κώδικας βρίσκεται σε αρχείο με το όνομα taxinomos-de.py, τρέχει απλώς με την εντολή python taxinomos-de.py.
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia import sys, re, codecs #reload(sys) #sys.setdefaultencoding('utf-8') spaces_tag = re.compile('([ \.\*\'\-\(\)]*)') page_tag = re.compile('(.*)') meros_tag = re.compile('\{\{-([^\|]*)\|de\}\}') meros1_tag = re.compile('\{\{-([^\|\}]*)\|de\|([^\}]*)\}\}') etym_tag = re.compile(u'\{\{ετυμ ([a-z]*)\|DE\}\}') categ_tag = re.compile(u'\[\[Κατηγορία:(.*)γερμανικά(\)*)\]\](.*)') categ1_tag = re.compile(u'\[\[Κατηγορία:(.*)γερμανικά(\)*)\|([^\]]*)\]\]') set_string = re.compile('set') debug_bul = True # πίνακες αντιστοίχισης mtg_apo = u'É Ä Â Ö Ü à â ä ç é è ê ë î ï ô ö ù û ü ß ſ œ' mtg_se = u'e a a ο u a a a c e e e e i i o o u u u ss s oe' trkeys = mtg_apo.split(u' ') for i in range(len(trkeys)): trkeys[i] = ord(trkeys[i]) trvals = mtg_se.split(u' ') trtable = dict(zip(trkeys,trvals)) wikipedia.setAction(u'Εισαγωγή κλείδας ταξινόμησης') # Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές fin = codecs.open('de-list', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() #line = unicode(line, 'utf-8') if line == "": eof = 1 else: t1 = page_tag.search(line) t = t1.group(1) print(t) kleida = t.translate(trtable) kleida = spaces_tag.sub('',kleida) kleida = kleida.lower() if kleida==t: kleida="" else: kleida = "|"+kleida page = wikipedia.Page(wikipedia.getSite(), t) arxiko = page.get(get_redirect=True) # Αντικαταστάσεις p2 = meros_tag.sub(r'{{-\1|de'+kleida+'}}',arxiko) p2 = meros1_tag.sub(r'{{-\1|de'+kleida+'}}',p2) p2 = etym_tag.sub(u'{{ετυμ \g<1>|DE'+kleida+'}}',p2) p2 = categ1_tag.sub(u'[[Κατηγορία:\g<1>γερμανικά\g<2>'+kleida+']]',p2) keimeno = categ_tag.sub(u'[[Κατηγορία:\g<1>γερμανικά\g<2>'+kleida+']]',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) #choice= 'y' 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)) fin.close()
Γαλλική γλώσσα
επεξεργασίαΑκολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε γαλλικές μόνο λέξεις. Η κλείδα θα προστίθεται
- μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
- σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx γαλλικά]] ή [[Κατηγορία:xxxxxxxx (γαλλικά)]]
- σε ετυμολογίες, π.χ {{ετυμ xx|FR}}
#!/usr/bin/python # -*- coding: utf-8 -*- import wikipedia import sys, re, codecs spaces_tag = re.compile('u([ \*\.\'\’\-\(\)]*)') page_tag = re.compile('(.*)') meros_tag = re.compile('\{\{\-([^\|\}]+)\|fr(\|*)\}\}') meros1_tag = re.compile('\{\{\-([^\|\}]+)\|fr\|([^\}]*)\}\}') etym_tag = re.compile(u'\{\{ετυμ ([a-z]+)\|FR(\|*)\}\}') etym1_tag = re.compile(u'\{\{ετυμ ([a-z]+)\|FR\|([^\}]*)\}\}') categ_tag = re.compile(u'\[\[Κατηγορία:(.*)γαλλικά(\)*)(\|*)\]\](.*)') categ1_tag = re.compile(u'\[\[Κατηγορία:(.*)γαλλικά(\)*)\|([^\]]*)\]\]') set_string = re.compile('set') debug_bul = True # πίνακες αντιστοίχισης mtg_apo = u'À Â Ç É È Ê Ë Î Ï Ô Œ Ù Û Ü à â ç é è ê ë î ï ô œ ù û ü æ' mtg_se = u'a a c e e e e i i o oe u u u a a c e e e e i i o oe u u u ae' trkeys = mtg_apo.split(u' ') for i in range(len(trkeys)): trkeys[i] = ord(trkeys[i]) trvals = mtg_se.split(u' ') trtable = dict(zip(trkeys,trvals)) # Εδώ ορίζεται η λέξη στην οποία θα γίνουν οι αλλαγές fin = codecs.open('kle-list', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() #line = unicode(line, 'utf-8') if line == "": eof = 1 else: t1 = page_tag.search(line) t = t1.group(1) print(t) kleida = t.translate(trtable) # να βρούμε αν η λέξη αρχίζει από se ή από s' ti=kleida.split(' ', 1)[0] if ti=="se" or ti=="s'": kleida = kleida.split(' ', 1)[1] ti=kleida.split('\'', 1)[0] if ti=="s": kleida = kleida.split('\'', 1)[1] kleida = spaces_tag.sub('',kleida) kleida = kleida.lower() if kleida != t: kleida = '|' + kleida wikipedia.setAction(u'Εισαγωγή κλείδας ταξινόμησης') else: kleida = '' wikipedia.setAction(u'διαγραφή λανθασμένης ή περιττής κλείδας ταξινόμησης') page = wikipedia.Page(wikipedia.getSite(), t) arxiko = page.get(get_redirect=True) # Αντικαταστάσεις p2 = meros_tag.sub(r'{{-\1|fr'+kleida+'}}',arxiko) p2 = meros1_tag.sub(r'{{-\1|fr'+kleida+'}}',p2) p2 = etym_tag.sub(u'{{ετυμ \g<1>|FR'+kleida+'}}',p2) p2 = etym1_tag.sub(u'{{ετυμ \g<1>|FR'+kleida+'}}',p2) p2 = categ_tag.sub(u'[[Κατηγορία:\g<1>γαλλικά\g<2>'+kleida+']]',p2) keimeno = categ1_tag.sub(u'[[Κατηγορία:\g<1>γαλλικά\g<2>'+kleida+']]',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) #choice= 'y' 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.IsRedirectPage: wikipedia.output(u'Skipping %s because it is a redirect' % (page.title())) 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)) fin.close()