Modul:WikidataBilde: Forskjell mellom sideversjoner

Fra wikisida.no
Hopp til navigering Hopp til søk
Korrekt rekkefølge på tester
'
Linje 14: Linje 14:
end
end
local kategori = {[5] = "biografi" }
local kategori = {[5] = "biografi" }
local resten = "[[Kategori:Artikler hvor bilde er hentet fra Wikidata]]"
local resten = "[[Kategori:Artiklar der bilete er henta frå Wikidata]]"


function finnKategori(frame)
function finnKategori(frame)
Linje 37: Linje 37:


     if kategori[forekomst["numeric-id"]] then
     if kategori[forekomst["numeric-id"]] then
     return "[[Kategori:Artikler hvor bilde er hentet fra Wikidata - " ..kategori[forekomst["numeric-id"]] .. "]]"
     return "[[Kategori:Artiklar det bilete er henta frå Wikidata - " ..kategori[forekomst["numeric-id"]] .. "]]"
end
end
return resten
return resten
end
end


-- Return bilde til artikkelen
-- Return bilete til artikkelen
function p.wikidatabilde(frame)
function p.wikidatabilete(frame)
     if not mw.wikibase then
     if not mw.wikibase then
         return ""
         return ""
Linje 63: Linje 63:
end
end


function p.framebilde(frame)
function p.framebilete(frame)
     local args = frame.args
     local args = frame.args
     if args[1] == nil then
     if args[1] == nil then
Linje 72: Linje 72:
         end
         end
     end
     end
     if args['bilde'] then
     if args['bilete'] then
         return args['bilde']
         return args['bilete']
     end
     end
     return ""
     return ""
Linje 93: Linje 93:
end
end


function p.velgbilde(frame)
function p.velgbilete(frame)
     local bilde = p.framebilde(frame)
     local bilete = p.framebilete(frame)
     if bilde then
     if bilete then
         if bilde == "" then
         if bilete == "" then
--            return ""
--            return ""
         elseif bilde == "uten" then
         elseif bilete == "utan" then
       return ""
       return ""
         else
         else
           return bilde
           return bilete
         end
         end
     else
     else
         return ""
         return ""
     end
     end
     local frawikidata = p.wikidatabilde(frame)
     local frawikidata = p.wikidatabilete(frame)
     local framekart = p.framekart(frame)
     local framekart = p.framekart(frame)
     if framekart == frawikidata then
     if framekart == frawikidata then
Linje 115: Linje 115:
end
end
   
   
function p.sammenlignbilde(frame)
function p.sammenlignbilete(frame)
     local fraframe = p.framebilde(frame)
     local fraframe = p.framebilete(frame)
     local frawikidata = p.wikidatabilde(frame)
     local frawikidata = p.wikidatabilete(frame)
     if fraframe == frawikidata then
     if fraframe == frawikidata then
         if fraframe == "" then
         if fraframe == "" then
             return ""
             return ""
         else
         else
             return "[[Kategori:Artikler hvor bilde er samme som på Wikidata]]"
             return "[[Kategori:Artiklar der bilete er same som på Wikidata]]"
         end
         end
     else
     else
         if frawikidata == "" then
         if frawikidata == "" then
             return "[[Kategori:Artikler hvor bilde mangler på Wikidata]]"
             return "[[Kategori:Artiklar der bilete manglar på Wikidata]]"
         end
         end
         if fraframe == "" then
         if fraframe == "" then
             return "[[Kategori:Artikler uten bilde i infoboks med bilde på Wikidata]]"
             return "[[Kategori:Artiklar utan bilete i infoboks med bilete på Wikidata]]"
         end
         end
         return "[[Kategori:Artikler med bilde forskjellig fra Wikidata]]"
         return "[[Kategori:Artiklar med bilete  forskjellig frå Wikidata]]"
     end
     end
end
end


function p.sammenlignMedWikidataValgtBilde(frame)
function p.sammenlignMedWikidataValgtBilde(frame)
     local fraframe = p.framebilde(frame)
     local fraframe = p.framebilete(frame)
     local frawikidata = p.wikidatabilde(frame)
     local frawikidata = p.wikidatabilete(frame)
     local framekart = p.framekart(frame)
     local framekart = p.framekart(frame)
     if fraframe == frawikidata then
     if fraframe == frawikidata then
Linje 147: Linje 147:
     else  
     else  
         if frawikidata == "" then
         if frawikidata == "" then
             return "[[Kategori:Artikler hvor bilde mangler på Wikidata]]"
             return "[[Kategori:Artiklar der bilete manglar på Wikidata]]"
         end
         end
     if framekart == frawikidata then
     if framekart == frawikidata then
     return "[[Kategori:Artikler hvor kart er samme som bilde på Wikidata]]"
     return "[[Kategori:Artiklar der kart er same som bilete på Wikidata]]"
     end
     end
         if fraframe == "" then
         if fraframe == "" then
             return finnKategori(frame)
             return finnKategori(frame)
         end
         end
         return "[[Kategori:Artikler med bilde forskjellig fra Wikidata]]"
         return "[[Kategori:Artiklar med bilete forskjellig frå Wikidata]]"
     end
     end
end
end


return p
return p

Sideversjonen fra 13. jun. 2016 kl. 19:29

Formål

Hvis Wikidata har definert et bilde leveres det bildet tilbake dersom det ikke er gitt et bilde med som argument.

Det er mulig å spesifisere at det ikke skal være noe bilde selv om Wikidata skulle ha et bilde ved å gi bilde som uten.

Bruk

Modulen brukes ved å legge inn : {{#invoke:WikidataBilde|velgbilde}} i en mal. Malen {{Bilde fra Wikidata}} har implementert dette. Dette gjøres best ved å legge inn bilde={{Bilde fra Wikidata|{{{bilde|}}}}} inn i en mal som kan ha bilde. For at artiklene skal kategoriseres med de skjulte kategoriene Kategori:Artikler hvor bilde er hentet fra Wikidata, Kategori:Artikler hvor bilde mangler på Wikidata, Kategori:Artikler med bilde forskjellig fra Wikidata og Kategori:Artikler hvor bilde fra Wikidata også brukes utenfor infoboks må det i slutten av malen for infoboks også legges inn en {{#invoke:WikidataBilde|sammenlignMedWikidataValgtBilde|bilde={{{bilde|}}}}}. Legg dette etter slutten av selve infoboksen.

Det er også mulig å bare teste for bilder fra Wikidata ved å legge inn {{#invoke:WikidataBilde|sammenlignbilde|bilde={{{bilde|}}}}} i slutten av malen. Dette passer også best inn etter slutten av selve infoboksen. Her vil en Kategori:Artikler hvor bilde er samme som på Wikidata kunne bli lagt inn.

Metoden WikidataBilde|bildeOgTekst lager en infoboks rad med bilde, bildetekst og byline som enten er gitt til metoden som argument, eller bilde og bildetekst fra Wikidata. Den metoden kan hente alle former for commonsmedia gitt egenskaps-id.

Parametre:

bilde – filnavnet på en fil på commons, uten eller blank
bildetekst – bildetekst som tilhører det gitte filnavnet. Ignoreres hvis filnavn ikke er gitt.
byline – navn på den som har laget bildet.
pid – egenskaps id som skal hente bilde. Eksempler: P18 for vanlig bilde, P154 for logo, P990 for lydavspiller for stemme.
qid – wikidata-element hvor dette eventuelt skal hentes fra hvis det ikke er fra samme side.
pix – bildestørrelse, f.eks. 250px
overskrift – tekst som vil bli overskrift på raden over bildet. Raden lages bare hvis overskriften har verdi og raden med bilde også lages. Denne kan enten brukes slik at den alltid er bestemt av infoboksen eller slik at den også kan overstyres fra artikkelen.

Hvis det er gitt bilde=uten, vil det ikke bli noen rad for bildet. Hvis det er gitt et feil filnavn, vil dette ikke oppdages og innholdet vil bli feil. Hvis argumentet er blankt eller utelatt, vil bilde hentes fra Wikidata, da basert på argumentet pid.

Hvis det finnes en kvalifikator bildetekst med språk nb tilhørende dette bildet, vil den teksten bli brukt som bildetekst. Foreløpig hentes ikke byline, men når det blir mulig å spørre commons, kan det bli aktuelt å hente fotograf derfra.

Bruk: : {{#invoke:WikidataBilde|bildeOgTekst|bilde={{{bilde|}}}|bildetekst ={{{bildetekst|}}}|byline={{{byline|}}}|pid=P18|qid={{{qid|}}}|bildestørrelse={{{bildestørrelse|}}}|overskrift={{{overskrift|en normal overskrift for denne typen bilde}}} }}


local p = {}

function dump( out )
    if type( out ) == 'table' then
        local s = '{ '
        for k,v in pairs( out ) do
                if type( k ) ~= 'number' then k = '"'..k..'"' end
                s = s .. '['..k..'] = ' .. dump( v ) .. ','
        end
        return s .. '} '
    else
        return tostring( out )
    end
end
local kategori = {[5] = "biografi" }
local resten = "[[Kategori:Artiklar der bilete er henta frå Wikidata]]"

function finnKategori(frame)
   if not mw.wikibase then
        return resten
    end
    local artikkel = mw.wikibase.getEntityObject()
    if not artikkel then
        return resten
    end
    local claims = artikkel.claims
    if not claims then
        return resten
    end
    local p31 = claims.P31
    if not p31 then
        return resten
    end
    if not p31[1].mainsnak then return resten end
    if not p31[1].mainsnak.datavalue then return resten end
    local forekomst = p31[1].mainsnak.datavalue.value

    if kategori[forekomst["numeric-id"]] then
    	return "[[Kategori:Artiklar det bilete er henta frå Wikidata - " ..kategori[forekomst["numeric-id"]] .. "]]"
	end
	return resten
end

-- Return bilete til artikkelen
function p.wikidatabilete(frame)
    if not mw.wikibase then
        return ""
    end
    local artikkel = mw.wikibase.getEntityObject()
    if not artikkel then
        return ""
    end
    local claims = artikkel.claims
    if not claims then
        return ""
    end
    local p18 = claims.P18
    if not p18 then
        return ""
    end

    return p18[1].mainsnak.datavalue.value
end

function p.framebilete(frame)
    local args = frame.args
    if args[1] == nil then
        local pFrame = frame:getParent();
        args = pFrame.args;
        for k,v in pairs( frame.args ) do
            args[k] = v;
        end
     end
     if args['bilete'] then
        return args['bilete']
     end
     return ""
end

function p.framekart(frame)
    local args = frame.args
    if args[1] == nil then
        local pFrame = frame:getParent();
        args = pFrame.args;
        for k,v in pairs( frame.args ) do
            args[k] = v;
        end
     end
     if args['kart'] then
        return args['kart']
     end
     return ""
end

function p.velgbilete(frame)
    local bilete = p.framebilete(frame)
    if bilete then
        if bilete == "" then
--            return ""
        elseif bilete == "utan" then
    	   return ""
        else
           return bilete
        end
    else
        return ""
    end
    local frawikidata = p.wikidatabilete(frame)
    local framekart = p.framekart(frame)
    if framekart == frawikidata then
    	return ""
    end

    return frawikidata
end
 
function p.sammenlignbilete(frame)
    local fraframe = p.framebilete(frame)
    local frawikidata = p.wikidatabilete(frame)
    if fraframe == frawikidata then
        if fraframe == "" then
            return ""
        else
            return "[[Kategori:Artiklar der bilete er same som på Wikidata]]"
        end
    else
        if frawikidata == "" then
            return "[[Kategori:Artiklar der bilete manglar på Wikidata]]"
        end
        if fraframe == "" then
            return "[[Kategori:Artiklar utan bilete i infoboks med bilete på Wikidata]]"
        end
        return "[[Kategori:Artiklar med bilete  forskjellig frå Wikidata]]"
    end
end

function p.sammenlignMedWikidataValgtBilde(frame)
    local fraframe = p.framebilete(frame)
    local frawikidata = p.wikidatabilete(frame)
    local framekart = p.framekart(frame)
    if fraframe == frawikidata then
        if fraframe == "" then
            return ""
        else
            return 
        end
    else 
        if frawikidata == "" then
            return "[[Kategori:Artiklar der bilete manglar på Wikidata]]"
        end
    	if framekart == frawikidata then
    		return "[[Kategori:Artiklar der kart er same som bilete på Wikidata]]"
    	end
        if fraframe == "" then
            return finnKategori(frame)
        end
        return "[[Kategori:Artiklar med bilete forskjellig frå Wikidata]]"
    end
end

return p