Módulo:Ficha Wikidata
Revisión del 07:51 25 abr 2023 de Pyc1948 (discusión | contribs.) (Página creada con «--[[ ***************************************************************** * Nombre: Módulo:Ficha Wikidata * Descripción: Este módulo genera una ficha solo con los valores * de todas las propiedades de Wikidata * Estado: En creación ***************************************************************** ]] local p = {} local ficha = require('Módulo:Ficha') local Wikidata = require( 'Módulo:Ficha/Wikidata') local elemento = mw.wikibase.getEn…»)
Uso
Plantilla:Enobras Este módulo genera fichas a partir de todas las propiedades de Wikidata excepto aquellas que se han filtrado por no ser relevantes para la ficha. Los formatos se adaptarán según el tipo de artículo que debe ilustrar.
--[[ ***************************************************************** * Nombre: Módulo:Ficha Wikidata * Descripción: Este módulo genera una ficha solo con los valores * de todas las propiedades de Wikidata * Estado: En creación ***************************************************************** ]] local p = {} local ficha = require('Módulo:Ficha') local Wikidata = require( 'Módulo:Ficha/Wikidata') local elemento = mw.wikibase.getEntityObject() --Tabla con todos los datos de Wikidata local es = mw.language.new('es') -- Configuración de idioma español local marco local cd = true local pais, web, mapa, unidad = ''; --[[ ==================================================================== Eliminar propiedades irrelevantes ==================================================================== ]] function filtrarPropiedades(propComprobar) -- == Popiedades que no aparecerán en ninguna ficha == local propIrrelevantes = {'P107','P646','P373','P214','P227','P244','P213','P1025', 'P268','P345','P269','P948','P402','P910','P968','P998','P982','P349', 'P865', 'P434', 'P906', 'P865', 'P935', 'P691','P1036','P1273','P1566', 'P1465', 'P1792','P1464','P2498','P2581','P1296','P6665'} -- == Comprobamos coincidencia == for k,v in pairs(propIrrelevantes) do -- Se comprueba si coincide propiedad con propComprobar if propComprobar == v then return false end -- Si hay coincidencia devuelve false end return true -- Si no hay coincidencia devuelve true end --[[ ==================================================================== Seleccionamos configuración ==================================================================== ]] function configuracion(tablaValor,propiedades) --[[ local formato = include('Módulo:Ficha Wikidata/Formatos') if formato.getTablaParametros(tablaValor, propiedades) ~= nil then return formato.getTablaParametros(tablaValor,propiedades) end ]] local tablaParametros = {} local valorID = tablaValor[1]['mainsnak']['datavalue']['value']['numeric-id'] local valor = mw.wikibase.label('q'.. valorID) if valor == 'ser humano' then tablaParametros['tipocabecera'] = 'humano fn' tablaParametros['clase'] = 'biography vcard' tablaParametros['colorfondo'] = '#8DB1C3' tablaParametros['colortexto'] = '#fff' elseif valor == 'ciudad' or valor == 'localidad' or valor == 'villa' or valor == 'pueblo' or valor == 'municipio' or valor == 'comuna' or valor == 'barrio' or valor == 'concejo' or valor == 'capital' then local coor = {} local pais tablaParametros['tipocabecera'] = 'mapa fn org' tablaParametros['clase'] = 'geography vcar' tablaParametros['colorfondo'] = 'transparet' --tablaParametros['estilosubtitulo1'] = 'line-height: 2.4em; padding:3px; font-size:100%; font-weight:bold; background-color:#cddeff' --tablaParametros['estiloetiqueta'] = 'line-height: 1.4em; padding:1px 7px' -- tablaParametros['estilodatos'] = 'line-height: 1.4em; padding:1px 7px 1px 1px' tablaParametros['estiloetiqueta'] = 'padding:2px 7px;' tablaParametros['estilodatos'] = 'padding:2px 7px 1px 1px' for k, v in pairs(propiedades) do mw.log('propiedades esp '.. v.propiedad) if v.propiedad == 'P625' then -- Coordenadas tablaParametros['estiloetiqueta1'] = 'font-size:100;padding:0px 7px' tablaParametros['etiqueta1'] = '[[Coordenadas geográficas|Coordenadas]]' tablaParametros['estilodatos1'] = 'white-space:nowrap;padding:0px 1px 1px 1px' tablaParametros['datos1'] = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil) coor['latitud'] = Wikidata.getDeclaracion(v.valor, 'latitud', nil, nil, nil, nil) coor['longitud'] = Wikidata.getDeclaracion(v.valor, 'longitud', nil, nil, nil, nil) table.remove (propiedades, k) cd = false elseif v.propiedad == 'P31' and pais then tablaParametros['etiqueta2'] = tostring('[[Entidad subnacional|Unidad]]') unidad = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil) tablaParametros['datos2'] = unidad tablaParametros['subtitulo1'] = unidad .. ' de ' .. pais elseif v.propiedad == 'P17' then tablaParametros['estiloetiqueta3'] = 'border:0;font-weight:100; padding:0px 7px' tablaParametros['estilodatos3'] = 'border:0;font-weight:100;padding:0px 1px 0px 1px' tablaParametros['etiqueta3'] = tostring('• [[Anexo:Países|País]]') tablaParametros['datos3'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil, nil) mapa = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil,'no') pais = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil) elseif v.propiedad == 'P131' then tablaParametros['estiloetiqueta4'] = 'border:0;font-weight:100; padding:0px 7px' tablaParametros['estilodatos4'] = 'border:0;font-weight:100;padding:0px 1px 1px 1px' cd = false tablaParametros['etiqueta4'] = '' --local entidad = Wikidata.getDeclaracion(v,k , '<br>• ','Wikidata/Formatos' ,'formatId' , nil, nil, nil,'P31') --local entidadComparar = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' , 'no', nil, nil,'P31') mw.log(entidadComparar) -- if entidad and entidad ~= '' then -- tablaParametros['etiqueta4'] = '• ' .. entidad -- else -- tablaParametros['etiqueta4'] = '• Entidades superiores' -- end --tablaParametros['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil,nil, entidadComparar) tablaParametros['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatFicha') end local nombre = Wikidata.getEtiqueta() if mapa and nombre and coor then tablaParametros['estiloimagen'] = 'padding:0.8em 0.7em 0em 0.7em; text-align:center' tablaParametros['imagenflotante'] = 'si' tablaParametros['imagen'] = require('Módulo:Ficha Wikidata/Mapa').mapaLoc(mapa, nombre, coor, marco) tablaParametros['estilopie'] = 'font-size:smaller; font-weight:bold' tablaParametros['pie'] ='Ubicación de ' .. nombre.. ' en ' .. mapa end end elseif valor == 'provincia' or valor =='estado' or valor =='región' or valor =='comunidad autónoma'or valor == 'departamento' or valor =='comarca' or valor =='merindad' or valor =='partido judicial' then tablaParametros['colorfondo'] = 'transparet' tablaParametros['tipocabecera'] = 'mapa fn org' tablaParametros['clase'] = 'geography vcar' elseif valor == 'pais' or valor == 'estado soberano' then tablaParametros['tipocabecera'] = 'mapa fn org' tablaParametros['clase'] = 'geography vcar' elseif valor == 'monte' or valor == 'montaña' or valor == 'volcán'then tablaParametros['tipocabecera'] = 'mapa fn org' tablaParametros['colorfondotitulo'] = '#e7dcc3' --tablaParametros['colortexto'] = '#fff' tablaParametros['estiloetiqueta'] = 'background-color:#e7dcc3;' elseif valor == 'rio' or valor == 'océano' or valor == 'canal' or valor == 'Pólder' or valor == 'isla artificial' or valor == 'isla fluvial' or valor == 'mar' or valor =='lago' or valor == 'fiordo' or valor == 'golfo' or valor == 'estrecho' then tablaParametros['tipocabecera'] = 'mapa fn org' tablaParametros['colorfondotitulo'] = '#7793E0' tablaParametros['colortexto'] = '#fff' tablaParametros['estiloetiqueta'] = 'background:#ddf' --tablaParametros['clase'] = 'geography vcar' elseif valor == 'revista' then tablaParametros['tipocabecera'] = 'revista' tablaParametros['colorfondotitulo'] = '#D2691E' tablaParametros['colortexto'] = '#fff' tablaParametros['estiloetiqueta'] = 'background-color:#D2691E; color:#fff;' elseif valor == 'libro' then tablaParametros['tipocabecera'] = libro tablaParametros['colorfondotitulo'] = '#ddf' tablaParametros['estiloetiqueta'] = 'padding:1px 8px' elseif valor == 'Arboreto' or valor == 'parque' then tablaParametros['tipocabecera'] = libro tablaParametros['colorfondotitulo'] = '#d0f0c0' elseif valor == 'museo' or valor == 'museo de artes' then tablaParametros['tipocabecera'] = 'conflicto' tablaParametros['estilotitulo'] = 'color:white' tablaParametros['colorfondotitulo'] = '#996633' tablaParametros['colortexto'] = '#fff' else tablaParametros['colorfondotitulo'] = '#ddf' tablaParametros['estiloetiqueta'] = 'padding:1px 8px' end return tablaParametros end function ordenarPropiedades(propiedades) local propiedadesOrdenadas = {} local num=1 for k,v in pairs(propiedades) do if string.find(k,'P%d+') and v ~= '' then -- Comprobamos que son propiedades --local num = tostring(k):match('^P([1-9]%d*)$') --[[if k == 'P31' then propiedadesOrdenadas[1] = {propiedad = k, valor = v } elseif k == 'P17' then propiedadesOrdenadas[2] = {propiedad = k, valor = v } else num = mw.ustring.gsub(k,'P','') mw.log(num) num = tonumber(num) propiedadesOrdenadas[num] = {propiedad = k, valor = v } end]] propiedadesOrdenadas[num] = {propiedad = k, valor = v } num = num+1 end end table.sort(propiedadesOrdenadas,function(a1,a2) return a1.propiedad < a2.propiedad end) return propiedadesOrdenadas end local function getPropiedadNums(num) return tonumber(mw.ustring.gsub(num,'P','')) end --[[ ==================================================================== Pasamos las datos de Wikidata a una tabla ==================================================================== ]] function leerEtiquetas() local propiedades = {} local annadirFila = {} local nuevasFilas = {} local etiquetaFicha ={} local num = 8 if Wikidata.getDeclaraciones() ~= '' then propiedades = Wikidata.getDeclaraciones() if propiedades == nil then return nil end propiedades = ordenarPropiedades(propiedades) for k,v in pairs(propiedades) do mw.log('clave '.. v.propiedad ) --if string.find(k,'P%d+') then -- Comprobamos que son propiedades if v.propiedad == 'P18' then -- Imagen annadirFila['imagensuperior'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) elseif v.propiedad == 'P31' then -- instancia de nuevasFilas = configuracion(v.valor,propiedades) elseif v.propiedad == 'P154' then -- Imagen Logo annadirFila['imagenderecha'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) elseif v.propiedad == 'P41' then -- Imagen de la bandera annadirFila['imagenizquierda'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) annadirFila['estilopieizquierdo'] = 'font-size:smaller; font-weight:bold' annadirFila['pieizquierdo'] = 'Bandera' elseif v.propiedad == 'P94' then -- Imagen del Escudo annadirFila['imagenderecha'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) annadirFila['estilopiederecho'] = 'font-size:smaller; font-weight:bold' annadirFila['piederecho'] = 'Escudo' elseif v.propiedad == 'P368' then -- prueba commons archivo multimedia annadirFila['imagen'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) elseif v.propiedad == 'P163' then -- Artículo de la bandera annadirFila['pieizquierdo'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) elseif v.propiedad == 'P237' then -- Artículo del escudo annadirFila['piederecho'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil) elseif v.propiedad == 'P242' then -- mapa de localización annadirFila['imagen']= '[[Archivo:'.. Wikidata.getDeclaracion(v.valor, v.propiedad, '|245px]]<br>[[Archivo:', nil, nil, nil)..'|245px]]' elseif v.propiedad == 'P856' then -- mapa de localización web = Wikidata.getDeclaracion(v.valor, v.propiedad,nil, nil, nil, nil) elseif v.propiedad == 'P17' then -- annadirFila['etiqueta2'] = '[[País]]' pais = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil,nil, nil) annadirFila['datos2'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil) elseif v.propiedad == 'P131' then annadirFila['etiqueta3'] = '[[d:Property:' .. k .. '|Situado en unidad administrativa]]' annadirFila['datos3'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil) elseif v.propiedad == 'P625' and cd then -- Coordenadas annadirFila['etiqueta4'] = '[[Coordenadas geográficas|Coordenadas]]' annadirFila['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil) elseif v.propiedad == 'P6' then -- Jefe de gobierno local cadenaEtiqueta, cadenaDatos local mandatario = Wikidata.getDeclaracion(v.valor, v.propiedad,'<br>') local cargo = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' , nil, nil, nil,'P39') local partido = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' ,nil, nil, nil,'P102') local mandato = '' if cargo and cargo ~= '' and mandato and mandato ~= '' then cadenaEtiqueta = cargo .. ' (' .. mandato .. ')' elseif cargo and cargo ~= '' then cadenaEtiqueta = cargo else cadenaEtiqueta = '[[d:Property:P6|Jefe de gobierno]]' end if partido and partido ~= '' then cadenaDatos = mandatario .. ' (' .. partido .. ')' else cadenaDatos = mandatario end annadirFila['etiqueta6'] = cadenaEtiqueta annadirFila['datos6'] = cadenaDatos elseif v.propiedad == 'P1082' then -- Población local censo = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil,'P585') annadirFila['estiloetiqueta8'] = 'border:0;font-weight:100' annadirFila['estilodatos8'] = 'border:0;font-weight:100' if censo and censo ~= '' then annadirFila['etiqueta7'] = '[[Población]] ('.. censo ..')' else annadirFila['etiqueta7'] = '[[Población]]' end annadirFila['datos7'] = ' ' annadirFila['etiqueta8'] = '• Total' annadirFila['datos8'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil) .. ' hab.' elseif filtrarPropiedades(v.propiedad) then num = num + 1 if mw.wikibase.label(v.propiedad) ~= nil and mw.wikibase.label(v.propiedad) ~= '' then etiquetaFicha = es:ucfirst( mw.wikibase.label(v.propiedad)) else etiquetaFicha = k end annadirFila['etiqueta' .. num] = '[[d:Property:' .. v.propiedad .. '|'.. etiquetaFicha .. ']]' annadirFila['datos' .. num] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil) end end end annadirFila['titulo'] = Wikidata.getEtiqueta() annadirFila['estilotitulo'] = 'padding:0' annadirFila['estilosubtitulo1'] = 'font-size:100%; font-weight:bold; background-color:#cddeff' annadirFila['estilodatos'] = 'padding:1px 8px 1px 1px' annadirFila['tamañoimagenizquierda'] = '100x78px' annadirFila['tamañoimagenderecha'] = '88x88px' annadirFila['tamañoimagensuperior'] = '245px' annadirFila['tamañoimagen'] = '245px' annadirFila['tamañoimagen1'] = '245px' annadirFila['tamañoimageninferior'] = '245px' if web ~= '' and web ~= nil then annadirFila['datos' .. num+1] = '['.. web .. ' Sitio web oficial]' end for k,v in pairs(nuevasFilas) do annadirFila[k] = v -- Cargamos las filas según la configuración en la tabla end return annadirFila --else -- return nil -- end end --[[ ==================================================================== Función principal ==================================================================== ]] function _principal() local parametros = leerEtiquetas() if parametros ~= nil then return ficha.infobox(parametros) else return '<span class="error">Página sin enlace a Wikidata</span>' end end function p.principal(frame) marco = frame Wikidata:setFrame(marco) return _principal() end return p