User:Alex brolloBot/Python scripts/commons.py
Jump to navigation
Jump to search
# -*- 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 ("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(' ',"") \ .replace(' ',"") \ .replace(' ',"") \ .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\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"