Utente:Tatobot/Script
Tutorial regex
modificaMammiferi a rischio di estinzione
modifica# -*- 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)
# -*- 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
modificaConosci il Python? Se no, ti spiego il codice.
# -*- 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
modificaQuesto 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Ø)
# -*- 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
modificatratto da: http://en.wikipedia.org/wiki/User:Gdr/taxoconvert.py
vedi anche: http://en.wikipedia.org/wiki/User:Gdr/Nomialbot
#!/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# -*- 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()
#!/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()