Utente:Tatobot/Script

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

ultimi contributi

Tutorial regex[modifica | modifica wikitesto]

Mammiferi a rischio di estinzione[modifica | modifica wikitesto]

mammiferi.py
# -*- coding: utf-8 -*-

import wikipedia
import re

wikipedia.handleArgs()
mainPage = wikipedia.Page(wikipedia.getSite(), u'Mammiferi a rischio di estinzione')
txt = mainPage.get()
for i in mainPage.linkedPages():
 if i.exists() or i.title().find(u'Immagine') != -1 or i.title().find(u'Image') != -1 or i.title().find(u'idae') != -1:
  continue
 regex = re.compile(u'\|\|(.*?)\|\| ?\'\'\[\[ ?%s' % i.title())
 nomecomune = re.search(regex, txt).group(1)
 scient = re.search(u'(.+?) (.+)', i.title())
 genere = scient.group(1)
 specie = genere[0] + u'. ' + scient.group(2)
 print u'\nNome comune: %s\nNome scientifico: %s\nGenere: %s\nSpecie: %s\n' % (nomecomune, i.title(), genere, specie)
 testopagina = u"{{s|mammiferi}}\n{{da completare (mammiferi a rischio di estinzione)}}\n{{Tassobox\n|colore=pink\n|nome=%s\n|statocons=\n|immagine=[[Immagine:Missing.png|220px]]\n|didascalia=''{{PAGENAME}}''\n|<!-- CLASSIFICAZIONE -->\n|dominio=\n|regno=[[Animalia]]\n|sottoregno=\n|superphylum=\n|phylum=[[Chordata]]\n|subphylum=[[Vertebrata]]\n|infraphylum=\n|microphylum=\n|nanophylum=\n|superclasse=\n|classe=[[Mammalia]]\n|sottoclasse=\n|infraclasse=\n|superordine=\n|ordine=?\n|sottordine=\n|infraordine=\n|superfamiglia=\n|famiglia=?\n|sottofamiglia=\n|genere='''[[%s]]'''\n|specie='''%s'''\n<!--NOMENCLATURA BINOMIALE-->\n|binome={{PAGENAME}}\n|biautore=\n|bidata=\n}}\n'''%s''' (''%s'') è un [[Mammalia|mammifero]] della [[famiglia (tassonomia)|famiglia]] ...\n\n\n== Descrizione==\n\n== Distribuzione e habitat ==\n\n== Abitudini ==\n\n== Status e conservazione==\nLa ''Zoological Society of London'', in base a criteri di unicità [[evoluzione|evolutiva]] e di esiguità della popolazione, considera ''{{PAGENAME}}'' una delle 100 specie di mammiferi a maggiore rischio di [[estinzione]].\n== Bibliografia ==\n*{{IUCN}}\n==Voci correlate==\n*[[Mammiferi a rischio di estinzione]]\n\n==Altri progetti==\n{{interprogetto|commons|wikispecies}}\n\n==Collegamenti esterni==\n*{{EDGE}}\n[[Categoria:Mammiferi]]\n\n[[en:{{PAGENAME}}]]" % (nomecomune, genere, specie, nomecomune, i.title())
 print testopagina.encode('utf-8')
 choice = wikipedia.inputChoice(u'Creo la pagina?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Stub mammiferi generato da [[Utente:Tatobot|Tatobot]] a partire da [[Mammiferi a rischio di estinzione]].')
  i.put(testopagina)
 paginadiscussione = wikipedia.Page(wikipedia.getSite(), u'Discussione:' + i.title())
 if paginadiscussione.exists():
  olddiscussione = paginadiscussione.get()
 else:
  olddiscussione = u''
 testodiscussione = u'{{da completare (mammiferi a rischio di estinzione)}}\nPrima di rimuovere questo template:\n#-inserisci articolo determinativo prima del nome comune\n#-verifica lo status di conservazione e inseriscilo nel tassobox\n#-verifica lapostrofo ordine di appartenenza e inseriscilo nel tassobox\n ' + olddiscussione
 wikipedia.showDiff(olddiscussione, testodiscussione)
 choice = wikipedia.inputChoice(u'Modifico la pagina di discussione?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Pagina di discussione di stub mammiferi generato da [[Utente:Tatobot|Tatobot]] a partire da [[Mammiferi a rischio di estinzione]].')
  paginadiscussione.put(testodiscussione)
wikipedia.stopme()



Volevo avvisarti che ho scritto un bot leggermente più efficiente di quello già esistente per la creazione delle pagine, idea del bot è di avere già all'interno i titoli con anche altri dati degli animali.

Faccio notare che all'interno di list sono state selezionate come commento alcune specie (quelle già esistenti e che pertanto non necessitano di modifiche o aggiunte) --Brodo (msg) 15:26, 13 giu 2007 (CEST)

mammiferi2.py
# -*- coding: utf-8 -*-

import wikipedia
import re

list = [
#     ['Lipotes vexillifer', 1, 'Cetacea', 'Platanistidae', 'CR'],
#     ['Zaglossus bruijni', 2, 'Monotremata', 'Tachyglossidae', 'EN'],
#     ['Bunolagus monticularis', 3, 'Lagomorpha', 'Leporidae', 'CR'],
#        ['Solenodon cubanus', 4, 'Insectivora', 'Solenodontidae', 'EN'],
#        ['Solenodon paradoxus', 5, 'Insectivora', 'Solenodontidae', 'EN'],
#     ['Dicerorhinus sumatrensis', 6, 'Perissodactyla', 'Rhinocerotidae', 'CR'],
#     ['Diceros bicornis', 7, 'Perissodactyla', 'Rhinocerotidae', 'CR'],
#     ['Camelus bactrianus', 8, 'Artiodactyla', 'Camelidae', 'CR'],
#        ['Lasiorhinus krefftii', 9, 'Diprotodontia', 'Vombatidae', 'CR'],
#        ['Nesolagus netscheri', 10, 'Lagomorpha', 'Leporidae', 'CR'],
#     ['Rhinoceros sondaicus', 11, 'Perissodactyla', 'Rhinocerotidae', 'CR'],
#     ['Elephas maximus', 12, 'Proboscidea', 'Elephantidae', 'EN'],
#     ['Equus asinus', 13, 'Perissodactyla', 'Equidae', 'CR'],
#     ['Equus onager', 14, 'Perissodactyla', 'Equidae', 'CR'],
#        ['Paracoelops megalotis', 15, 'Chiroptera', 'Rhinolophidae', 'CR'],
#     ['Daubentonia madagascariensis', 16, 'Primates', 'Daubentoniidae', 'EN'],
#        ['Glirulus japonicus', 17, 'Rodentia', 'Myoxidae', 'EN'],
#     ['Ailuropoda melanoleuca', 18, 'Carnivora', 'Ursidae', 'EN'],
#     ['Ailurus fulgens', 19, 'Carnivora', 'Ursidae', 'EN'],
#        ['Otomops wroughtoni', 20, 'Chiroptera', 'Molossidae', 'CR'],
#        ['Hexaprotodon liberiensis', 21, 'Artiodactyla', 'Hippopotamidae', 'EN'],
#        ['Loris tardigradus', 22, 'Primates', 'Loridae', 'EN'],
#        ['Hapalemur aureus', 23, 'Primates', 'Lemuridae', 'CR'],
        ['Hapalemur simus', 24, 'Primates', 'Lemuridae', 'CR'],
#     ['Coleura seychellensis', 25, 'Chiroptera', 'Emballonuridae', 'CR'],
        ['Marmosa andersoni', 26, 'Didelphimorphia', 'Didelphidae', 'CR'],
#        ['Monachus monachus', 27, 'Carnivora', 'Phocidae', 'CR'],
#     ['Burramys parvus', 28, 'Diprotodontia', 'Burramyidae', 'EN'],
#        ['Propithecus tattersalli', 29, 'Primates', 'Indridae', 'CR'],
        ['Notoryctes caurinus', 30, 'Notoryctemorphia', 'Notoryctidae', 'EN'],
        ['Notoryctes typhlops', 31, 'Notoryctemorphia', 'Notoryctidae', 'EN'],
        ['Isolobodon portoricensis', 32, 'Rodentia', 'Capromyidae', 'CR'],
#     ['Aproteles bulmerae', 33, 'Chiroptera', 'Pteropodidae', 'CR'],
        ['Tapirus bairdii', 34, 'Perissodactyla', 'Tapiridae', 'EN'],
        ['Gracilinanus aceramarcae', 35, 'Didelphimorphia', 'Didelphidae', 'CR'],
#        ['Indri indri', 36, 'Primates', 'Indridae', 'EN'],
#     ['Damaliscus hunteri', 37, 'Artiodactyla', 'Bovidae', 'CR'],
        ['Macrotarsomys ingens', 38, 'Rodentia', 'Muridae', 'CR'],
        ['Pharotis imogene', 39, 'Chiroptera', 'Vespertilionidae', 'CR'],
        ['Talpa streeti', 40, 'Insectivora', 'Talpidae', 'CR'],
#        ['Romerolagus diazi', 41, 'Lagomorpha', 'Leporidae', 'EN'],
        ['Dromiciops gliroides', 42, 'Microbiotheria', 'Microbiotheriidae', 'VU'],
#     ['Cryptoprocta ferox', 43, 'Carnivora', 'Viverridae', 'EN'],
        ['Pentalagus furnessi', 44, 'Lagomorpha', 'Leporidae', 'EN'],
        ['Hylomys hainanensis', 45, 'Insectivora', 'Erinaceidae', 'EN'],
        ['Rhynchocyon chrysopygus', 46, 'Macroscelidea', 'Macroscelididae', 'EN'],
        ['Podogymnura aureospinula', 47, 'Insectivora', 'Erinaceidae', 'EN'],
        ['Podogymnura truei', 48, 'Insectivora', 'Erinaceidae', 'EN'],
#     ['Craseonycteris thonglongyai', 49, 'Chiroptera', 'Craseonycteridae', 'EN'],
#     ['Allocebus trichotis', 50, 'Primates', 'Cheirogaleidae', 'EN'],
        ['Tokudaia muenninki', 51, 'Rodentia', 'Muridae', 'CR'],
        ['Euroscaptor parvidens', 52, 'Insectivora', 'Talpidae', 'CR'],
#     ['Dugong dugon', 53, 'Sirenia', 'Dugongidae', 'VU'],
        ['Gymnobelideus leadbeateri', 54, 'Diprotodontia', 'Petauridae', 'EN'],
        ['Micropotamogale lamottei', 55, 'Insectivora', 'Tenrecidae', 'EN'],
        ['Mystacina tuberculata', 56, 'Chiroptera', 'Mystacinidae', 'VU'],
#     ['Chinchilla brevicaudata', 57, 'Rodentia', 'Chinchillidae', 'CR'],
#     ['Chimarrogale hantu', 58, 'Insectivora', 'Soricidae', 'CR'],
#     ['Chimarrogale sumatrana', 59, 'Insectivora', 'Soricidae', 'CR'],
        ['Selevinia betpakdalaensis', 60, 'Rodentia', 'Myoxidae', 'EN'],
        ['Soriculus salenskii', 61, 'Insectivora', 'Soricidae', 'CR'],
        ['Saiga tatarica', 62, 'Artiodactyla', 'Bovidae', 'CR'],
#     ['Bradypus torquatus', 63, 'Xenarthra', 'Bradypodidae', 'EN'],
#     ['Allactaga firouzi', 64, 'Rodentia', 'Dipodidae', 'CR'],
        ['Platanista gangetica', 65, 'Cetacea', 'Platanistidae', 'EN'],
        ['Platanista minor', 66, 'Cetacea', 'Platanistidae', 'EN'],
#     ['Catagonus wagneri', 67, 'Artiodactyla', 'Tayassuidae', 'EN'],
        ['Nesoscaptor uchidai', 68, 'Insectivora', 'Talpidae', 'EN'],
        ['Marmosops handleyi', 69, 'Didelphimorphia', 'Didelphidae', 'CR'],
        ['Potorous longipes', 70, 'Diprotodontia', 'Potoroidae', 'EN'],
#     ['Cynocephalus volans', 71, 'Dermoptera', 'Cynocephalidae', 'VU'],
        ['Uropsilus investigator', 72, 'Insectivora', 'Talpidae', 'EN'],
        ['Uropsilus soricipes', 73, 'Insectivora', 'Talpidae', 'EN'],
        ['Rhinoceros unicornis', 74, 'Perissodactyla', 'Rhinocerotidae', 'EN'],
        ['Sicista armenica', 75, 'Rodentia', 'Dipodidae', 'CR'],
        ['Typhlomys chapensis', 76, 'Rodentia', 'Muridae', 'CR'],
        ['Loxodonta africana', 77, 'Proboscidea', 'Elephantidae', 'VU'],
        ['Phocoena sinus', 78, 'Cetacea', 'Phocoenidae', 'CR'],
        ['Lagothrix flavicauda', 79, 'Primates', 'Cebidae', 'CR'],
        ['Tapirus pinchaque', 80, 'Perissodactyla', 'Tapiridae', 'EN'],
        ['Euchoreutes naso', 81, 'Rodentia', 'Dipodidae', 'EN'],
#     ['Equus grevyi', 82, 'Perissodactyla', 'Equidae', 'EN'],
#     ['Equus zebra', 83, 'Perissodactyla', 'Equidae', 'EN'],
        ['Trichechus inunguis', 84, 'Sirenia', 'Trichechidae', 'VU'],
        ['Murina grisea', 85, 'Chiroptera', 'Vespertilionidae', 'CR'],
        ['Dryomys sichuanensis', 86, 'Rodentia', 'Myoxidae', 'EN'],
        ['Tomopeas ravus', 87, 'Chiroptera', 'Vespertilionidae', 'VU'],
#     ['Balaenoptera musculus', 88, 'Cetacea', 'Balaenopteridae', 'EN'],
#     ['Balaenoptera physalus', 89, 'Cetacea', 'Balaenopteridae', 'EN'],
        ['Eupleres goudotii', 90, 'Carnivora', 'Viverridae', 'EN'],
        ['Dendromus kahuziensis', 91, 'Rodentia', 'Muridae', 'CR'],
        ['Glironia venusta', 92, 'Didelphimorphia', 'Didelphidae', 'VU'],
#     ['Chaerephon gallagheri', 93, 'Chiroptera', 'Molossidae', 'CR'],
        ['Myzopoda aurita', 94, 'Chiroptera', 'Myzopodidae', 'VU'],
        ['Hypogeomys antimena', 95, 'Rodentia', 'Muridae', 'EN'],
        ['Rhinolophus imaizumii', 96, 'Chiroptera', 'Rhinolophidae', 'EN'],
        ['Pongo pygmaeus', 97, 'Primates', 'Hominidae', 'EN'],
        ['Tylomys bullaris', 98, 'Rodentia', 'Muridae', 'CR'],
        ['Tylomys tumbalensis', 99, 'Rodentia', 'Muridae', 'CR'],
        ['Myomimus setzeri', 100, 'Rodentia', 'Myoxidae', 'EN']
]

wikipedia.handleArgs()
mainPage = wikipedia.Page(wikipedia.getSite(), u'Mammiferi a rischio di estinzione')
txt = mainPage.get()
for m in list:
 i=wikipedia.Page(wikipedia.getSite(), m[0])
 if i.exists(): #or i.title().find(u'Immagine') != -1 or i.title().find(u'Image') != -1 or i.title().find(u'idae') != -1:
  continue
 regex = re.compile(u'\[\[%s\]\]\'\' *\|\| *(.*) *\|\|' % i.title())
 nomecomune = re.search(regex, txt).group(1)
 scient = re.search(u'(.+?) (.+)', i.title())
 genere = scient.group(1)
 specie = genere[0] + u'. ' + scient.group(2)
 famiglia=m[3]
 EDGE=m[1]
 ordine=m[2]
 statocons=m[4]
 print u'\nNome comune: %s\nNome scientifico: %s\nOrdine: %s\nFamiglia: %s\nGenere: %s\nSpecie: %s\nId EDGE: %s' % (nomecomune, i.title(),famiglia,ordine, genere, specie, EDGE)
 testopagina = u"{{s|mammiferi}}\n{{da completare (mammiferi a rischio di estinzione)}}\n{{Tassobox\n|colore=pink\n|nome=%s\n|statocons=%s\n|immagine=[[Immagine:Missing.png|220px]]\n|didascalia=''{{subst:PAGENAME}}''\n|<!-- CLASSIFICAZIONE -->\n|dominio=\n|regno=[[Animalia]]\n|sottoregno=\n|superphylum=\n|phylum=[[Chordata]]\n|subphylum=[[Vertebrata]]\n|infraphylum=\n|microphylum=\n|nanophylum=\n|superclasse=\n|classe=[[Mammalia]]\n|sottoclasse=\n|infraclasse=\n|superordine=\n|ordine=[[%s]]\n|sottordine=\n|infraordine=\n|superfamiglia=\n|famiglia=[[%s]]\n|sottofamiglia=\n|genere='''[[%s]]'''\n|specie='''%s'''\n<!--NOMENCLATURA BINOMIALE-->\n|binome={{subst:PAGENAME}}\n|biautore=\n|bidata=\n}}\n'''%s''' (''%s'') è un [[Mammalia|mammifero]] della [[famiglia (tassonomia)|famiglia]] [[%s]].\n\n\n== Descrizione==\n\n== Distribuzione e habitat ==\n\n== Abitudini ==\n\n== Status e conservazione==\nLa ''Zoological Society of London'', in base a criteri di unicità [[evoluzione|evolutiva]] e di esiguità della popolazione, considera ''{{subst:PAGENAME}}'' una delle 100 specie di mammiferi a maggiore rischio di [[estinzione]].\n== Bibliografia ==\n*{{IUCN}}\n==Voci correlate==\n*[[Mammiferi a rischio di estinzione]]\n\n==Altri progetti==\n{{interprogetto|commons|wikispecies}}\n\n==Collegamenti esterni==\n*{{EDGE|id=%s}}\n[[Categoria:Mammiferi]]\n\n[[en:{{subst:PAGENAME}}]]" % (nomecomune,statocons,ordine,famiglia, genere, specie, nomecomune, i.title(),famiglia, EDGE)
 print testopagina.encode('utf-8')
 choice = wikipedia.inputChoice(u'Creo la pagina?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Stub mammiferi generato da [[Utente:Tatobot|Tatobot]] a partire da [[Mammiferi a rischio di estinzione]].')
  i.put(testopagina)
  redirect=wikipedia.Page(wikipedia.getSite(),nomecomune)
  if not redirect.exists() or redirect.isRedirectPage():
    redirect.put(u'REDIRECT [[%s]]\n[[Categoria:Mammiferi (nomi comuni)]]' % i.title())
 paginadiscussione = wikipedia.Page(wikipedia.getSite(), u'Discussione:' + i.title())
 if paginadiscussione.exists():
  olddiscussione = paginadiscussione.get()
 else:
  olddiscussione = u''
 testodiscussione = u'{{da completare (mammiferi a rischio di estinzione)}}\nPrima di rimuovere questo template:\n#-inserisci articolo determinativo prima del nome comune\n#-verifica esistenza di una immagine e sostituiscila a quella attuale (Missing.png)\n#-compila i campi biautore e bidata del tassobox\n#-inserisci il riferimento all autore nell incipit\n#-verifica esistenza della voce sui progetti collegati (commons e wikispecies)\n#-inserisci gli interwiki mancanti ([http://vs.aka-online.de/globalwpsearch/])\n#:ma sopratutto...\n#compila la voce, servendoti delle informazioni che trovi sul sito EDGE e su eventuali wiki-versioni in altre lingue!\n ' + olddiscussione
 wikipedia.showDiff(olddiscussione, testodiscussione)
 choice = wikipedia.inputChoice(u'Modifico la pagina di discussione?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Pagina di discussione di stub mammiferi generato da [[Utente:Tatobot|Tatobot]] a partire da [[Mammiferi a rischio di estinzione]].')
  paginadiscussione.put(testodiscussione)
wikipedia.stopme()

Uccelli nidificanti in Italia[modifica | modifica wikitesto]

Conosci il Python? Se no, ti spiego il codice.

--PietroDn 18:00, 11 ott 2006 (CEST)
uccelli.py
# -*- coding: utf-8 -*-

import wikipedia
import re

wikipedia.handleArgs()
mainPage = wikipedia.Page(wikipedia.getSite(), u'Uccelli nidificanti in Italia')
txt = mainPage.get()
for i in mainPage.linkedPages():
 if i.exists() or i.title().find(u'Immagine') != -1 or i.title().find(u'Image') != -1:
  continue
 regex = re.compile(u'\|\|(.*?)\|\| ?\'\'\[\[ ?%s' % i.title())
 nomecomune = re.search(regex, txt).group(1)
 scient = re.search(u'(.+?) (.+)', i.title())
 genere = scient.group(1)
 specie = genere[0] + u'. ' + scient.group(2)
 print u'\nNome comune: %s\nNome scientifico: %s\nGenere: %s\nSpecie: %s\n' % (nomecomune, i.title(), genere, specie)
 testopagina = u"{{stub uccelli}}\n{{da completare (uccelli)}}\n{{Tassobox\n|colore=pink\n|nome=%s\n|statocons=\n|immagine=\n|didascalia=''{{PAGENAME}}''\n|<!-- CLASSIFICAZIONE -->\n|dominio=\n|regno=[[Animalia]]\n|sottoregno=\n|superphylum=\n|phylum=[[Chordata]]\n|subphylum=[[Vertebrata]]\n|infraphylum=\n|microphylum=\n|nanophylum=\n|superclasse=[[Tetrapoda]]\n|classe=[[Aves]]\n|sottoclasse=[[Neornithes]]\n|infraclasse=\n|superordine=\n|ordine=\n|sottordine=\n|infraordine=\n|superfamiglia=\n|famiglia=\n|sottofamiglia=\n|genere='''[[%s]]'''\n|specie='''%s'''\n<!--NOMENCLATURA BINOMIALE-->\n|binome={{PAGENAME}}\n|biautore=\n|bidata=\n}}\n'''%s''' (''%s'') è un [[uccello]] della [[famiglia (tassonomia)|famiglia]] ...\n\n\n== Sistematica ==\n\n== Aspetti morfologici==\n\n== Distribuzione e habitat ==\n\n== Abitudini ==\n<!--=== Voce ===-->\n<!--=== Cibo ed Alimentazione ===-->\n<!--=== Riproduzione ===-->\n<!--=== Spostamenti ===-->\n<!--=== Relazioni con l'uomo ===-->\n\n== Status e conservazione==\n\n== Curiosità ==\n\n== Bibliografia ==\n\n==Voci correlate==\n*[[Uccelli nidificanti in Italia]]\n\n==Altri progetti==\n{{interprogetto|commons|wikispecies}}\n\n==Collegamenti esterni==\n{{avibase}}\n\n[[Categoria:Specie (uccelli)]]\n\n[[en:{{PAGENAME}}]]" % (nomecomune, genere, specie, nomecomune, i.title())
 print testopagina.encode('utf-8')
 choice = wikipedia.inputChoice(u'Creo la pagina?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Stub uccelli generato da [[Utente:Tatobot|Tatobot]] a partire da [[Uccelli nidificanti in Italia]].')
  i.put(testopagina)
 paginadiscussione = wikipedia.Page(wikipedia.getSite(), u'Discussione:' + i.title())
 if paginadiscussione.exists():
  olddiscussione = paginadiscussione.get()
 else:
  olddiscussione = u''
 testodiscussione = u'{{da completare (uccelli)}}\n{{da fare}}' + olddiscussione
 wikipedia.showDiff(olddiscussione, testodiscussione)
 choice = wikipedia.inputChoice(u'Modifico la pagina di discussione?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'Pagina di discussione di stub uccelli generato da [[Utente:Tatobot|Tatobot]] a partire da [[Uccelli nidificanti in Italia]].')
  paginadiscussione.put(testodiscussione)
wikipedia.stopme()

Inserisci testo[modifica | modifica wikitesto]

Questo script non verifica l'esistenza di una stringa nel testo, puoi provare a modificarlo tu.

La funzione che analizza un testo per cercare una data stringa è

testo_da_analizzare.find(stringa_da_cercare,[inizio],[fine])

dà come risultato -1 se la stringa non viene trovata, altrimenti dà il numero di caratteri dall'inizio del testo in cui inizia la striga.

Ciao. G. (PagØ)

inserisci_testo.py
# -*- coding: cp1252 -*-

'''
creare un file test.txt salvato con codifica ANSI e con la seguente sintassi

nome_pagina<<testo da inserire

un elemento per riga
'''

import re, sys, getpass
import httplib
import wikipedia, config

def scrivi(pagina,testo):
    crlf = chr(13) + chr(10) 
    site=wikipedia.getSite(code='it',fam='wikipedia')
    pl = wikipedia.PageLink(site, pagina)
    testo_originale = u'' + pl.get()

    primadi=["== Collegamenti esterni ==", "[[categoria:", "[[Categoria:"]

    for j in range(0, len(primadi)):
        i = testo_originale.find(primadi[j])
        if i > -1:
            break
        
    print i
    if i == -1:
        testo_nuovo = testo_originale + crlf + crlf + testo
    else:
        testo_nuovo = testo_originale[:i] + crlf + testo + crlf + testo_originale[i:]

    pl.put(testo_nuovo,'+ ' + testo)
    print 'inserito ' + testo
    #print testo_nuovo

def main(nomefile):
    f = open(nomefile, 'r')
    for line in f.readlines():
        w = line.split('<<')
        i = len(w)
        if i > 1 :
            print 'nella pagina: ', w[0]
            print 'sto scrivendo il testo: ', w[1]
            scrivi(w[0],w[1])
    f.close()
    
if __name__ == "__main__":
    try:
        main("c:/python24/tools/wiki/test.txt")
    except:
        wikipedia.stopme()
        raise
    else:
        wikipedia.stopme()

Conversione tassobox[modifica | modifica wikitesto]

tratto da: http://en.wikipedia.org/wiki/User:Gdr/taxoconvert.py

vedi anche: http://en.wikipedia.org/wiki/User:Gdr/Nomialbot

taxoconvert.py
#!/usr/bin/python
# -*- encoding:utf-8 -*-
#
# taxoconvert.py -- convert multi-template taxoboxes to single template

import codecs
import getopt
import os
import pickle
import re
import sys
import tempfile
import wikipedia

global checks, edit, debug
site = wikipedia.Site('en')
checks = True
edit = False
debug = False

class Error(Exception):
    def __init__(self, text):
        self.text = text
    def __str__(self):
        return self.text

class NoError(Error):
    None

def edittext(s):
    fn = tempfile.mktemp()
    f = codecs.open(fn, 'w', 'utf-8')
    f.write(s)
    f.close()
    os.system('%s "%s"' % (os.getenv('EDITOR', 'vi'), fn))
    f = codecs.open(fn, 'r', 'utf-8')
    s = f.read()
    f.close()
    return s

def canonize(s):
    return filter(lambda c: c.isalnum(), s).lower()

def check(text, newtext):
    if not checks:
        return newtext
    while 1:
        wikipedia.showDiff(text, newtext)
        i = wikipedia.input(u'OK? [yNeq]')
        if i == 'q':
            raise IOError
        elif i == 'y':
            return newtext
        elif i == 'e':
            newtext = edittext(newtext)
        else:
            return None

def record(params, key, value):
    if debug:
        wikipedia.output(u"%s = %s" % (key, value))
    if key in params:
        raise Error(u"Duplicate key %s" % key)
    if value:
        params['sequence'].append(key)
        params[key] = value

def parse_nomial(suffix, n, lines, params):
    if debug:
        wikipedia.output(u"parse_nomial: suffix = '%s', lines[n] = %s" % (suffix, lines[n]))
    orig_n = n
    found = False

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                 r'(?:[ _]+(?:simple|botany|parens))? *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
    if m:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        n += 1
        found = True

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                 r'(?:[ _]+part)? *\| *'
                 r'(?:color *= *[a-z]+ *\| *)?'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                 r'author *= *([^\}]*[^\} ]) *\| *'
                 r'date *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
    if m and not found:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        record(params, '%s%s_authority' % (m.group(1), suffix),
               '%s, %s' % (m.group(3), m.group(4)))
        n += 1
        found = True

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial) *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                 r'author *= *([^\}]*[^\} ]) *\| *'
                 r'date *= *}}$', lines[n])
    if m and not found:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        record(params, '%s%s_authority' % (m.group(1), suffix), m.group(3))
        n += 1
        found = True

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                 r'(?:[ _]+(?:parens|botany|simple))? *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                 r'author *= *\| *'
                 r'date *= *}}$', lines[n])
    if m and not found:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        n += 1
        found = True

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                 r'[ _]+parens(?:[ _]+part)? *\| *'
                 r'(?:color *= *[a-z]+ *\| *)?'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                 r'author *= *([^\}]*[^\} ]) *\| *'
                 r'date *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
    if m and not found:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        record(params, '%s%s_authority' % (m.group(1), suffix),
               '(%s, %s)' % (m.group(3), m.group(4)))
        n += 1
        found = True

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                 r'[ _]+botany *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                 r'author *= *([^\}]*[^\} ]|) *}}$', lines[n])
    if m and not found:
        record(params, m.group(1) + suffix, "''%s''" % m.group(2))
        record(params, '%s%s_authority' % (m.group(1), suffix), m.group(3))
        n += 1
        found = True

    if n + 1 < len(lines):
        m = re.match(r'(?i){{taxobox[ _]+section[ _]+((?:b|tr)inomial)'
                     r'[ _]+botany *\| *'
                     r'color *= *[a-z]+ *\| *'
                     r'\1_name *= *([^\|\}]*[^\|\} ]) *\| *'
                     r'author *= *([^\}]*[^\} ]|) *}}$', lines[n] + lines[n+1])
        if m and not found:
            record(params, m.group(1) + suffix, "''%s''" % m.group(2))
            record(params, '%s%s_authority' % (m.group(1), suffix), m.group(3))
            n += 2
            found = True

    m = re.match(r'(?i){{taxobox[ _]+image *\| *image *= *'
                 r'\[\[ *Image: *([^\|\]]*[^\|\] ]) *'
                 r'(?:\| *([0-9]+px))?(?:\|[^\]]*)?\]\] *\| *'
                 r'caption *= *([^\}]*[^\} ]|) *}}$', lines[n])
    if m and re.search(r'(?i)(?:range|distribution)', lines[n]):
        record(params, 'range_map%s' % suffix, m.group(1))
        record(params, 'range_map%s_width' % suffix, m.group(2))
        record(params, 'range_map%s_caption' % suffix, m.group(3))
        n += 1

    return (n, orig_n != n)

def parse(text, linkname):
    """parse(text, linkname) -- parse multi-template taxobox from 'text' and
    return it as a dictionary suitable for constructing a taxobox
    template."""

    params = {'sequence': []}
    text = re.sub(r'(?m)[ \t\r]+$', '', text)

    if 1 < len(re.findall(r'(?i){{taxobox[ _]+begin *\|', text)):
        raise Error(u"Two occurrences of {{taxobox begin}}.")
    if 1 < len(re.findall(r'(?i){{taxobox[ _]+end *}}', text)):
        raise Error(u"Two occurrences of {{taxobox end}}.")
    m = re.search(r'(?is){{taxobox[ _]+begin.*{{taxobox[ _]+end *}}', text)
    if not m:
        global done
        done[linkname] = True
        raise NoError(u"Can't find taxobox.")
    lines = re.split(r'(?: *(?:</?br */?>(?= *(?:{{|<))|\n) *)+', m.group(0))
    n = 0

    m1 = re.match(r'(?i){{taxobox[ _]+begin *\| *color *= *([a-z]+) *\| *'
                  'name *= *(.*[^ ]) *}}[ \t]*(?:<br */?> *)?$', lines[n])
    m2 = re.match(r'(?i){{taxobox[ _]+begin *\| *name *= *(.*[^ ]) *\| *'
                  'color *= *([a-z]+) *}}[ \t]*(?:<br */?> *)?$', lines[n])
    if m1:
        record(params, 'color', m1.group(1))
        record(params, 'name', m1.group(2))
        n += 1
    elif m2:
        record(params, 'color', m2.group(2))
        record(params, 'name', m2.group(1))
        n += 1
    else:
        raise Error(u"Can't find {{taxobox begin}}: %s" % lines[n])

    m = re.match(r'(?i){{(?:template:)?(status[^\}]+)}}', lines[n])
    if m:
        record(params, 'status', '{{%s}}' % m.group(1))
        n += 1

    m = re.match(r'(?i)(?:<small> *)?fossil +(?:range|record): +([^<\n]*[^<\n ]) *'
                 r'(?:</small>)?', lines[n])
    if m:
        record(params, 'fossil_range', m.group(1))
        n += 1

    if re.match(r'(?i)<!--.*-->', lines[n]):
        n += 1

    image_re = (r'(?i){{taxobox[ _]+image *\| *image *= *'
                r'\[\[ *Image: *([^\|\]]*[^\|\] ]) *'
                r'(?:\| *([0-9]+px))?(?:\|.*)?\]\] *\| *'
                r'caption *= *([^\}]*[^\} ]|) *}}$')

    m1 = re.match(image_re, lines[n])
    m2 = re.match(image_re, lines[n] + lines[n+1])
    m3 = re.match(r'(?i){{taxobox[ _]+image *\| *image *= *'
                  r'\[\[ *Image: *([^\|\]]*[^\|\] ]) *'
                  r'(?:\| *([0-9]+px))?(?:\|.*)?\]\] *}}$', lines[n])
    if m1:
        record(params, 'image', m1.group(1))
        record(params, 'image_width', m1.group(2))
        record(params, 'image_caption', m1.group(3))
        n += 1
    elif m2:
        record(params, 'image', m2.group(1))
        record(params, 'image_width', m2.group(2))
        record(params, 'image_caption', m2.group(3))
        n += 2
    elif m3:
        record(params, 'image', m3.group(1))
        record(params, 'image_width', m3.group(2))
        n += 1

    m = re.match(image_re, lines[n])
    if m:
        record(params, 'image2', m.group(1))
        record(params, 'image2_width', m.group(2))
        record(params, 'image2_caption', m.group(3))
        n += 1

    if re.match(r'(?i){{taxobox[ _]+image *\| *image *= *\| *caption *= *}}$',
                lines[n]):
        n += 1
    if re.match(r'(?i){{taxobox[ _]+image *\| *image *= *(?:|\|.*)}}$',
                lines[n]):
        n += 1
    if re.match(r'(?i){{taxobox[ _]+image.*(?:Image with unknown copyright status removed|Unsourced image removed)', lines[n]):
        n += 1
    if re.match(r'(?i)<!--.*-->', lines[n]):
        n += 1
    if re.match(r'(?is)<!--.*-->', lines[n] + lines[n+1]):
        n += 2

    m = re.match(r'(?i){{taxobox[ _]+begin[ _]+placement *\| *'
                 r'color *= *[a-z]+ *}}$', lines[n])
    if not m:
        raise Error(u"Can't find {{taxobox begin placement}}: %s"
                          % lines[n])
    n += 1

    while n < len(lines):
        m0 = re.match(r'(?i){{taxobox[ _]+([a-z_]+)[ _]+entry[ _]*\| *'
                      r'taxon *= *([^\}]*[^\} ]) *'
                      r'<small>(.*)</?small>}}$', lines[n] + lines[n+1])
        if m0:
            record(params, m0.group(1), m0.group(2))
            record(params, m0.group(1) + '_authority', m0.group(3))
            n += 2
            continue

        m1 = re.match(r'(?i){{taxobox[ _]+([a-z_]+)[ _]+entry[ _]*\| *'
                      r'taxon *= *([^\}]*[^\} ]) *}}(?:<br */?>)?$', lines[n])
        if not m1:
            break
        record(params, m1.group(1), m1.group(2))
        n += 1
        m2 = re.match(r'(?i){{taxobox[ _]+authority *\| *'
                      r'author *= *([^\}]*[^\} ]) *\| *'
                      r'date *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
        if m2:
            record(params, m1.group(1) + '_authority',
                   '%s, %s' % (m2.group(1), m2.group(2)))
            n += 1
            continue
        m3 = re.match(r'(?i){{taxobox[ _]+authority[ _]+parens *\| *'
                      r'author *= *([^\}]*[^\} ]) *\| *'
                      r'date *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
        if m3:
            record(params, m1.group(1) + '_authority',
                   '(%s, %s)' % (m3.group(1), m3.group(2)))
            n += 1
            continue
        m4 = re.match(r'(?i){{taxobox[ _]+authority[ _]+(?:new|botany)? *\| *'
                      r'author(?:ity)? *= *([^\}]*[^\} ]) *}}$', lines[n])
        if m4:
            record(params, m1.group(1) + '_authority', m4.group(1))
            n += 1
            continue
        m5 = re.match(r'(?i)<small> *(.*[^ ]) *(?:</?small>)?', lines[n])
        if m5:
            record(params, m1.group(1) + '_authority', m5.group(1))
            n += 1
            continue

    m = re.match(r'(?i){{taxobox[ _]+end[ _]+placement(?: *\| *color *= *[a-z]+ *)?}}$', lines[n])
    if not m:
        raise Error(u"Expected {{taxobox end placement}}: %s"
                          % lines[n])
    n += 1

    n, found = parse_nomial('', n, lines, params)
    if found:
        n, found = parse_nomial('2', n, lines, params)
        if found:
            n, found = parse_nomial('3', n, lines, params)
            if found:
                n, found = parse_nomial('4', n, lines, params)

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+type[ _]+species *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'species *= *([^\}]*[^\} ]) *\| *'
                 r'comment *= *([^\}]*[^\} ]|) *}}$', lines[n])
    if m:
        record(params, 'type_species', "''%s''" % m.group(1))
        record(params, 'type_species_authority', m.group(2))
        n += 1

    if re.match(r'(?i)<!--.*-->', lines[n]):
        n += 1

    m = re.match(r'(?i){{taxobox[ _]+begin[ _]+synonyms *\| *'
                 r'color *= *[a-z]+ *}}$', lines[n])
    if m:
        n += 1
        syn = []
        while 1:
            m1 = re.match(r'(?i){{taxobox[ _]+synonym[ _]+entry[ _]+simple'
                          r' *\| *binomial_name *= *([^\}]*[^\} ]) *}}$',
                          lines[n])
            m2 = re.match(r'(?i){{taxobox[ _]+synonym[ _]+entry[ _]+botany'
                          r' *\| *binomial_name *= *([^\}]*[^\} ]) *\| *'
                          r'author *= *([^\}]*[^\} ]) *}}$',
                          lines[n])
            m3 = re.match(r'(?i){{taxobox[ _]+synonym[ _]+entry *\| *'
                         r'binomial_name *= *([^\|\}]*[^\|\} ]) *\| *'
                         r'author *= *([^\}]*[^\} ]) *\| *'
                         r'date *= *([^\|\}]*[^\|\} ]) *}}$', lines[n])
            if m1:
                syn.append("''%s''" % m1.group(1))
            elif m2:
                syn.append("''%s'' <small>%s</small>"
                           % (m2.group(1), m2.group(2)))
            elif m3:
                syn.append("''%s'' <small>%s, %s</small>"
                           % (m3.group(1), m3.group(2), m3.group(3)))
            else:
                break
            n += 1
        record(params, 'synonyms', '<br/>'.join(syn))
        m = re.match(r'(?i){{taxobox[ _]+end[ _]+synonyms}}$', lines[n])
        if not m:
            raise Error(u"Expected {{taxobox synonyms end}} but found: %s"
                        % lines[n])
        n += 1

    if 'binomial' not in params and 'trinomial' not in params:
        n, found = parse_nomial('', n, lines, params)

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+diversity *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'link *= *([^\}]*[^\} ]) *\| *'
                 r'diversity *= *([^\}]*[^\} ]) *}}$', lines[n])
    if m:
        record(params, 'diversity', m.group(2))
        record(params, 'diversity_link', m.group(1))
        n += 1

    m = re.match(r'(?i){{taxobox[ _]+section[ _]+(?:subdivision|list) *\| *'
                 r'color *= *[a-z]+ *\| *'
                 r'plural_taxon *= *([^\}]*[^\} ]) *}}$', lines[n])
    if not m:
        m = re.match(r'(?i){{taxobox[ _]+section[ _]+(?:subdivision|list) *\| *'
                     r'plural_taxon *= *([^\}]*[^\} ]) *\| *'
                     r'color *= *[a-z]+ *}}$', lines[n])
    if m:
        record(params, 'subdivision_ranks', m.group(1))
        n += 1
        m = n
        while not re.match(r'(?i){{taxobox', lines[n]):
            n += 1
        record(params, 'subdivision', '\n' + '\n'.join(lines[m:n]))

    if re.match(r'(?i)<!--.*-->', lines[n]):
        n += 1
    if n + 1 < len(lines) and re.match(r'(?i)<!--.*-->', lines[n] + lines[n+1]):
        n += 2

    m = re.match(r'(?i){{taxobox[ _]+end *}}$', lines[n])
    if not m:
        raise Error(u"Unrecognized line: %s" % lines[n])

    # Some other checks
    if 'norank' in params:
        raise Error(u"Can't handle {{taxobox norank entry}}, sorry.")
    if 'unranked' in params:
        raise Error(u"Can't handle {{taxobox unranked entry}}, sorry.")

    # Fix some simple mistakes.
    if 'genus' in params and 'name' in params \
       and params['genus'] == "'''''%s'''''" % params['name']:
        params['name'] = "''%s''" % params['name']
    if 'binomial' in params and 'name' in params \
       and params['binomial'] == "''%s''" % params['name']:
        params['name'] = "''%s''" % params['name']
    if 'trinomial' in params and 'name' in params \
       and params['trinomial'] == "''%s''" % params['name']:
        params['name'] = "''%s''" % params['name']
    if 'image_caption' in params \
       and canonize(params['image_caption']) \
        in (canonize(params.get('name', '')),
            canonize(params.get('binomial', '')),
            canonize(params.get('trinomial', '')),
            canonize(params.get('genus', '')) + 'sp',
            canonize(params.get('name', '') + params.get('binomial', '')),
            ):
        del params['image_caption']
    if 'binomial_authority' in params:
        params['binomial_authority'] = re.sub(r',,', ',',
                                              params['binomial_authority'])
    if 'trinomial_authority' in params:
        params['trinomial_authority'] = re.sub(r',,', ',',
                                              params['trinomial_authority'])
    if 'genus' in params and re.match(r"'''''[[.*]]'''''$", params['genus']):
        params['genus'] = params['genus'][3:-3]
    if 'name' in params:
        m = re.match(r"<center> *(.*[^ ]) *</center>$", params['name'])
        if m:
            params['name'] = m.group(1)
    if 'subdivision_ranks' in params:
        m = re.match(r"<center> *(.*[^ ]) *</center>$", params['subdivision_ranks'])
        if m:
            params['subdivision_ranks'] = m.group(1)
    if 'genus' in params and re.match(r"(''')?[^']+\1$", params['genus']):
        params['genus'] = "''%s''" % params['genus']
    if 'species' in params and re.match(r"(''')?[^']+\1$", params['species']):
        params['species'] = "''%s''" % params['species']
    if 'subspecies' in params and re.match(r"(''')?[^']+\1$", params['subspecies']):
        params['subspecies'] = "''%s''" % params['subspecies']
    if 'species' in params and 'binomial' in params and re.match(r"''[^']+''$", params['species']):
        params['species'] = "'''%s'''" % params['species']
    if 'subspecies' in params and 'trinomial' in params and re.match(r"''[^']+''$", params['subspecies']):
        params['subspecies'] = "'''%s'''" % params['subspecies']
    if 'subdivision' in params and canonize(params['subdivision']) == 'seetext':
        params['subdivision'] = '\nSee text.'
    if 'binomial' in params and 'species' in params \
       and re.match("'''''[^']*'''''$", params['species']):
        m = re.match(r"'*([A-Z])[a-z-]* ([a-z-]*)'*", params['binomial'])
        if m:
            params['species'] = "'''''%s. %s'''''" % (m.group(1), m.group(2))
    if 'trinomial' in params and 'subspecies' in params \
       and re.match("'''''.*'''''$", params['subspecies']):
        m = re.match(r"'*([A-Z])[a-z-]* ([a-z])[a-z-]* ([a-z][a-z-]*)'*", params['trinomial'])
        if m:
            params['subspecies'] = "'''''%s. %s. %s'''''" % (m.group(1), m.group(2), m.group(3))

    return params

def convert(pl):
    text = pl.get()
    if edit:
        text = edittext(text)
    params = parse(text, pl.title())
    newtext = re.sub(r'(?is){{taxobox[ _]+begin *\|.*{{taxobox[ _]+end *}}',
                     '{{Taxobox\n'
                     + ''.join( '| %s = %s\n' % (k, params[k])
                                for k in params['sequence']
                                if k in params )
                     + '}}', text)
    newtext = check(pl.get(), newtext)
    if newtext:
        status, reason, data = pl.put(newtext, u'nomialbot — converted multi-template taxobox to {{Taxobox}}')
        global done
        if data == '':
            done[pl.title()] = True

def convertmany():
    global site, n, linknames, done
    pages = map(lambda l: wikipedia.Page(site, l), linknames)
    fetched = []
    while n < len(linknames):
        try:
            if not done.get(linknames[n]):
                if linknames[n] not in fetched:
                    tofetch = filter(lambda p: not done.get(p.title()), pages[n:])[:50]
                    wikipedia.getall(site, tofetch)
                    fetched += map(lambda p: p.title(), tofetch)
                wikipedia.output("Trying %s" % linknames[n])
                if pl.namespace() != 0:
                    done[pl.title()] = True
                    wikipedia.output(u"%s not in main namespace" % pl.title())
                else:
                    convert(pages[n])
        except wikipedia.LockedPage:
            wikipedia.output("%s is locked" % linknames[n])
        except wikipedia.IsRedirectPage:
            wikipedia.output("%s is redirect" % linknames[n])
            done[linknames[n]] = True
        except NoError:
            None
        except Error, e:
            wikipedia.output(u'***' + e.text)
        n += 1

def main():
    global checks, edit, debug
    offset = None
    reload = None
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'r:dneo:',
                                   ['reload=', 'debug', 'no-checks', 'edit', 'offset='])
        for o, a in opts:
            if o in ('-n', '--no-checks'):
                checks = False
            elif o in ('-o', '--offset'):
                offset = int(a)
            elif o in ('-e', '--edit'):
                edit = True
            elif o in ('-d', '--debug'):
                debug = True
            elif o in ('-r', '--reload'):
                reload = a
            else:
                print "Bad option: %s" % o
                return
    except getopt.GetoptError:
        print "Bad command line"
        return
    global n, linknames, done
    done = {}
    try:
        f = file('taxoconvert.db', 'rb')
        n, linknames, done = pickle.load(f)
        f.close()
        if reload:
            raise IOError
    except IOError:
        tb = wikipedia.Page(site, reload)
        linknames = map(lambda p:p.title(), tb.getReferences())
        print len(linknames), "pages found"
        n = 0
    try:
        if offset != None:
            n = offset
        if args:
            for aa in args:
                convert(wikipedia.Page(site, aa))
        else:
            convertmany()
    finally:
        f = file('taxoconvert.db.new', 'wb')
        pickle.dump((n, linknames, done), f)
        f.close()
        os.rename('taxoconvert.db.new', 'taxoconvert.db')

if __name__ == '__main__':
    try:
        main()
    finally:
        wikipedia.stopme()


Avvisa utenti[modifica | modifica wikitesto]

avvisoFdV.py
# -*- coding: utf-8 -*-

import wikipedia
import re

list = [
* [[Utente:Dark-deoxys-ex]]
* [[Utente:Fradeve11]]
* [[Utente:Kalumet Sioux]]
* [[Utente:Paolo.bertinetto]]
* [[Utente:Thom]]
* [[Utente:Archenzo]]
* [[Utente:Cinerino]]
* [[Utente:Marrabbio2]]
* [[Utente:Carnby]]
* [[Utente:Dschiavon]]
* [[Utente:rdelre]]
* [[Utente:Svante]] 
* [[Utente:Broc]]
* [[Utente:Esculapio]]
* [[Utente:Phenagen]]
* [[Utente:Ale.com]]
* [[Utente:Tanarus]]
* [[Utente:Brodo]]
* [[Utente:Aaaaaa]]
* [[Utente:Michele859]]
* [[Utente:Gia.cossa]]
* [[Utente:White_wolf]]
* [[Utente:Ottaviano II]]
* [[Utente:Ghedo]]
* [[Utente:Gonne junior]]
* [[Utente:Saphira555]]
* [[Utente:Eliasoriordan]]
* [[Utente:Link89]]
* [[Utente:Lycaon]]
* [[Utente:Winged_Zephiro]]
* [[Utente:Black mamba]]
* [[Utente:Furriadroxiu]]
* [[Utente:Niko87]]
* [[Utente:Andie]]
* [[Utente:Reedj.]]
* [[Utente:Marruz]]
* [[Utente:Tursiops]]
* [[utente:Sogeking]]
* [[Utente:Yoruno]]
* [[Utente:Piper90]]
* [[Utente:Wento]]
* [[Utente:*evy*splash]] 
* [[Utente:Corneliae]]
* [[Utente:Carnby]]
* [[Utente:Morgoth92]]
* [[Utente:Yuma]]
* [[Utente:Arlas!]]
* [[Utente:Nicknotfound]]
* [[Utente:Vitalfranz]]
* [[Utente:GioMax]]
* [[Utente:Happyhour]]


]

wikipedia.handleArgs()
mainPage = wikipedia.Page(wikipedia.getSite(), u'Progetto:Forme di vita/Utenti')
txt = mainPage.get()
for m in list:
 i=wikipedia.Page(wikipedia.getSite(), m[0])
 if i.exists(): #or i.title().find(u'Immagine') != -1 or i.title().find(u'Image') != -1 or i.title().find(u'idae') != -1:
  continue
 regex = re.compile(u'\[\[%s\]\]\'\' *\|\| *(.*) *\|\|' % i.title())

 paginadiscussione = wikipedia.Page(wikipedia.getSite(), u'Discussione:' + i.title())
 if paginadiscussione.exists():
  olddiscussione = paginadiscussione.get()
 else:
  olddiscussione = u''
 testodiscussione = u' ===Avviso===\n ' + olddiscussione
 wikipedia.showDiff(olddiscussione, testodiscussione)
 choice = wikipedia.inputChoice(u'Modifico la pagina di discussione?',  [u'Yes', u'No'], [u'y', u'N'], u'N')
 if choice in [u'Y', u'y']:
  wikipedia.setAction(u'messaggio dal progetto:Forme di vita')
  paginadiscussione.put(testodiscussione)
wikipedia.stopme()


avvisaUtenti.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wikipedia

listaDiscussioni = [
    "Discussioni utente:Tatobot",
    "Discussioni utente:Esculapio",
    # TUTTI GLI UTENTI QUI!
]

def main():
    all = False
    wikipedia.handleArgs()
    mySite = wikipedia.getSite(code='it', fam='wikipedia')
    messaggio = wikipedia.Page(mySite, "Utente:Tatobot/avviso").get() # QUI CI VA LA PAGINA IN CUI C'È IL MESSAGGIO!
    for i in listaDiscussioni:
        currentPage = wikipedia.Page(mySite, i)
        try:
            oldText = currentPage.get()
        except wikipedia.NoPage:
            wikipedia.output(currentPage.title() + " does not exist!")
            continue
        except wikipedia.IsRedirectPage:
            currentPage = currentPage.getRedirectTarget()
            oldText = currentPage.get()
        wikipedia.output(">>>>> " + currentPage.title() + " <<<<<")
        newText = oldText + "\n\n" + messaggio
        wikipedia.showDiff(oldText, newText)
        if not all:
            choice = wikipedia.inputChoice(u"Modificare?",  ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
        else:
            choice = 'y'
        if choice in ['A', 'a']:
            all = True
            choice = 'y'
        if choice in ['Y', 'y']:
            # AGGIUNGERE UN OGGETTO APPROPRIATO
            currentPage.put(newText, minorEdit=False, comment=u'/* OGGETTO DEL MESSAGGIO */ nuova sezione - messaggio automatico')
        
if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()