Usuari:MineralBot/codi
Aparença
# -*- coding: utf-8 -*-
# Programa per xuclar dades de mindat per muntar les
# infotaules de minerals.
# El programa és una adaptació d'un de similar que copiava
# les dades dels arbres d'interès local de Barcelona i
# alguns missatges i noms de variables poden ser
# poc adients pels minerals.
import sys
sys.path.append('/Users/Yuanga/Wiki/core')
import pywikibot
#from pywikibot import pagegenerators
from pywikibot.compat import catlib
import urllib,urllib2
import re
# Convertix a unicode saltant-se les paraules que no pugui
def uniaparaula(text):
linies=re.split(u" ",text)
noutext=u""
for linia in linies:
try:
novalinia=unicode(linia,"utf-8")
except UnicodeDecodeError:
print u"error a la paraula:",linia
novalinia=u"<!-- ERROR DE CONVERSIÓ UNICODE -->"
noutext=noutext+novalinia+u" "
return noutext
# Convertix a unicode saltant-se les línies que no pugui
def unialinia(text):
linies=re.split(u"\n",text)
noutext=u""
for linia in linies:
try:
novalinia=unicode(linia,"utf-8")
except UnicodeDecodeError:
print u"error a la línia:",linia
novalinia=uniaparaula(linia)
noutext=noutext+novalinia+u"\n"
return noutext
def llegeixarbre(url):
# Comença la part de llegir les dades del web
url='http://www.mindat.org/'+url
try:
pagarbre=urllib.urlopen(url)
except IOError:
print "Error IO en obrir",url
return ""
textarbre=pagarbre.read()
if re.search('<h1>.*</h1>',textarbre):
nom=re.findall('<h1>(.*)</h1>',textarbre)[0].strip()
print "nom:",nom
else:
print u"no trobo el nom"
nom=""
#Traduïm el nom
nomcat = nom
t = nomcat[-4:]
if t == 'aite' or t == 'eite' or t == 'iite' or t == 'oite' or t == 'uite':
nomcat = nomcat[0:-3] + 'ïta'
if nomcat[-3:] == 'ite':
nomcat = nomcat[0:-3] + 'ita'
if 'Phyllo' in nomcat:
nomcat = 'Fil·lo' + nomcat[6:]
if '-(' in nomcat:
nomtros = nomcat.split('-(')
nomtrosprimerapart = nomtros[0]
if nomtrosprimerapart[-3:] == 'ite':
nomcat = nomtrosprimerapart[0:-3] + 'ita-(' + nomtros[1]
t = nomtrosprimerapart[-4:]
if t == 'aite' or t == 'eite' or t == 'iite' or t == 'oite' or t == 'uite':
nomcat = nomtrosprimerapart[0:-3] + 'ïta-(' + nomtros[1]
nomcatmini = nomcat[0:1].lower() + nomcat[1:]
nickelstrunz = ''
if re.search('<a href="strunz.php">Nickel-Strunz 10th \(pending\) ed\.:</a></div><div class="mindatam2">..?\...\...<br>',textarbre):
nickelstrunz=re.findall('<a href="strunz.php">Nickel-Strunz 10th \(pending\) ed\.:</a></div><div class="mindatam2">(..?\...\...)<br>',textarbre)[0].strip()
categoria = {'1':'[[elements natius]]', '2':'[[minerals sulfurs|sulfurs]]', '3':'[[minerals halurs|halurs]]',
'4':'[[minerals òxids|òxids]]', '5':'[[minerals carbonats|carbonats]]', '6':'[[minerals borats|borats]]',
'7':'[[minerals sulfats|sulfats]]', '8':'[[minerals fosfats|fosfats]]', '9':'[[minerals silicats|silicats]]',
'10':'[[compostos orgànics|substàncies orgàniques]]'}
primer = nickelstrunz.split('.')
categoriaF = categoria.get(primer[0],'!!!')
if '|' in categoriaF:
catA = categoriaF.split('|')
catB = catA[1].split(']')
catC = catB[0]
categoriaG = catC[:-1]
else:
categoriaG = 'element químic'
dana = ''
if re.search('<a href="dana.php">Dana 8th ed.:</a></div><div class="mindatam2">..?\..?.\..?.\..?.<br>',textarbre):
dana=re.findall('<a href="dana.php">Dana 8th ed.:</a></div><div class="mindatam2">(..?\..?.\..?.\..?.)<br>',textarbre)[0].strip()
heys = ''
if re.search('<a href="cim.php">Hey\'s CIM Ref.:</a></div><div class="mindatam2">..?\...?\...?<br>',textarbre):
heys=re.findall('<a href="cim.php">Hey\'s CIM Ref.:</a></div><div class="mindatam2">(..?\...?\...?)<br>',textarbre)[0].strip()
descobriment = ''
if re.search('Year of Discovery:</div><div class="mindatam2">....</div>',textarbre):
descobriment=re.findall('Year of Discovery:</div><div class="mindatam2">(....)</div>',textarbre)[0].strip()
tipus = ''
if re.search('<a href="/glossary/type_locality">Type Locality:</a></div><div class="mindatam2"><a href="loc-.*?.html">.*?</a>',textarbre):
tipus=re.findall('<a href="/glossary/type_locality">Type Locality:</a></div><div class="mindatam2"><a href="loc-.*?.html">(.*?)</a>',textarbre)[0].strip()
lluentorF = ''
if re.search('<a href="/glossary/lustre">Lustre:</a></div><div class="mindatam2">.*?</div>',textarbre):
lluentor=re.findall('<a href="/glossary/lustre">Lustre:</a></div><div class="mindatam2">(.*?)</div>',textarbre)[0].strip().lower()
diccionari = {'vitreous':'vítria', 'earthy':'terrosa', 'dull':'mat', 'waxy':'cerosa', 'metallic':'metàl·lica', 'adamantine':'adamantina', 'pearly':'nacrada', 'resinous':'resinosa', 'sub-adamantine':'subadamantina'}
lluentors = lluentor.split(', ')
for x in lluentors:
lluentorF = lluentorF + diccionari.get(x,x+'*') + ', '
diafanitatF = ''
if re.search('Diaphaneity \(Transparency\):</div><div class="mindatam2">.*?</div>',textarbre):
diafanitat=re.findall('Diaphaneity \(Transparency\):</div><div class="mindatam2">(.*?)</div>',textarbre)[0].strip().lower()
diccionari = {'translucent':'translúcida', 'transparent':'transparent', 'opaque':'opaca'}
diafanitats = diafanitat.split(', ')
for x in diafanitats:
diafanitatF = diafanitatF + diccionari.get(x,'!!!') + ', '
colorF = ''
if re.search('Colour:</div><div class="mindatam2">.*?<',textarbre):
color=re.findall('Colour:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower().rstrip('.')
diccionari = {'red':'vermell', 'pale red':'vermell clar', 'light red':'vermell clar', 'dark red':'vermell fosc',
'pinky-red':'vermell rosat', 'blue':'blau', 'light blue':'blau clar', 'pale blue': 'blau clar',
'dark blue':'blau fosc', 'greenish-blue':'blau verdós', 'navy blue':'blau marí', 'cerulean':'ceruli',
'sky blue':'blau cel', 'turquoise blue':'blau turquesa', 'turquoise':'blau turquesa', 'blue-green':'blau verd',
'teal':'xarxet', 'teal blue':'blau xarxet', 'cyan':'cian', 'green':'verd', 'light green':'verd clar',
'pale green': 'verd clar', 'dark green':'verd fosc', 'bluish-green':'verd blavós', 'lime':'llima',
'green lime':'verd llima', 'chartreuse': 'color de chartreuse', 'olive':'oliva', 'olive green':'verd oliva',
'greenish':'verdós', 'greenish-black':'negre verdós', 'apple-green':'verd poma', 'grass green':'verd herba',
'emerald green':'verd maragda', 'greenish yellow':'groc verdós', 'pink':'rosa', 'pale pink':'rosa clar',
'light pink':'rosa clar', 'dark pink':'rosa fosc', 'reddish-pink':'rosa vermellós', 'red pink':'rosa vermell',
'red violet':'vermell violaci', 'rose':'rosa fort', 'magenta':'magenta', 'purple':'porpra',
'bluish-purple':'porpra blavós', 'reddish-purple':'porpra vermellós', 'indigo':'color indi/anyil',
'violet':'violat', 'yellow':'groc', 'pale yellow':'groc clar', 'light yellow':'groc clar', 'dark yellow':'groc fosc',
'orange-yellow':'taronja-groc', 'reddish-yellow':'groc vermellós', 'greenish-yellow':'groc verdós',
'bluish-yellow':'groc blavós', 'gold':'daurat', 'lemon-yellow':'groc llimona',
'pale brass-yellow':'groc llautó clar', 'brass yellow':'groc llautó', 'brass':'llautó',
'cadmium-yellow':'groc cadmi', 'cream-yellow':'groc crema', 'orange':'taronja', 'pale orange':'taronja clar',
'light orange':'taronja clar', 'dark orange':'taronja fosc', 'cream':'color crema', 'white':'blanc',
'yellowish-white':'blanc groguenc', 'bluish-white':'blanc blavós', 'reddish-white':'blanc vermellós',
'greenish-white':'blanc verdós', 'creamy-white':'blanc cremós', 'ivory':'color d’ivori', 'snow white':'blanc neu',
'silver':'platejat', 'tin':'color d’estany', 'lead':'color de plom', 'black':'negre', 'bluish-black':'negre blavós',
'greenish-black':'negre verdós', 'grey':'gris', 'pale grey':'gris clar', 'light grey':'gris clar', 'dark grey':'gris fosc',
'yellowish-grey':'gris groguenc', 'reddish-grey':'gris vermellós', 'greenish-grey':'gris verdós', 'bluish-grey':'gris blavós',
'brown':'marró', 'pale brown':'marró clar', 'light brown':'marró clar', 'dark brown':'marró fosc', 'yellowish-brown':'marró groguenc',
'orange-brown':'marró ataronjat', 'reddish-brown':'marró vermellós', 'greenish-brown':'marró verdós', 'earthy-brown':'color terra',
'pale':'clar', 'light':'clar', 'dark':'fosc', 'intense':'intens', 'reddish brown':'marró vermellós',
'yellowish gray':'gris groguenc', 'smoky-gray':'gris fumat', 'gray-brown':'gris-marró', 'tan':'bronze',
'golden-yellow':'groc daurat','colourless':'incolor', 'olive-green':'verd oliva', 'pistachio-green':'verd festuc',
'grayish-white':'blanc grisenc', 'straw-yellow':'groc palla'}
colors = color.split(', ')
for x in colors:
colorF = colorF + diccionari.get(x,x+'*') + ', '
ratllaF = ''
if re.search('Streak:</div><div class="mindatam2">.*?<',textarbre):
ratlla=re.findall('Streak:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower()
diccionari = {'red':'vermella', 'pale red':'vermell clar', 'light red':'vermell clar', 'dark red':'vermell fosc',
'pinky-red':'vermell rosat', 'blue':'blava', 'light blue':'blau clar', 'pale blue': 'blau clar',
'dark blue':'blau fosc', 'greenish-blue':'blau verdós', 'navy blue':'blau marí', 'cerulean':'ceruli',
'sky blue':'blau cel', 'turquoise blue':'blau turquesa', 'turquoise':'blau turquesa', 'blue-green':'blau verd',
'teal':'xarxet', 'teal blue':'blau xarxet', 'cyan':'cian', 'green':'verd', 'light green':'verd clar',
'pale green': 'verd clar', 'dark green':'verd fosc', 'bluish-green':'verd blavós', 'lime':'llima',
'green lime':'verd llima', 'chartreuse': 'color de chartreuse', 'olive':'oliva', 'olive green':'verd oliva',
'greenish':'verdós', 'greenish-black':'negre verdós', 'apple-green':'verd poma', 'grass green':'verd herba',
'emerald green':'verd maragda', 'greenish yellow':'groc verdós', 'pink':'rosa', 'pale pink':'rosa clar',
'light pink':'rosa clar', 'dark pink':'rosa fosc', 'reddish-pink':'rosa vermellós', 'red pink':'rosa vermell',
'red violet':'vermell violaci', 'rose':'rosa fort', 'magenta':'magenta', 'purple':'porpra',
'bluish-purple':'porpra blavós', 'reddish-purple':'porpra vermellós', 'indigo':'color indi/anyil',
'violet':'violat', 'yellow':'groc', 'pale yellow':'groc clar', 'light yellow':'groc clar', 'dark yellow':'groc fosc',
'orange-yellow':'taronja-groc', 'reddish-yellow':'groc vermellós', 'greenish-yellow':'groc verdós',
'bluish-yellow':'groc blavós', 'gold':'daurat', 'lemon-yellow':'groc llimona',
'pale brass-yellow':'groc llautó clar', 'brass yellow':'groc llautó', 'brass':'llautó',
'cadmium-yellow':'groc cadmi', 'cream-yellow':'groc crema', 'orange':'taronja', 'pale orange':'taronja clar',
'light orange':'taronja clar', 'dark orange':'taronja fosc', 'cream':'color crema', 'white':'blanc',
'yellowish-white':'blanc groguenc', 'bluish-white':'blanc blavós', 'reddish-white':'blanc vermellós',
'greenish-white':'blanc verdós', 'creamy-white':'blanc cremós', 'ivory':'color d’ivori', 'snow white':'blanc neu',
'silver':'platejat', 'tin':'color d’estany', 'lead':'color de plom', 'black':'negre', 'bluish-black':'negre blavós',
'greenish-black':'negre verdós', 'grey':'gris', 'pale grey':'gris clar', 'light grey':'gris clar', 'dark grey':'gris fosc',
'yellowish-grey':'gris groguenc', 'reddish-grey':'gris vermellós', 'greenish-grey':'gris verdós', 'bluish-grey':'gris blavós',
'brown':'marró', 'pale brown':'marró clar', 'light brown':'marró clar', 'dark brown':'marró fosc', 'yellowish-brown':'marró groguenc',
'orange-brown':'marró ataronjat', 'reddish-brown':'marró vermellós', 'greenish-brown':'marró verdós', 'earthy-brown':'color terra',
'pale':'clar', 'light':'clar', 'dark':'fosc', 'intense':'intens', 'reddish brown':'marró vermellós',
'yellowish gray':'gris groguenc', 'smoky-gray':'gris fumat', 'gray-brown':'gris-marró', 'tan':'bronze',
'golden-yellow':'groc daurat','colourless':'incolor', 'olive-green':'verd oliva', 'pistachio-green':'verd festuc',
'grayish-white':'blanc grisenc', 'straw-yellow':'groc palla'}
ratlles = ratlla.split(', ')
for x in ratlles:
ratllaF = ratllaF + diccionari.get(x,x+'*') + ', '
tenacitatF = ''
if re.search('Tenacity:</div><div class="mindatam2">.*?<',textarbre):
tenacitat=re.findall('Tenacity:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower()
diccionari = {'brittle':'fràgil','malleable':'mal·leable'}
tenacitats = tenacitat.split(' ,')
for x in tenacitats:
tenacitatF = tenacitatF + diccionari.get(x,x+'*') + ', '
exfoliacio = ''
if re.search('Cleavage:</div><div class="mindatam2">.*?</',textarbre):
exfoliacio=re.findall('Cleavage:</div><div class="mindatam2">(.*?)</',textarbre)[0].strip().lower()
exfoliacio = exfoliacio.replace('<br>', ' - ') + '*'
fracturaF = ''
if re.search('Fracture:</div><div class="mindatam2">.*?<',textarbre):
fractura=re.findall('Fracture:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower()
diccionari = {'conchoidal':'concoïdal', 'irregular':'irregular', 'uneven':'desigual', 'sub-conchoidal':'subconcoïdal',
'hackly':'aspre'}
fractures = re.split(', |/', fractura)
for x in fractures:
fracturaF = fracturaF + diccionari.get(x,x+'*') + ', '
densitat = ''
if re.search('Density:</div><div class="mindatam2">.*?</d',textarbre):
densitat=re.findall('Density:</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
densitat = densitat.replace('measured', 'mesurada').replace('calculated', 'calculada').replace('.', ',').replace(' ', '; ').replace('-', 'a')
sistema = ''
if re.search('Crystal System:</div><div class="mindatam2">.*?<',textarbre):
sistema=re.findall('Crystal System:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower()
diccionari = {'tetragonal':'[[sistema tetragonal|tetragonal]]', 'orthorhombic':'[[sistema ortoròmbic|ortoròmbic]]',
'hexagonal':'[[sistema hexagonal|hexagonal]]', 'triclinic':'[[sistema triclínic|triclínic]]',
'monoclinic':'[[sistema monoclínic|monoclínic]]', 'isometric':'[[sistema isomètric|isomètric]]'}
sistema = diccionari.get(sistema, sistema+'*')
sistA = sistema.split('|')
sistemaLlarg = sistA[0]+']]'
simetria = ''
if re.search('Class \(H-M\):</div><div class="mindatam2">.*?</d',textarbre):
simetria=re.findall('Class \(H-M\):</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
diccionari = {'dipyramidal':'dipiramidal', 'prismatic':'prismàtica', 'dihexagonal dipyramidal':'dihexagonal dipiramidal',
'trapezohedral':'trapezohedral', 'pinacoidal':'pinacoide'}
simetries = simetria.split(' - ')
simetria = simetries[0] + ' - ' + diccionari.get(simetries[1],simetries[1]+'*')
simetria = simetria.replace('</i><i>', '').replace('<i>', '\'\'').replace('</i>', '\'\'')
estructura = ''
if re.search('Cell Parameters:</div><div class="mindatam2">.*?</',textarbre):
estructura=re.findall('Cell Parameters:</div><div class="mindatam2">(.*?)</',textarbre)[0].strip().lower()
estructura = estructura.replace(',', ';').replace('.', ',').replace('Å', 'Å').replace('<br>', '; ').replace('α', 'α').replace('°', '°').replace('β', 'β').replace('γ', 'γ')
propoptiques = ''
if re.search('Type:</div><div class="mindatam2">.*?</',textarbre):
propoptiques=re.findall('Type:</div><div class="mindatam2">(.*?)</',textarbre)[0].strip().lower()
propoptiques = propoptiques+'*'
refraccio = ''
if re.search('RI values:</div><div class="mindatam2">.*?</d',textarbre):
refraccio=re.findall('RI values:</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
refraccio = refraccio.replace('<i>', '\'\'').replace('</i>', '\'\'').replace('.', ',').replace('α', 'α').replace('β', 'β').replace('γ', 'γ').replace('ω', 'ω').replace('ε', 'ε').replace('-', 'a')
birefringencia = ''
if re.search('Max Birefringence:</div><div class="mindatam2">.*?<',textarbre):
birefringencia=re.findall('Max Birefringence:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip().lower()
birefringencia = birefringencia.replace('.', ',').replace('δ', 'δ').replace('-', 'a')
formula = ''
if re.search('Formula:</div><div class="mindatam2"><span class="newformula">.*?</span>',textarbre):
formula=re.findall('Formula:</div><div class="mindatam2"><span class="newformula">(.*?)</span>',textarbre)[0].strip()
formula = formula.replace(" class='newformsub'", "").replace(" class='newformsup'", "").replace('·','·')
impureses = ''
if re.search('Common Impurities:</div><div class="mindatam2">.*?<',textarbre):
impureses=re.findall('Common Impurities:</div><div class="mindatam2">(.*?)<',textarbre)[0].strip()
impureses = impureses.replace(',', ', ')
fluorescencia = ''
if re.search('<a href="/glossary/fluorescence">Fluorescence in UV light:</a></div><div class="mindatam2">.*?</d',textarbre):
fluorescencia=re.findall('<a href="/glossary/fluorescence">Fluorescence in UV light:</a></div><div class="mindatam2">(.*?)</d',textarbre)[0].strip()
fluorescencia = fluorescencia + '*'
macles = ''
if re.search('Twinning:</div><div class="mindatam2">.*?</d',textarbre):
macles=re.findall('Twinning:</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
macles = macles.replace('none observed', 'no observades') + '*'
duresa = ''
if re.search('Hardness \(Mohs\):</div><div class="mindatam2">.*?</d',textarbre):
duresa=re.findall('Hardness \(Mohs\):</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
duresa = duresa.replace('½', ',5').replace('-', 'a')
angle = ''
if re.search('2V:</div><div class="mindatam2">.*?</d',textarbre):
angle=re.findall('2V:</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
angle = angle.replace('measured', 'mesurat').replace('calculated', 'calculat').replace('.', ',').replace(' ,', ',').replace('°', '°')
pleocr = ''
if re.search('Pleochroism:</div><div class="mindatam2">.*?</d',textarbre):
pleocr=re.findall('Pleochroism:</div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
pleocr = pleocr.replace('weak', 'feble')
dispersio = ''
if re.search('Dispersion:</div><div class="mindatam2">.*?</',textarbre):
dispersio=re.findall('Dispersion:</div><div class="mindatam2">(.*?)</',textarbre)[0].strip().lower()
diccionari = {'relatively weak':'relativament feble', 'weak':'feble', 'strong':'forta', 'r > v moderate':'r > v moderada',
'r < v moderate':'r < v moderada', 'r > v weak':'r > v feble', 'r < v weak':'r < v feble',
'r > v strong':'r > v forta', 'r < v strong':'r < v forta'}
dispersio = diccionari.get(dispersio, dispersio+'*')
ima = ''
if re.search('<a href="min-.*?.html">IMA....-.*?</a>',textarbre):
ima=re.findall('<a href="min-.*?.html">(IMA....-.*?)</a>',textarbre)[0].strip()
magnetisme = ''
if re.search('Magnetism:</div><div class="mindatam2">.*?</',textarbre):
magnetisme=re.findall('Magnetism:</div><div class="mindatam2">(.*?)</',textarbre)[0].strip().lower()
magnetisme = magnetisme + '*'
import time
dia = time.strftime('%d')
mes = time.strftime('%m')
anyy = time.strftime('%Y')
diccionari = {'1':'gener', '2':'febrer', '3':'març', '4':'abril', '5':'maig', '6':'juny', '7':'juliol', '8':'agost',
'9':'setembre', '10':'octubre', '11':'novembre', '12':'desembre'}
referencia = '<ref>{{ref-web|url='+url+'|consulta='+dia+' '+mes+' '+anyy+'|títol='+nom+'|obra=Mindat|llengua=anglès}}</ref>'
estatNum = ''
if re.search('<a href="/glossary/IMA_status">IMA status:</a></div><div class="mindatam2">.*?</d',textarbre):
estat=re.findall('<a href="/glossary/IMA_status">IMA status:</a></div><div class="mindatam2">(.*?)</d',textarbre)[0].strip().lower()
if 'not approved' in estat:
estatNum = 2
else:
estatNum = 1
grup = ''
if re.search('<span>Member of:</span><div><a href="min-.*?.html">.*?</a>',textarbre):
grup=re.findall('<span>Member of:</span><div><a href="min-.*?.html">(.*?)</a>',textarbre)[0].strip().lower()
# Comença la part de muntar la plantilla amb les dades trobades
plant = '= [[{}]] =\n'.format(nomcat)
plant = plant + "{{infotaula de mineral\n"
plant=plant+"| nom = {}\n".format(nomcat)
plant=plant+"| fórmula = {}\n".format(formula)
plant=plant+"| categoria = {}\n".format(categoriaF)
plant=plant+"| imatge = \n"
plant=plant+"| peu d'imatge = \n"
plant=plant+"| estat IMA = {}\n".format(estatNum)
if nickelstrunz != '':
plant=plant+"| strunz = {}\n".format(nickelstrunz)
if dana != '':
plant=plant+"| dana = {}\n".format(dana)
if heys != '':
plant=plant+"| heys = {}\n".format(heys)
if descobriment != '':
plant=plant+"| any = {}\n".format(descobriment)
if tipus != '':
plant=plant+"| localitat = {}\n".format(tipus)
if lluentorF != '':
plant=plant+"| lluentor = {}\n".format(lluentorF.rstrip(', '))
if diafanitatF != '':
plant=plant+"| diafanitat = {}\n".format(diafanitatF.rstrip(', '))
if colorF != '':
plant=plant+"| color = {}\n".format(colorF.rstrip(', '))
if ratllaF != '':
plant=plant+"| ratlla = {}\n".format(ratllaF.rstrip(', '))
if tenacitatF != '':
plant=plant+"| tenacitat = {}\n".format(tenacitatF.rstrip(', '))
if exfoliacio != '':
plant=plant+"| exfoliació = {}\n".format(exfoliacio)
if fracturaF != '':
plant=plant+"| fractura = {}\n".format(fracturaF.rstrip(', '))
if densitat != '':
plant=plant+"| densitat = {}\n".format(densitat)
if sistema != '':
plant=plant+"| sistema = {}\n".format(sistema)
if simetria != '':
plant=plant+"| simetria = {}\n".format(simetria)
if estructura != '':
plant=plant+"| estructura cristal·lina = {}\n".format(estructura)
if propoptiques != '':
plant=plant+"| prop òptiques = {}\n".format(propoptiques)
if refraccio != '':
plant=plant+"| refracció = {}\n".format(refraccio)
if birefringencia != '':
plant=plant+"| birefringència = {}\n".format(birefringencia)
if impureses != '':
plant=plant+"| impureses = {}\n".format(impureses)
if fluorescencia != '':
plant=plant+"| fluorescència = {}\n".format(fluorescencia.rstrip('.'))
if macles != '':
plant=plant+"| macles = {}\n".format(macles.rstrip('.'))
if duresa != '':
plant=plant+"| mohs = {}\n".format(duresa)
if angle != '':
plant=plant+"| 2V = {}\n".format(angle)
if pleocr != '':
plant=plant+"| pleocroisme = {}\n".format(pleocr)
if dispersio != '':
plant=plant+"| dispersió = {}\n".format(dispersio)
if ima != '':
plant=plant+"| IMA = {}\n".format(ima)
if magnetisme != '':
plant=plant+"| magnetisme = {}\n".format(magnetisme)
plant=plant+"| referències = {}\n".format(referencia)
plant=plant+"}}\n"
# Text
plant = plant + "La '''" + nomcatmini + "''' és un [[mineral]] de la classe dels " + categoriaF
if grup != '':
plant = plant + ', que pertany al grup de la ('+ grup +')*'
plant = plant + '.\n\n== Característiques ==\n'
plant = plant + 'La '+ nomcatmini +' és un [['+categoriaG+']] de [[fórmula química]] '+formula+'. '
plant = plant + 'Cristal·litza en el '+sistemaLlarg+'. '
if duresa != '':
plant = plant + 'La seva [[duresa]] a l\'[[escala de Mohs]] és '+duresa+'. '
plant = plant + '\n\n== Formació i jaciments =='
plant = plant + '\n\n== Referències ==\n{{referències}}\n\n'
plant = plant + '{{-}}'
print plant
return plant
def llegeixarbres():
urldistr=[]
urldistr.append('https://ca.wikipedia.org/wiki/Usuari:MineralBot/Proves')
#print urldistr
taula=""
for url in urldistr: #[:1]
url=''+url
try:
pagdistr=urllib.urlopen(url)
except IOError:
print "Error IO en obrir",url
continue
print "obert"
textdistr=pagdistr.read()
trosarbres=re.findall('href="http://www.mindat.org/(min-[0-9]+.html)">',textdistr)
print len(trosarbres),u"minerals per llegir"
if '<a href="min-' in textdistr:
print u'hi ha <a href="min-'
# Buscarem:
contador = 0
minim = 1
maxim = 50
for tros in trosarbres:
if "min" in tros:
contador = contador + 1
if contador >= minim and contador <= maxim:
print tros
llegit=llegeixarbre(tros)
print u"llegit",llegit
try:
taula=taula+llegit+"\n"
except UnicodeDecodeError:
print u"Error unicode. Saltant mineral."
continue
else:
print u'no hi ha <a href="min-'
print u"taula",taula
return taula
# El programa comença aquí.
informe=""
informe=informe+llegeixarbres()
print "informe:",len(informe)
informe=unialinia(informe)
site=pywikibot.getSite('ca')
desti=pywikibot.Page(site,u"Usuari:MineralBot/Proves")
desti.put(informe,u"Infotaules de minerals amb dades de mindat.org")
pywikibot.stopme()
#print informe