Χρήστης:Flubot/Κλείδα ταξινόμησης/παρωχημένο

Back to Flyax

Πολωνική γλώσσα

επεξεργασία

(υπό κατασκευή)

Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε πολωνικές μόνο λέξεις. Η κλείδα θα προστίθεται

  1. μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
  2. σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx πολωνικά]] ή [[Κατηγορία:xxxxxxxx (πολωνικά)]]
  3. σε ετυμολογίες, π.χ {{ετυμ 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()

Ρουμανική γλώσσα

επεξεργασία

Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε ρουμανικές μόνο λέξεις. Η κλείδα θα προστίθεται

  1. μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
  2. σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx ρουμανικά]] ή [[Κατηγορία:xxxxxxxx (ρουμανικά)]]
  3. σε ετυμολογίες, π.χ {{ετυμ 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()

Γλώσσα Εσπεράντο

επεξεργασία

Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε λέξεις μόνο της εσπεράντο. Η κλείδα θα προστίθεται

  1. μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
  2. σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx εσπεράντο]] ή [[Κατηγορία:xxxxxxxx (εσπεράντο)]]
  3. σε ετυμολογίες, π.χ {{ετυμ 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()

Γερμανική γλώσσα

επεξεργασία

Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε γερμανικές μόνο λέξεις. Η κλείδα θα προστίθεται

  1. μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
  2. σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx γερμανικά]] ή [[Κατηγορία:xxxxxxxx (γερμανικά)]]
  3. σε ετυμολογίες, π.χ {{ετυμ 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()

Γαλλική γλώσσα

επεξεργασία

Ακολουθεί κώδικας που θα προσθέτει την κλείδα ταξινόμησης σε γαλλικές μόνο λέξεις. Η κλείδα θα προστίθεται

  1. μετά την παράμετρο γλώσσας στο πρότυπο που δηλώνει το μέρος του λόγου
  2. σε κείμενο του τύπου [[Κατηγορία:xxxxxxxx γαλλικά]] ή [[Κατηγορία:xxxxxxxx (γαλλικά)]]
  3. σε ετυμολογίες, π.χ {{ετυμ 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()