Usuari:PereBot/robot comprova bcin-bcil
Aparença
La sortida que produeix aquest programa és a Usuari:PereBot/comprovació bcin-bcil.
# -*- coding: utf-8 -*-
# A partir d'una llista de monuments o d'una categoria de llistes
# compara la protecció (BCIN o BCIL) amb la de la base Gaudí.
# Està pensat per detectar els BCIL que no estan marcats a
# les nostres llistes perquè abans la informació no sortia
# a la base Gaudí.
# Compte que aquest programa és reciclat a partir d'un que
# feia una tasca força diferent, i la major part del codi
# no fa res d'útil, però m'ha fet mandra esporgar el programa
# de les parts que tampoc hi fan cap nosa.
# Els missatges també poden ser sorprenentment inadequats.
import sys
sys.path.append('C:\compat')
sys.path.append('C:\compat\userinterfaces')
import wikipedia,catlib,urllib,urllib2
import re
# Elimina l'enllaç d'un text. Funciona bé si hi ha un sol enllaç.
# Deixa el text que mostra l'enllaç (no on apunta)
def eliminaenllac(nom):
nom=re.sub(u"\[\[.*\|","",nom)
nom=nom.replace("[[","")
nom=nom.replace("]]","")
return nom
# Elimina els espais del principi i el final d'una cadena
# NOTA: Aquesta funció no cal perquè es pot fer amb el mètode strip
def eliminaespais(text):
text=re.sub(u"^ *","",text)
text=re.sub(u" *$","",text)
return text
# Crea una llista d'esborrany per editar i pujar-la amb el bot,
# o per copiar i enganxar les descripcions de la categoria.
# El paràmetre origen és el nom d'una llista de monuments.
def creallista(origen): ##,llistafotos,minfotos
pag=wikipedia.Page(site,origen)
tottemp=pag.templatesWithParams()
informe=u"[[{}]]\n\n".format(origen)
resumllista=u"" # Resum estadístic de les categories a crear per una llista.
numcats=0 # Comptador pel nombre de categories en una llista.
ccatllista=u"" # Categoria de Commons que correspon a la llista d'acord amb la plantilla Commonscat.
classe=u""
for i in range(0, len(tottemp)):
classe0=u""
#if tottemp[i][0]==u'Filera art públic':
# classe0=u"art"
if tottemp[i][0]==u'Filera IPA': #or tottemp[i][0]==u'Filera MH' or tottemp[i][0]==u'Filera BIC' or tottemp[i][0]==u'Filera BIC Val' or tottemp[i][0]==u'Filera BIC And' or tottemp[i][0]==u'filera BC Sard' or tottemp[i][0]==u'filera BIC-ZA':
classe0=u"monument"
# print u"MONUMENT"
#if tottemp[i][0]==u'Filera patrimoni natural':
# classe0=u"natural"
if classe0!=u"":
classe=classe0
# print u"classe:",classe
# print tottemp[i][1]
proposta=""
nom=""
nomcoor=""
nomnet=""
lloc=""
municipi=""
lat=""
lon=""
idd=""
codi=""
idprot=""
prot=""
idurl=""
imatge=""
autor=""
data=""
descripcio=""
material=""
commonscat=""
enllac=""
tipus=""
dimensions=""
coorddim=""
coordtype=""
for j in range(0,len(tottemp[i][1])): # llegeix la taula i n'extreu els camps
camp=tottemp[i][1][j].replace(u"\n","")
camp=re.sub(u"<ref name.*>.*<.*>","",camp)
camp=re.sub(u"<ref ?>.*<.*>","",camp)
camp=re.sub(u"<.*>","",camp)
# print camp
if re.search(u"coord-nom *?=",camp):
nomcoor=re.sub(u"^ *?coord-nom *?= *?","",camp)
nomcoor=eliminaespais(nomcoor)
# print nomcoor
elif re.search(u"nom *?=",camp):
nom=re.sub(u" *?nom *?= *?","",camp)
nom=re.sub(u"<ref name.*>.*<.*>","",nom)
nom=re.sub(u"<ref ?>.*<.*>","",nom)
nom=re.sub(u"<.*>","",nom)
nom=eliminaespais(nom)
print nom
if re.search(u"\[\[.*\]\]",nom):
enllac=re.sub(u"^.*?\[\[","",nom)
enllac=re.sub(u"\]\].*?$","",enllac)
enllac=re.sub(u"\|.*?$","",enllac)
nomnet=eliminaenllac(nom)
# print enllac
else:
nomnet=nom
elif re.search(u"idprot *?=",camp):
idprot=re.sub(u"^ *?idprot *?= *?","",camp)
idprot=idprot.replace(" ","")
#print u"idprot:",idprot
elif re.search(u"prot *?=",camp):
prot=re.sub(u"^ *?prot *?= *?","",camp)
prot=prot.replace(" ","")
print u"prot:",prot
elif re.search(u"nomcoor *?=",camp):
nomcoor=re.sub(u"^ *?nomcoor *?= *?","",camp)
nomcoor=eliminaespais(nomcoor)
# print nomcoor
elif re.search(u"municipi *?=",camp):
municipi=re.sub(u"^ *?municipi *?= *?","",camp)
municipi=eliminaenllac(municipi)
municipi=municipi.strip()
# print municipi
elif re.search(u"lloc *?=",camp):
lloc=re.sub(u"^ *?lloc *?= *?","",camp)
lloc=eliminaenllac(lloc)
lloc=lloc.strip()
# print lloc
elif re.search(u"lat *?=",camp):
lat=re.sub(u"^ *?lat *?= *?","",camp)
lat=lat.replace(" ","")
# print lat
elif re.search(u"lon *?=",camp):
lon=re.sub(u"^ *?lon *?= *?","",camp)
lon=lon.replace(" ","")
# print lon
elif re.search(u"idurl *?=",camp):
idurl=re.sub(u"^ *?idurl *?= *?","",camp)
idurl=idurl.replace(" ","")
print u"idurl:",idurl
elif re.search(u"id *?=",camp):
idd=re.sub(u"^ *?id *?= *?","",camp)
idd=idd.replace(" ","")
# print idd
elif re.search(u"descripció *?=",camp):
descripcio=re.sub(u"^ *?descripció *?= *?","",camp)
descripcio=descripcio.strip()
# print descripcio
elif re.search(u"codi *?=",camp):
codi=re.sub(u"^ *?codi *?= *?","",camp)
codi=codi.replace(" ","")
# print codi
elif re.search(u"data *?=",camp):
data=re.sub(u"^ *?data *?= *?","",camp)
data=data.strip()
# print data
elif re.search(u"material *?=",camp):
material=re.sub(u"^ *?material *?= *?","",camp)
material=eliminaenllac(material)
material=material.strip()
# print material
elif re.search(u"autor *?=",camp):
autor=re.sub(u"^ *?autor *?= *?","",camp)
autor=eliminaenllac(autor)
autor=autor.strip()
# print autor
elif re.search(u"imatge *?=",camp):
imatge=re.sub(u"^ *?imatge *?= *?","",camp)
if not(re.search(u"..",imatge)):
imatge=""
# print imatge
elif re.search(u"commonscat *?=",camp):
commonscat=re.sub(u"^ *?commonscat *?= *?","",camp)
commonscat=commonscat.strip()
if not(re.search(u"..",commonscat)):
commonscat=""
# print commonscat
elif re.search(u"tipus *?=",camp):
tipus=re.sub(u"^ *?tipus *?= *?","",camp)
tipus=tipus.strip()
if not(re.search(u"..",tipus)):
tipus=""
# print tipus
elif re.search(u"coord-dim *?=",camp):
coorddim=re.sub(u"^ *?coord-dim *?= *?","",camp)
coorddim=coorddim.strip()
if not(re.search(u"..",coorddim)):
coorddim=""
# print coorddim
elif re.search(u"coord-type *?=",camp):
coordtype=re.sub(u"^ *?coord-type *?= *?","",camp)
coordtype=coordtype.strip()
if not(re.search(u"..",coordtype)):
coordtype=""
# print coordtype
## numfotos=llistafotos.count(idd)
if idurl!=u"":
linia=u""
#urlbg=idprot.replace(u"-MH",u"")
urlbg=u"http://invarquit.cultura.gencat.cat/Cerca/Fitxa?index=0&consulta=&codi={}".format(idurl)
protbg=u""
try:
pagbg=urllib.urlopen(urlbg)
except IOError:
print "Error IO en obrir",urlbg
protbg=u"Error en obrir"
#print "obert"
if protbg==u"Error en obrir":
linia=u"*{}: Error en obrir la base Gaudí".format(nomnet)
pass
else:
textbh=pagbg.read()
if "<td>BCIL</td>" in textbh:
protbg=u"BCIL"
if "<td>BCIN</td>" in textbh:
protbg=u"BCIN"
if prot==u"":
prottext=u"Sense protecció"
else:
prottext=prot
if prot!=u"" or protbg!=u"":
linia=u"*{}: {} segons llista, {} segons base Gaudí".format(nomnet,prottext,protbg)
if prot!=protbg:
linia=linia+u" '''DIFERENT'''"
if linia!=u"":
print linia
linia=linia+u"\n"
informe=informe+linia
return informe
# El programa comença aquí.
#lloc=u"Llista de monuments de Rubí"
lloc=u"Llistes de monuments de l'Alt Pirineu i Aran"
fotosmin=2
paginaunica=False #True si lloc és una llista de monuments, False si és una categoria de llistes
subs=1 #0 per no buscar fotos a les subcategories, 1 per buscar-n'hi
site=wikipedia.getSite('ca')
sitecommons=wikipedia.getSite('commons','commons')
resumgral=""
llarg=-300
registre=wikipedia.Page(site,u"usuari:PereBot/comprovació bcin-bcil")
text0=registre.get()
if paginaunica:
resumgral=creallista(lloc) ##,llistafotos,fotosmin
else:
l=catlib.Category(site,lloc).articlesList(recurse=1)
#print l
for pag in l:
titol=pag.title()
print titol
resumgral=resumgral+creallista(titol)
if len(resumgral)-llarg>1500: #Canviar per regular cada quant desa
resumgraltxt=u"== "+lloc+" ==\n"+resumgral+"\n"
registre.put(text0+u"\n"+resumgraltxt+u"Feina en curs.--~~~~",lloc)
llarg=len(resumgral)
resumgraltxt=u"== "+lloc+" ==\n"+resumgral+"\n"
registre.put(text0+u"\n"+resumgraltxt+u"Feina acabada.--~~~~",lloc)
wikipedia.stopme()