# -*- coding: utf-8 -*-
#{{}}
from scripts import *
import os
import json
import time
commons=wikipedia.Site("commons","commons")
source=wikipedia.Site("it","wikisource")
def addCreator():
nocat=[]
l=source.allpages(namespace=102,includeredirects=False)
for i in l:
pagina=wikipedia.Page(commons,i.title().replace("Autore:","Category:"))
print pagina.title()
if pagina.exists():
if not "{{Creator" in pagina.get():
#print ("\n"+pagina.get())[:300]
pagina.put("\n"+pagina.get(),comment="Adding a Template:Creator possible to the code")
time.sleep(120)
else:
nocat.append(i)
salva_pcl(nocat,"nocat","commons")
return
def imagepage(nome):
pagina=wikipedia.ImagePage(commons,nome)
creator=pagina.getCreator()
l=[]
for i in pagina.globalUsage():
l.append(i)
return (pagina,creator,l)
def deleteRequest(l):
users,free,problem=[],[],[]
for i in l:
page,user,used=imagepage(i)
print page,user[0],len(used)
if not user[0] in users:
users.append(user[0])
if len(used)==0:
free.append(page)
else:
problem.append(page)
result={"users":users,"free":free,"problem":problem}
salva_pcl(result,"toDelete","")
return result
def deleteTag():
template=u"Template:Del/* */ete"
l=carica_pcl("toDelete","")
for pagina in l["free"][2:]:
testo=pagina.get()
testo=template+"\n"+testo
pagina.put(testo,comment="Tagging for deletion by a bot waiting for flag.")
# print testo
# time.sleep(60)
return
itw=wikipedia.getSite("it","wikipedia")
enw=wikipedia.getSite("en","wikipedia")
frw=wikipedia.getSite("fr","wikipedia")
its=wikipedia.getSite("it")
def getAutData(pag):
if pag.startswith("Indice:"):
paginaIndice=wikipedia.Page(its,pag)
datiIndice=parseTemplate(paginaIndice.get(),":MediaWiki")
autore="Autore:"+datiIndice[0]["Autore"]
elif pag.startswith("Autore:"):
autore=pag
else:
print "Errore: inserire una pagina Indice o Autore"
return
paginaAutoreIts=wikipedia.Page(its,autore)
autoreItw=parseTemplate(paginaAutoreIts.get(),"Autore")[0]["Nome della pagina su Wikipedia"]
paginaAutoreItw=wikipedia.Page(itw,autoreItw)
datiAutoreItw=parseTemplate(paginaAutoreItw.get(),"Bio")
datiAutoreEnw=""
datiAutoreFrw=""
for i in paginaAutoreItw.interwiki():
if i.site().language()=="en":
datiAutoreEnw=parseTemplate(i.get(),"Infobox")
elif i.site().language()=="fr":
datiAutoreFrw=parseTemplate(i.get(),"Infobox")
return json.dumps({"it":datiAutoreItw,"en":datiAutoreEnw,"fr":datiAutoreFrw})
def parseTemplate(testo,template):
template=template[0:1].lower()+template[1:]
testo=testo.replace("{{"+template[0:1].upper()+template[1:],\
"{{"+template[0:1].lower()+template[1:])
templ=find_stringa(testo,"Template:"+template,"",1,"{{")[2:-2]
el=produci_lista(templ,"Template:","",1,"{{")+\
produci_lista(templ,"","",1,"[[")+\
produci_lista(templ,"{|","|}",1,"{|")
for i in el:
templ=templ.replace(i,i.replace("|","[$]"),1)
templ=templ.split("|")
for i in range(len(templ)):
templ[i]=templ[i].strip().replace("[$]","|")
d={}
l=[]
n=0
for i in templ:
i=i.split("=",1)
for j in range(len(i)):
i[j]=i[j].strip()
if len(i)==1:
d[str(n)]=i[0]
l.append(str(n))
n+=1
else:
d[i[0]]=i[1]
l.append(i[0])
return (d,l)
def rewriteTemplate(objTemplate):
l=objTemplate[1]
d=objTemplate[0]
n=0
t=""
for i in l:
if i=="0":
t+="{{"+d["0"]+"\n"
n+=1
else:
if i==str(n):
t+=" | "+d[i]+"\n"
n+=1
else:
t+=" | "+i+" = "+d[i]+"\n"
t+= "}}"+"\n"
return t
def dicIndice(base):
testo=unicode(html("Indice:"+base),"utf-8")
tipo=base[base.rfind("."):]
testo= "\n".join(produci_lista(testo,"<td","",1))
l=produci_lista(testo,'<a href="//it.wikisource.org/wiki/Pagina:',"</a>",1)
d={}
for i in l:
d[find_stringa(i,tipo+"/",'"')]=i\
.replace('0',"") \
.replace('00',"") \
.replace('000',"") \
.replace("<","|<")\
.replace(">",">|")\
.split("|")[2]
return d
# def getReferences(self, follow_redirects=True, withTemplateInclusion=True,
# onlyTemplateInclusion=False, redirectsOnly=False, internal = False)
def getRef(pagina,withTemplateInclusion=True,onlyTemplateInclusion=True):
lista=[]
l=pagina.getReferences(follow_redirects=False, withTemplateInclusion=withTemplateInclusion,\
onlyTemplateInclusion=onlyTemplateInclusion, redirectsOnly=False, internal = False)
for i in l:
lista.append(i)
return lista
def files_in_cat(category_name):
site=commons
#site = wikipedia.getSite()
cat = catlib.Category(site,'Category:'+category_name)
gen = pagegenerators.CategorizedPageGenerator(cat)
return gen
class Book:
def __init__(self, base):
# calling parseInformation()
# retrieves File: description page and gives a "skeleton" of it where relevant information
# is replaced with a placeholder
fileText,information,book,categories,licences,indice=parseInformation(base)
self.base=base # base name of File: and Indice:
self.information=information # parsetemplate object from parsing of :MediaWiki:Proofreadpage_index_template
# stored into it.wikisource Indice: page
self.categories=categories # list of categories
self.licences=licences # list of template licences
self.book=book # parseTemplate obiect from parsing of Book template
self.indice=indice # parsetemplate object from parsinng of Information template
self.fileText=fileText # File: description page "skeleton"
def parseInformation(base):
indexPage=wikipedia.Page(source,"Indice:"+base)
indexData=parseTemplate(indexPage.get(),":MediaWiki:Proofreadpage_index_template")
fileText=wikipedia.Page(commons,"File:"+base).get()\
.replace("{{information","{{Information")\
.replace("{{book","{{Book")
information=find_stringa(fileText,"Template:Information","",1,"{{")
book=find_stringa(fileText,"Template:Book","",1,"{{")
if information !="":
fileText=fileText.replace(information,"<information>")
information=parseTemplate(information,"Information")
if book !="":
fileText=fileText.replace(book,"<book>")
book=parseTemplate(book,"Book")
categories=produci_lista(fileText,"Category","",2)
if len(categories)>0:
fileText=fileText.replace(categories[0],"<categories>")
if len(categories)>1:
for i in categories[1:]:
fileText=fileText.replace(i,"")
licences=produci_lista(fileText,"Template:PD","",1,"{{")
if len(licences)>0:
fileText=fileText.replace(licences[0],"<licences>")
if len(licences)>1:
for i in licences[1:]:
fileText=fileText.replace(i,"")
return fileText,information,book,categories,licences,indexData
def newBook(indexData,fileInformation):
fileBook={"0":"Book"}
for i in [u'Author', u'Translator', u'Editor', u'Illustrator', u'Title', u'Subtitle', \
u'Series title', u'Volume', u'Edition', u'Publisher', u'Printer', u'Date', u'City', \
u'Language', u'Description', u'Source', u'Permission', u'Image', u'Image page', \
u'Pageoverview', u'Wikisource', u'Homecat', u'Other_versions', u'ISBN', u'LCCN', \
u'OCLC']:
fileBook[i]=i
return fileBook