🏛️ ¡La Enciclopedia Colchagüina te necesita!
Día a día trabajamos con pasión para rescatar y compartir la historia, cultura y memoria de nuestra tierra. Para que este proyecto siga siendo 100% libre y gratuito, necesitamos de tu apoyo para cubrir los costos de funcionamiento y mantención.
Si valoras lo que hacemos, por favor considera apoyarnos. Puedes ayudarnos desde tan solo $2.000 pesos. ¡Cada granito de arena construye nuestra historia!
Diferencia entre revisiones de «Módulo:Ficha de persona»
Sin resumen de edición |
Sin resumen de edición Etiqueta: Revertido |
||
| Línea 2: | Línea 2: | ||
local argumentos -- Tabla de argumentos con los que se llama a la función | local argumentos -- Tabla de argumentos con los que se llama a la función | ||
local argumento={} -- Argumentos | local argumento={} -- Argumentos eliminando los argumentos sin datos | ||
local Entidad -- Tabla con los datos en Wikidata | local Entidad -- Tabla con los datos en Wikidata del libro. | ||
-- Ver Wikidata:WikiProject Books para las propicedades posibles | |||
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:... | local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:... | ||
-- Módulos utilizados | |||
-- Módulos | |||
local ModuloFicha = require('Módulo:Ficha') | local ModuloFicha = require('Módulo:Ficha') | ||
local ModuloIdentificadores = require('Módulo:Identificadores') | local ModuloIdentificadores = require('Módulo:Identificadores') | ||
local ModuloPaginas = require('Módulo:Páginas') | local ModuloPaginas = require('Módulo:Páginas') | ||
local | local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos') | ||
local | local ModuloWikidata = require('Módulo:Wikidata') | ||
local | local ModuloTablas = require('Módulo:Tablas') | ||
local ModuloURL = require('Módulo:URL') | |||
-- Constantes | -- Constantes | ||
local enMayusculas = {['formatoTexto'] = 'mayúscula | local enMayusculas = {['formatoTexto'] = 'mayúscula'} | ||
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o | local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '} | ||
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí' | |||
local lugar = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar} | |||
local listaNoOrdenada = {['lista'] = 'no ordenada | local debeExistir = {['debeExistir'] = 'sí'} | ||
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo} | |||
local debeExistir = {['debeExistir | |||
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = formatoPeriodo | |||
function z.Ficha(frame) | function z.Ficha(frame) | ||
-- Hacer que funcione la función formatBandera y formatoGentilicio | |||
ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco) | ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco) | ||
-- Obtener | |||
-- | -- Obtener los argumentos con los que se llama a la función | ||
argumentos = frame and frame.args or {}; | |||
if not argumentos[1] then | |||
local parent = frame:getParent(); | |||
argumentos = parent.args; | |||
end | |||
-- Eliminar los parámetros vacíos. | |||
for k,v in pairs(argumentos) do | |||
if v~='' then | |||
argumento[k] = argumentos[k] | |||
end | |||
end | end | ||
-- Obtener datos complejos | |||
-- Obtener los datos de la página donde se inserta la ficha de Wikidata. | |||
Entidad = mw.wikibase.getEntityObject() or {} | |||
--if true then | |||
-- return ModuloTablas.tostring(Entidad) | |||
--end | |||
educacion = argumento['educación'] or -- ¿No es lo mismo que alma máter??? No, es el título | |||
argumento['educacion'] | |||
almamater = argumento['alma máter'] or argumento['alma_mater'] or argumento['alma mater'] or | |||
propiedad('P69', {['enlace']='sí', ['lista'] = 'no ordenada'}) | |||
if propiedad('P21') == 'femenino' then | |||
etiquetaAnyosActivo = 'Años activa' | |||
etiquetaConocidoPor = 'Conocida por' | |||
etiquetaInfluencias = 'Influida por' | |||
funcionOcupacion = formatoOcupacionFemenino | |||
else | else | ||
etiquetaAnyosActivo = 'Años activo' | |||
etiquetaConocidoPor = 'Conocido por' | |||
etiquetaInfluencias = 'Influido por' | |||
funcionOcupacion = formatoOcupacionMasculino | |||
end | end | ||
area = argumento['área'] or argumento['area'] or argumento['especialidad'] | |||
-- La ocupación | -- La ocupación solo se obtiene de Wikidata si no se informan los campos de ocupación y área. | ||
-- Esto es porque para los artistas puede tener en Wikidata como ocupación "pintor y escultor" y | -- Esto es porque para los artistas puede tener en Wikidata como ocupación "pintor y escultor" y | ||
-- tener informada el área con " | -- tener informada el área con "puntura y escultura". | ||
-- Pendiente averiguar si en algún artículo se informan los campos de área y de ocupación a la vez. | |||
-- Si es así mostrar solo uno de los dos. | |||
ocupacion = argumento['ocupación'] or argumento['Ocupación'] or (not area and propiedad('P106', {['formatoTexto'] = 'mayúscula', ['valor-función']=funcionOcupacion})) | |||
ocupacionOArea = ocupacion or area | |||
nombre = argumento['nombre'] or argumento['Nombre'] or ModuloPaginas.nombrePagina({desambiguar='sí'}) | |||
nombre = argumento['nombre'] or argumento['Nombre'] or | |||
obtenerEtiquetaWikidata() or | |||
ModuloPaginas.nombrePagina({desambiguar='sí'}) | |||
-- Informar los datos de nacimiento y de fallecimiento | |||
fechaNacimiento = argumento['fecha de nacimiento'] or argumento['fechadenacimiento'] or | |||
argumento['fecha_nacimiento'] or argumento['Fecha_nacimiento'] or | |||
argumento['fecha nacimiento'] or argumento['fechadenacimiento'] or | |||
propiedad('P569', enMayusculasO) | |||
lugarNacimiento = argumento['lugar de nacimiento'] or argumento['lugardenacimiento'] or | |||
argumento['lugar'] or | |||
argumento['lugar_nacimiento'] or argumento['Lugar_nacimiento'] or | |||
argumento['lugar nacimiento'] or | |||
propiedad('P19', lugar) | |||
if fechaNacimiento and lugarNacimiento then | |||
nacimiento = fechaNacimiento .. '<br />' .. lugarNacimiento | |||
if | |||
else | else | ||
nacimiento = fechaNacimiento or lugarNacimiento | |||
end | end | ||
fechaFallecimiento = argumento['fecha de fallecimiento'] or argumento['fechadefallecimiento'] or | |||
argumento['fecha fallecimiento'] or argumento['fecha_fallecimiento'] or argumento['Fecha_fallecimiento'] or | |||
argumento['fecha de defunción'] or | |||
argumento['fecha_muerte'] or | |||
propiedad('P570', enMayusculasO) | |||
lugarFallecimiento = argumento['lugar de fallecimiento'] or argumento['lugardefallecimiento'] or | |||
argumento['lugar fallecimiento'] or argumento['lugar_fallecimiento'] or argumento['Lugar_fallecimiento'] or | |||
argumento['lugar de defunción'] or | |||
argumento['lugar_muerte'] or | |||
propiedad('P20', lugar) | |||
if fechaFallecimiento and lugarFallecimiento then | |||
fallecimiento = fechaFallecimiento .. '<br />' .. lugarFallecimiento | |||
else | else | ||
fallecimiento = fechaFallecimiento or lugarFallecimiento | |||
end | end | ||
if argumento['padres'] then | if argumento['padres'] then | ||
padres = estaEnlazado(argumento['padres']) | |||
else | else | ||
padre = propiedad('P22') --, debeExistir) | |||
madre = propiedad('P25') --, debeExistir) | |||
if padre and madre then | |||
padres = padre .. '<br/>' .. madre | |||
else | |||
padres = padre or madre | |||
end | |||
end | end | ||
firma = argumento['firma'] or argumento['Firma'] or '' | firma = argumento['firma'] or argumento['Firma'] or | ||
propiedad('P109') | |||
web = propiedad('P856') or | |||
argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] | |||
twitter = argumento['twitter'] or argumento['Twitter'] or obtenerTwitter() | |||
facebook = argumento['facebook'] or argumento['Facebook'] or obtenerFacebook() | |||
-- Título según la ocupación y si la persona ha muerto | |||
-- No mostrar para los artistas ningún icono en la cabecera de la ficha | |||
if ocupacionOArea and (ocupacionOArea:find('[Aa]rtista') or ocupacionOArea:find('[Pp]intor') or | |||
ocupacionOArea:find('[Ee]scultor') or ocupacionOArea:find('[Pp]intura') or ocupacionOArea:find('[Ee]scultura') | |||
or ocupacionOArea:find('[Ff]otograf') | |||
or ocupacionOArea:find('[Aa]rtes visuales') | |||
) then | |||
tipocabecera = '' | |||
estilotitulo = 'background-color:#8DB1C3;color:#FFF' | |||
elseif ocupacionOArea and (ocupacionOArea:find('[Ee]scritor') or ocupacionOArea:find('[Nn]ovelista') or | |||
ocupacionOArea:find('[Pp]oeta') or ocupacionOArea:find('[Dd]ramaturgo')) then | |||
tipocabecera = 'libro' | |||
estilotitulo = 'background-color:#4c6099;color:#FFF' | |||
elseif ocupacionOArea and ocupacionOArea:find('[Pp]eriodista') then | |||
if fechaFallecimiento or lugarFallecimiento then | |||
colorfondo = '#c0c0c0' | |||
else | |||
colorfondo = '#ed8' | |||
end | |||
tipocabecera = 'revista' | |||
estilotitulo = 'color:#FFF' | |||
elseif ocupacionOArea and ocupacionOArea:find('[Dd]iseñador') then | |||
estilotitulo = 'background-color:#ccccff' | |||
mostrarSecciones = true | |||
else | |||
tipocabecera = 'humano fn' | |||
estilotitulo = 'background-color:#8DB1C3;color:#FFF' | |||
end | |||
elseif ocupacionOArea | |||
elseif ocupacionOArea | |||
local Ficha = { | local Ficha = { | ||
clase = 'biography vcard', | clase = 'biography vcard', | ||
-- Título | -- Título | ||
tipocabecera = | tipocabecera = tipocabecera, | ||
titulo = nombre, | titulo = nombre, | ||
colorfondo = colorfondo, | |||
estilotitulo = | estilotitulo = estilotitulo, | ||
--Imagen | --Imagen | ||
--De momento no se pone una raya como en la ficha de escritor tras la imagen | --De momento no se pone una raya como en la ficha de escritor tras la imagen | ||
imagen = imagen | imagen = argumento['imagen'] or argumento['Imagen'] or | ||
argumento['foto'] or | |||
propiedad('P18', {uno='sí'}), | |||
['tamañoimagen']= argumento['tamaño'] or | |||
argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or | argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or | ||
argumento['tamaño de foto'] or | argumento['tamaño de foto'] or | ||
'220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb | '220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb | ||
pie = | pie = argumento['descripción'] or | ||
argumento['pie de foto'] or argumento['piedefoto'] or | |||
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or | |||
argumento['pie de foto'] | |||
, | |||
-- Pendiente: en la ficha de escritor el texto se pone entre <small> y en la de artista se usa el estilo font-size:smaller | -- Pendiente: en la ficha de escritor el texto se pone entre <small> y en la de artista se usa el estilo font-size:smaller | ||
--Etiquetas y datos | --Etiquetas y datos | ||
estiloetiqueta = 'width:33%', -- 25% en la ficha de escritor. Sin especificar en la de persona | estiloetiqueta = 'width:33%', -- 25% en la ficha de escritor. Sin especificar en la de persona | ||
--'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- En la ficha de persona original | --'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- En la ficha de persona original | ||
estilodatos = 'line-height:1.3em; vertical-align:middle;', | estilodatos = 'padding:0.2em; line-height:1.3em; vertical-align:middle;', | ||
{tipo='sección', | {tipo='sección', | ||
['titulo'] = mostrarSecciones and 'Información personal', -- Ver la ficha de noble o la ficha de diseñador | |||
estilotitulo = | estilotitulo = estilotitulo, | ||
{'Nombre | {'Nombre de nacimiento', propiedad('P1477') or | ||
propiedad('P513') or | |||
argumento['nombre completo'] or argumento['nombre_completo'] or argumento['Nombre_completo'] or | |||
argumento['nombre nacimiento'] or argumento['nombredenacimiento'] or argumento['nombre de nacimiento'] or | |||
argumento['nombre_real'] | |||
}, | |||
{'Nombre nativo', argumento['nombre nativo']}, --???????????? | |||
{'Nombre | |||
{'Apodo', argumento['apodo']}, | {'Apodo', argumento['apodo']}, | ||
{'Otros nombres', argumento['otros nombres | {'Otros nombres', argumento['otros nombres'], -- ¿No es lo mismo que el apodo????? | ||
clase='nickname'}, | |||
{'Nacimiento', nacimiento}, | {'Nacimiento', nacimiento}, | ||
{'Fallecimiento', fallecimiento}, | {'Fallecimiento', fallecimiento}, | ||
{'Causa de muerte', argumento['causa muerte | {'Causa de muerte', argumento['causa muerte'] or | ||
propiedad('P509', enMayusculas) or | |||
propiedad('P1196', enMayusculas)}, -- circunstancias de la muerte | |||
{'Residencia', argumento['residencia'] or propiedad('P551'), | |||
clase='etiqueta'}, | |||
{' | {'Nacionalidad', argumento['nacionalidad'] or argumento['Nacionalidad'] or --Pendiente hacer que salga el gentilicio | ||
propiedad('P27', {['valor-función'] = ModuloWikidataFormatos.formatoGentilicio, ['formatoTexto'] = 'mayúscula'}), | |||
clase='category'}, | |||
{' | {'Etnia', propiedad('P172') or | ||
{' | argumento['etnia'], | ||
{' | clase='category'}, | ||
{'Ciudadanía', argumento['ciudadanía'] or -- ¿No es lo mismo que la nacionalidad? | |||
argumento['ciudadania'], | |||
clase='category'}, | |||
}, | }, | ||
{tipo='sección', | {tipo='sección', | ||
-- Educación | |||
{'Educación', educacion}, | {'Educación', educacion}, | ||
{ | {'Alma máter', almamater, clase='plainlist'}, | ||
{'Posgrado', argumento['posgrado']} | {'Posgrado', argumento['posgrado']} | ||
}, | }, | ||
{tipo='sección', | {tipo='sección', | ||
['titulo'] = mostrarSecciones and 'Información profesional', | |||
estilotitulo = | estilotitulo = estilotitulo, | ||
{'Ocupación', ocupacion, clase='role'}, | {'Ocupación', ocupacion, clase='role'}, | ||
{etiquetaAnyosActivo, argumento['años activo'] or | |||
argumento['periodo'] or argumento['período'] or argumento['Periodo'] or | |||
argumento['tiempo'] or argumento['Tiempo']}, -- Periodistas | |||
{'Área', area}, | {'Área', area}, | ||
{'Empleador', argumento['empleador'] or | {'Empleador', argumento['empleador'] or | ||
argumento['institución_de_trabajo'] or | |||
argumento['nombre_estudio'] or | |||
propiedad('P108', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula'}), | |||
clase ='plainlist'}, | clase ='plainlist'}, | ||
{'Medio', argumento['medio de comunicación']}, -- Para periodistas. Unas veces informados con el significado de área y otras con el empleador | |||
{' | {'Programas', argumento['programas']}, -- Para periodistas | ||
{ | |||
-- | -- Ocupación (escritores, artistas, periodistas, diseñadores, etc) | ||
{ | {'[[Seudónimo]]', argumento['seudónimo'] or argumento['Seudónimo'] or propiedad('P742')}, | ||
{'Lengua de producción literaria', argumento['lengua_literaria'] or argumento['Lengua_literaria']}, | |||
{'Lengua materna', argumento['lengua_materna'] or argumento['Lengua_materna'] or propiedad('P103', enMayusculas)}, | |||
{'Género', argumento['género'] or argumento['Género'] or propiedad('P136', enMayusculas)}, | |||
{'[[Movimiento artístico|Movimientos]]', argumento['movimiento'] or | |||
argumento['Movimiento'] or | |||
{ | argumento['movimientos'] or | ||
propiedad('P135', enMayusculas)}, | |||
{'Obras notables', argumento['obras'] or | |||
argumento['obras notables'] or argumento['obras_notables'] or argumento['Obras notables'] or | |||
argumento['obras destacadas'] or | |||
argumento['proyectos_representativos'] | |||
}, | |||
{ | {'Artistas relacionados', argumento['relacionados']}, | ||
{'Obras notables', argumento['obras | |||
{'Artistas relacionados', | |||
--{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or | --{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or | ||
-- | -- argumento['influencias'] or argumento['Influencias'], frame)}, | ||
--{'', listaDesplegable('Influyó a', | --{'', listaDesplegable('Influyó a', argumento['influyó'] or argumento['Influyó'], frame)}, | ||
}, | }, | ||
{'Empresa', argumento['empresa']}, | |||
{'Salario', argumento['salario']}, | |||
{'Patrimonio', argumento['patrimonio']}, | |||
{'Altura', argumento['altura']}, | |||
{'Peso', argumento['peso']}, | |||
{etiquetaConocidoPor, argumento['conocido'] or | |||
argumento['conocido por']}, | |||
{'Título', argumento['título'] or -- <!-- Su majestad, primera dama, etc --> | |||
argumento['titulo']}, | |||
{'Término', argumento['término'] or -- <!--Años bajo los cuales la persona tuvo el título (el de arriba xD) --> | |||
argumento['termino']}, | |||
{'Predecesor', argumento['predecesor']}, | |||
{'Sucesor', argumento['sucesor']}, | |||
{'Partido político', argumento['partido político'] or propiedad('P102')}, | |||
{'Cargos políticos', propiedad('P39', conPeriodo), clase='plainlist'}, | |||
{'Creencias religiosas', propiedad('P140', enMayusculas) or | |||
argumento['religión'] or | |||
argumento['creencias']}, | |||
{tipo='sección', | {tipo='sección', | ||
-- Familia. | |||
estilotitulo = | estilotitulo = estilotitulo, | ||
['titulo'] = mostrarSecciones and 'Familia', -- Ver la ficha de noble | |||
-- En el caso del cónyuge tiene preferencia el argumento hasta que se muestre los calficativos. | |||
clase ='plainlist', -- Mostrar las listas sin viñetas | |||
{'Familia nobiliaria', propiedad('P53')}, | |||
{' | {'Padres', estaEnlazado(padres)}, | ||
{' | {'Cónyuge', estaEnlazado(argumento['cónyuge'] or argumento['conyuge'] or argumento['Cónyuge'] or argumento['Conyuge'] or | ||
{' | propiedad('P26', conPeriodo))}, | ||
{'Pareja', estaEnlazado(argumento['pareja'] or propiedad('P451', conPeriodo))}, | |||
{'Hijos', estaEnlazado(argumento['hijos'] or argumento['Hijos']) or | |||
propiedad('P40', {['lista'] = 'no ordenada', ['debeExistir'] = 'sí'})}, | |||
{'Familiares', estaEnlazado(argumento['familiares'])}, --- ¿¿¿¿¿¿¿¿¿??????????? -- Hermano: P7, padastro: p43, pariente: p1038 | |||
{' | |||
{' | |||
{' | |||
}, | }, | ||
-- Los premios pueden ser para varias ocupaciones por lo que se ponen al final | -- Los premios pueden ser para varias ocupaciones por lo que se ponen al final | ||
{'Premios', argumento['premios'] or argumento['Premios'] or | |||
{' | argumento['premio'] or argumento['Premio'] or | ||
argumento['premios2'] or | |||
propiedad('P166', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula'}), | |||
clase ='plainlist'}, -- Mostrar las listas sin viñetas | |||
-- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona | -- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona | ||
{'Firma', firma }, | {'Firma', (firma and ('[[Archivo:' .. firma .. '|150px]]'))}, -- 150 px como en la ficha de escritor en vez de 128 | ||
{tipo='sección', -- Web | |||
clase ='plainlinks', | |||
{'Sitio web', ModuloURL.enlazar(web)}, | |||
{'Facebook', facebook and ('[http://www.facebook.com/' .. facebook .. ' ' .. facebook .. ']')}, -- Ver la plantilla facebook | |||
{'Twitter', twitter and ('[http://www.twitter.com/' .. twitter .. ' ' .. twitter .. ']')} -- Ver la plantilla twitter | |||
}, | |||
{tipo='sección', | {tipo='sección', | ||
titulo ='Notas', | titulo ='Notas', | ||
estilotitulo='border-top:1px solid #c0c0c0;text-align:left', | estilotitulo='border-top:1px solid #c0c0c0;text-align:left', | ||
{'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'} | {'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'} | ||
}, | }, | ||
{'Fuente biográfica', argumento['fuentebiográfica']}, | |||
} | |||
categorias = '' | |||
categorias = | |||
if algunaPropiedadEnlazaWikidata then | |||
if | categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]' | ||
end | end | ||
--if educacion and almamater then | |||
-- categorias = categorias .. '[[Categoría:Wikipedia:Páginas que tienen informado el campo educación]]' | |||
--end | |||
return ModuloFicha.infobox(Ficha) .. categorias | |||
end | end | ||
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados | -- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados | ||
function propiedad(idPropiedad,opciones) | function propiedad(idPropiedad,opciones) | ||
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then | if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then | ||
if not opciones then | |||
opciones = {} | |||
end | |||
opciones['propiedad'] = idPropiedad | |||
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad]) | |||
if valorPropiedad:match('%[%[:d:') then | if valorPropiedad and valorPropiedad:match('%[%[:d:') then | ||
algunaPropiedadEnlazaWikidata = true | algunaPropiedadEnlazaWikidata = true | ||
end | end | ||
return valorPropiedad | |||
end | end | ||
end | end | ||
function | function obtenerEtiquetaWikidata() | ||
if Entidad and Entidad.labels and Entidad.labels.es then | |||
return | return Entidad.labels.es.value | ||
end | end | ||
end | end | ||
function | function listaDesplegable(titulo, lista, frame) | ||
if not lista then | |||
return | |||
end | |||
return frame:preprocess('{{lista desplegable|título=' .. titulo .. | |||
--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' .. | |||
'|marco_estilo=border:0; padding:0;' .. | |||
'|título_estilo=background:transparent; text-align:left|lista_estilo=padding-left:33%;text-align:left; display:none|1=' | |||
.. lista .. '}}') | |||
end | end | ||
function estaEnlazado(que) | function estaEnlazado(que) | ||
if not que then | |||
return | |||
end | |||
for contenido in que:gmatch("%[%[(.+)]]") do | |||
if not contenido:match('^:d:') then | |||
return que | |||
end | |||
end | |||
end | end | ||
function formatoOcupacionMasculino(valor, opciones, frame | function formatoOcupacionMasculino(valor, opciones, frame) | ||
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor) | |||
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones) | |||
-- Corregir la ocupación eliminando el femenino | |||
if etiquetaOcupacion then | |||
etiquetaOcupacion = etiquetaOcupacion:match('^(.+)%s*/%s*.+$') or etiquetaOcupacion | |||
end | |||
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones) | |||
end | end | ||
function | function corregirOcupacion(etiquetaOcupacion) | ||
if not etiquetaOcupacion then | |||
return | |||
end | |||
cadena1 = etiquetaOcupacion:match('^(.+)o%s*/a$') or -- científico/a | |||
etiquetaOcupacion:match('^(.+)%s*/a$') -- escritor/a | |||
if cadena1 then | |||
return cadena1 .. 'a' | |||
end | |||
cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)o(%s*)/a%s+(.+)$') -- | |||
if cadena1 and cadena2 and cadena3 then | |||
return cadena1 .. 'a' .. cadena2 .. cadena3 | |||
end | |||
cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)%s*/a(%s+)(.+)$') -- escritor/a de literatura infantil | |||
if cadena1 and cadena2 and cadena3 then | |||
return cadena1 .. 'a' .. cadena2 .. cadena3 | |||
end | |||
return etiquetaOcupacion:match('^.+%s*/%s*(.+)$') or -- actor/actriz | |||
etiquetaOcupacion | |||
end | |||
function formatoOcupacionFemenino(valor, opciones, frame) | |||
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor) | |||
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, corregirOcupacion(etiquetaOcupacion), idEntidadOcupacion, opciones) | |||
end | end | ||
function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad) | function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad) | ||
-- Obtener el valor del primer calificativo de la propiedad con el valor recibido | |||
if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad] then | |||
return | |||
end | |||
for k,v in pairs(Entidad.claims[Propiedad]) do | |||
if v.mainsnak | |||
and v.mainsnak.datavalue | |||
and v.mainsnak.datavalue.value | |||
and v.mainsnak.datavalue.value['numeric-id'] == ValorPropiedad | |||
and v.qualifiers | |||
and v.qualifiers[Calificativo] | |||
and v.qualifiers[Calificativo][1] | |||
and v.qualifiers[Calificativo][1].datavalue then | |||
return v.qualifiers[Calificativo][1].datavalue.value | |||
end | |||
end | |||
end | |||
end | end | ||
function | function obtenerFacebook() | ||
return obtenerValorCalificativo('P553' -- cuenta en red social | |||
, 'P554' --dirección en red social | |||
, 355) -- Facebook | |||
or propiedad('P2013'); -- Ejemplo: Gillian Flynn | |||
end | end | ||
function | function obtenerTwitter() | ||
return obtenerValorCalificativo('P553' -- cuenta en red social | |||
, 'P554' --dirección en red social | |||
, 918) -- Twitter | |||
end | end | ||
return z | return z | ||
Revisión del 18:03 14 ene 2024
La documentación para este módulo puede ser creada en Módulo:Ficha de persona/doc
local z = {}
local argumentos -- Tabla de argumentos con los que se llama a la función
local argumento={} -- Argumentos eliminando los argumentos sin datos
local Entidad -- Tabla con los datos en Wikidata del libro.
-- Ver Wikidata:WikiProject Books para las propicedades posibles
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...
-- Módulos utilizados
local ModuloFicha = require('Módulo:Ficha')
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloTablas = require('Módulo:Tablas')
local ModuloURL = require('Módulo:URL')
-- Constantes
local enMayusculas = {['formatoTexto'] = 'mayúscula'}
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
local lugar = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
local debeExistir = {['debeExistir'] = 'sí'}
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo}
function z.Ficha(frame)
-- Hacer que funcione la función formatBandera y formatoGentilicio
ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco)
-- Obtener los argumentos con los que se llama a la función
argumentos = frame and frame.args or {};
if not argumentos[1] then
local parent = frame:getParent();
argumentos = parent.args;
end
-- Eliminar los parámetros vacíos.
for k,v in pairs(argumentos) do
if v~='' then
argumento[k] = argumentos[k]
end
end
-- Obtener datos complejos
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject() or {}
--if true then
-- return ModuloTablas.tostring(Entidad)
--end
educacion = argumento['educación'] or -- ¿No es lo mismo que alma máter??? No, es el título
argumento['educacion']
almamater = argumento['alma máter'] or argumento['alma_mater'] or argumento['alma mater'] or
propiedad('P69', {['enlace']='sí', ['lista'] = 'no ordenada'})
if propiedad('P21') == 'femenino' then
etiquetaAnyosActivo = 'Años activa'
etiquetaConocidoPor = 'Conocida por'
etiquetaInfluencias = 'Influida por'
funcionOcupacion = formatoOcupacionFemenino
else
etiquetaAnyosActivo = 'Años activo'
etiquetaConocidoPor = 'Conocido por'
etiquetaInfluencias = 'Influido por'
funcionOcupacion = formatoOcupacionMasculino
end
area = argumento['área'] or argumento['area'] or argumento['especialidad']
-- La ocupación solo se obtiene de Wikidata si no se informan los campos de ocupación y área.
-- Esto es porque para los artistas puede tener en Wikidata como ocupación "pintor y escultor" y
-- tener informada el área con "puntura y escultura".
-- Pendiente averiguar si en algún artículo se informan los campos de área y de ocupación a la vez.
-- Si es así mostrar solo uno de los dos.
ocupacion = argumento['ocupación'] or argumento['Ocupación'] or (not area and propiedad('P106', {['formatoTexto'] = 'mayúscula', ['valor-función']=funcionOcupacion}))
ocupacionOArea = ocupacion or area
nombre = argumento['nombre'] or argumento['Nombre'] or
obtenerEtiquetaWikidata() or
ModuloPaginas.nombrePagina({desambiguar='sí'})
-- Informar los datos de nacimiento y de fallecimiento
fechaNacimiento = argumento['fecha de nacimiento'] or argumento['fechadenacimiento'] or
argumento['fecha_nacimiento'] or argumento['Fecha_nacimiento'] or
argumento['fecha nacimiento'] or argumento['fechadenacimiento'] or
propiedad('P569', enMayusculasO)
lugarNacimiento = argumento['lugar de nacimiento'] or argumento['lugardenacimiento'] or
argumento['lugar'] or
argumento['lugar_nacimiento'] or argumento['Lugar_nacimiento'] or
argumento['lugar nacimiento'] or
propiedad('P19', lugar)
if fechaNacimiento and lugarNacimiento then
nacimiento = fechaNacimiento .. '<br />' .. lugarNacimiento
else
nacimiento = fechaNacimiento or lugarNacimiento
end
fechaFallecimiento = argumento['fecha de fallecimiento'] or argumento['fechadefallecimiento'] or
argumento['fecha fallecimiento'] or argumento['fecha_fallecimiento'] or argumento['Fecha_fallecimiento'] or
argumento['fecha de defunción'] or
argumento['fecha_muerte'] or
propiedad('P570', enMayusculasO)
lugarFallecimiento = argumento['lugar de fallecimiento'] or argumento['lugardefallecimiento'] or
argumento['lugar fallecimiento'] or argumento['lugar_fallecimiento'] or argumento['Lugar_fallecimiento'] or
argumento['lugar de defunción'] or
argumento['lugar_muerte'] or
propiedad('P20', lugar)
if fechaFallecimiento and lugarFallecimiento then
fallecimiento = fechaFallecimiento .. '<br />' .. lugarFallecimiento
else
fallecimiento = fechaFallecimiento or lugarFallecimiento
end
if argumento['padres'] then
padres = estaEnlazado(argumento['padres'])
else
padre = propiedad('P22') --, debeExistir)
madre = propiedad('P25') --, debeExistir)
if padre and madre then
padres = padre .. '<br/>' .. madre
else
padres = padre or madre
end
end
firma = argumento['firma'] or argumento['Firma'] or
propiedad('P109')
web = propiedad('P856') or
argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web']
twitter = argumento['twitter'] or argumento['Twitter'] or obtenerTwitter()
facebook = argumento['facebook'] or argumento['Facebook'] or obtenerFacebook()
-- Título según la ocupación y si la persona ha muerto
-- No mostrar para los artistas ningún icono en la cabecera de la ficha
if ocupacionOArea and (ocupacionOArea:find('[Aa]rtista') or ocupacionOArea:find('[Pp]intor') or
ocupacionOArea:find('[Ee]scultor') or ocupacionOArea:find('[Pp]intura') or ocupacionOArea:find('[Ee]scultura')
or ocupacionOArea:find('[Ff]otograf')
or ocupacionOArea:find('[Aa]rtes visuales')
) then
tipocabecera = ''
estilotitulo = 'background-color:#8DB1C3;color:#FFF'
elseif ocupacionOArea and (ocupacionOArea:find('[Ee]scritor') or ocupacionOArea:find('[Nn]ovelista') or
ocupacionOArea:find('[Pp]oeta') or ocupacionOArea:find('[Dd]ramaturgo')) then
tipocabecera = 'libro'
estilotitulo = 'background-color:#4c6099;color:#FFF'
elseif ocupacionOArea and ocupacionOArea:find('[Pp]eriodista') then
if fechaFallecimiento or lugarFallecimiento then
colorfondo = '#c0c0c0'
else
colorfondo = '#ed8'
end
tipocabecera = 'revista'
estilotitulo = 'color:#FFF'
elseif ocupacionOArea and ocupacionOArea:find('[Dd]iseñador') then
estilotitulo = 'background-color:#ccccff'
mostrarSecciones = true
else
tipocabecera = 'humano fn'
estilotitulo = 'background-color:#8DB1C3;color:#FFF'
end
local Ficha = {
clase = 'biography vcard',
-- Título
tipocabecera = tipocabecera,
titulo = nombre,
colorfondo = colorfondo,
estilotitulo = estilotitulo,
--Imagen
--De momento no se pone una raya como en la ficha de escritor tras la imagen
imagen = argumento['imagen'] or argumento['Imagen'] or
argumento['foto'] or
propiedad('P18', {uno='sí'}),
['tamañoimagen']= argumento['tamaño'] or
argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or
argumento['tamaño de foto'] or
'220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb
pie = argumento['descripción'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
argumento['pie de foto']
,
-- Pendiente: en la ficha de escritor el texto se pone entre <small> y en la de artista se usa el estilo font-size:smaller
--Etiquetas y datos
estiloetiqueta = 'width:33%', -- 25% en la ficha de escritor. Sin especificar en la de persona
--'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- En la ficha de persona original
estilodatos = 'padding:0.2em; line-height:1.3em; vertical-align:middle;',
{tipo='sección',
['titulo'] = mostrarSecciones and 'Información personal', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estilotitulo,
{'Nombre de nacimiento', propiedad('P1477') or
propiedad('P513') or
argumento['nombre completo'] or argumento['nombre_completo'] or argumento['Nombre_completo'] or
argumento['nombre nacimiento'] or argumento['nombredenacimiento'] or argumento['nombre de nacimiento'] or
argumento['nombre_real']
},
{'Nombre nativo', argumento['nombre nativo']}, --????????????
{'Apodo', argumento['apodo']},
{'Otros nombres', argumento['otros nombres'], -- ¿No es lo mismo que el apodo?????
clase='nickname'},
{'Nacimiento', nacimiento},
{'Fallecimiento', fallecimiento},
{'Causa de muerte', argumento['causa muerte'] or
propiedad('P509', enMayusculas) or
propiedad('P1196', enMayusculas)}, -- circunstancias de la muerte
{'Residencia', argumento['residencia'] or propiedad('P551'),
clase='etiqueta'},
{'Nacionalidad', argumento['nacionalidad'] or argumento['Nacionalidad'] or --Pendiente hacer que salga el gentilicio
propiedad('P27', {['valor-función'] = ModuloWikidataFormatos.formatoGentilicio, ['formatoTexto'] = 'mayúscula'}),
clase='category'},
{'Etnia', propiedad('P172') or
argumento['etnia'],
clase='category'},
{'Ciudadanía', argumento['ciudadanía'] or -- ¿No es lo mismo que la nacionalidad?
argumento['ciudadania'],
clase='category'},
},
{tipo='sección',
-- Educación
{'Educación', educacion},
{'Alma máter', almamater, clase='plainlist'},
{'Posgrado', argumento['posgrado']}
},
{tipo='sección',
['titulo'] = mostrarSecciones and 'Información profesional',
estilotitulo = estilotitulo,
{'Ocupación', ocupacion, clase='role'},
{etiquetaAnyosActivo, argumento['años activo'] or
argumento['periodo'] or argumento['período'] or argumento['Periodo'] or
argumento['tiempo'] or argumento['Tiempo']}, -- Periodistas
{'Área', area},
{'Empleador', argumento['empleador'] or
argumento['institución_de_trabajo'] or
argumento['nombre_estudio'] or
propiedad('P108', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula'}),
clase ='plainlist'},
{'Medio', argumento['medio de comunicación']}, -- Para periodistas. Unas veces informados con el significado de área y otras con el empleador
{'Programas', argumento['programas']}, -- Para periodistas
-- Ocupación (escritores, artistas, periodistas, diseñadores, etc)
{'[[Seudónimo]]', argumento['seudónimo'] or argumento['Seudónimo'] or propiedad('P742')},
{'Lengua de producción literaria', argumento['lengua_literaria'] or argumento['Lengua_literaria']},
{'Lengua materna', argumento['lengua_materna'] or argumento['Lengua_materna'] or propiedad('P103', enMayusculas)},
{'Género', argumento['género'] or argumento['Género'] or propiedad('P136', enMayusculas)},
{'[[Movimiento artístico|Movimientos]]', argumento['movimiento'] or
argumento['Movimiento'] or
argumento['movimientos'] or
propiedad('P135', enMayusculas)},
{'Obras notables', argumento['obras'] or
argumento['obras notables'] or argumento['obras_notables'] or argumento['Obras notables'] or
argumento['obras destacadas'] or
argumento['proyectos_representativos']
},
{'Artistas relacionados', argumento['relacionados']},
--{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or
-- argumento['influencias'] or argumento['Influencias'], frame)},
--{'', listaDesplegable('Influyó a', argumento['influyó'] or argumento['Influyó'], frame)},
},
{'Empresa', argumento['empresa']},
{'Salario', argumento['salario']},
{'Patrimonio', argumento['patrimonio']},
{'Altura', argumento['altura']},
{'Peso', argumento['peso']},
{etiquetaConocidoPor, argumento['conocido'] or
argumento['conocido por']},
{'Título', argumento['título'] or -- <!-- Su majestad, primera dama, etc -->
argumento['titulo']},
{'Término', argumento['término'] or -- <!--Años bajo los cuales la persona tuvo el título (el de arriba xD) -->
argumento['termino']},
{'Predecesor', argumento['predecesor']},
{'Sucesor', argumento['sucesor']},
{'Partido político', argumento['partido político'] or propiedad('P102')},
{'Cargos políticos', propiedad('P39', conPeriodo), clase='plainlist'},
{'Creencias religiosas', propiedad('P140', enMayusculas) or
argumento['religión'] or
argumento['creencias']},
{tipo='sección',
-- Familia.
estilotitulo = estilotitulo,
['titulo'] = mostrarSecciones and 'Familia', -- Ver la ficha de noble
-- En el caso del cónyuge tiene preferencia el argumento hasta que se muestre los calficativos.
clase ='plainlist', -- Mostrar las listas sin viñetas
{'Familia nobiliaria', propiedad('P53')},
{'Padres', estaEnlazado(padres)},
{'Cónyuge', estaEnlazado(argumento['cónyuge'] or argumento['conyuge'] or argumento['Cónyuge'] or argumento['Conyuge'] or
propiedad('P26', conPeriodo))},
{'Pareja', estaEnlazado(argumento['pareja'] or propiedad('P451', conPeriodo))},
{'Hijos', estaEnlazado(argumento['hijos'] or argumento['Hijos']) or
propiedad('P40', {['lista'] = 'no ordenada', ['debeExistir'] = 'sí'})},
{'Familiares', estaEnlazado(argumento['familiares'])}, --- ¿¿¿¿¿¿¿¿¿??????????? -- Hermano: P7, padastro: p43, pariente: p1038
},
-- Los premios pueden ser para varias ocupaciones por lo que se ponen al final
{'Premios', argumento['premios'] or argumento['Premios'] or
argumento['premio'] or argumento['Premio'] or
argumento['premios2'] or
propiedad('P166', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula'}),
clase ='plainlist'}, -- Mostrar las listas sin viñetas
-- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona
{'Firma', (firma and ('[[Archivo:' .. firma .. '|150px]]'))}, -- 150 px como en la ficha de escritor en vez de 128
{tipo='sección', -- Web
clase ='plainlinks',
{'Sitio web', ModuloURL.enlazar(web)},
{'Facebook', facebook and ('[http://www.facebook.com/' .. facebook .. ' ' .. facebook .. ']')}, -- Ver la plantilla facebook
{'Twitter', twitter and ('[http://www.twitter.com/' .. twitter .. ' ' .. twitter .. ']')} -- Ver la plantilla twitter
},
{tipo='sección',
titulo ='Notas',
estilotitulo='border-top:1px solid #c0c0c0;text-align:left',
{'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'}
},
{'Fuente biográfica', argumento['fuentebiográfica']},
}
categorias = ''
if algunaPropiedadEnlazaWikidata then
categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
end
--if educacion and almamater then
-- categorias = categorias .. '[[Categoría:Wikipedia:Páginas que tienen informado el campo educación]]'
--end
return ModuloFicha.infobox(Ficha) .. categorias
end
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if valorPropiedad and valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
end
return valorPropiedad
end
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function listaDesplegable(titulo, lista, frame)
if not lista then
return
end
return frame:preprocess('{{lista desplegable|título=' .. titulo ..
--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|marco_estilo=border:0; padding:0;' ..
'|título_estilo=background:transparent; text-align:left|lista_estilo=padding-left:33%;text-align:left; display:none|1='
.. lista .. '}}')
end
function estaEnlazado(que)
if not que then
return
end
for contenido in que:gmatch("%[%[(.+)]]") do
if not contenido:match('^:d:') then
return que
end
end
end
function formatoOcupacionMasculino(valor, opciones, frame)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
-- Corregir la ocupación eliminando el femenino
if etiquetaOcupacion then
etiquetaOcupacion = etiquetaOcupacion:match('^(.+)%s*/%s*.+$') or etiquetaOcupacion
end
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones)
end
function corregirOcupacion(etiquetaOcupacion)
if not etiquetaOcupacion then
return
end
cadena1 = etiquetaOcupacion:match('^(.+)o%s*/a$') or -- científico/a
etiquetaOcupacion:match('^(.+)%s*/a$') -- escritor/a
if cadena1 then
return cadena1 .. 'a'
end
cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)o(%s*)/a%s+(.+)$') --
if cadena1 and cadena2 and cadena3 then
return cadena1 .. 'a' .. cadena2 .. cadena3
end
cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)%s*/a(%s+)(.+)$') -- escritor/a de literatura infantil
if cadena1 and cadena2 and cadena3 then
return cadena1 .. 'a' .. cadena2 .. cadena3
end
return etiquetaOcupacion:match('^.+%s*/%s*(.+)$') or -- actor/actriz
etiquetaOcupacion
end
function formatoOcupacionFemenino(valor, opciones, frame)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, corregirOcupacion(etiquetaOcupacion), idEntidadOcupacion, opciones)
end
function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad)
-- Obtener el valor del primer calificativo de la propiedad con el valor recibido
if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad] then
return
end
for k,v in pairs(Entidad.claims[Propiedad]) do
if v.mainsnak
and v.mainsnak.datavalue
and v.mainsnak.datavalue.value
and v.mainsnak.datavalue.value['numeric-id'] == ValorPropiedad
and v.qualifiers
and v.qualifiers[Calificativo]
and v.qualifiers[Calificativo][1]
and v.qualifiers[Calificativo][1].datavalue then
return v.qualifiers[Calificativo][1].datavalue.value
end
end
end
function obtenerFacebook()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 355) -- Facebook
or propiedad('P2013'); -- Ejemplo: Gillian Flynn
end
function obtenerTwitter()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 918) -- Twitter
end
return z
