Modul:Film
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
local i18n = {
["errors"] = {
["entity-not-found"] = "Wikidata-Eintrag nicht gefunden.",
["needed-property-not-found"] = "Benötigte Eigenschaft P527 nicht gefunden.",
["child-item-without-given-property"] = "Abgefragte Eigenschaft im via P527 untergeordneten Element nicht gefunden."
}
}
local p = {};
-- Ausgabe Fehlermeldungen
local function printError(code)
return '<span class="error">' .. (i18n.errors[code] or code) .. '</span>'
end
-- Ausnahmen für automatische Länderlinks
function p.getPLlinks(frame)
local PLstring = frame.args[1] .. '\n'
local PLresult = PLstring
:gsub("DDR([,\n])", "[[Deutsche Demokratische Republik|DDR]]%1")
:gsub("ČSSR([,\n])", "[[Tschechoslowakei|ČSSR]]%1")
:gsub("UdSSR([,\n])", "[[Sowjetunion|UdSSR]]%1")
:gsub("China([,\n])", "[[Volksrepublik China|China]]%1")
:gsub("Taiwan([,\n])", "[[Republik China (Taiwan)|Taiwan]]%1")
:gsub("USA([,\n])", "[[Vereinigte Staaten|USA]]%1")
:gsub("UK([,\n])", "[[Vereinigtes Königreich|UK]]%1")
:gsub("Großbritannien([,\n])", "[[Vereinigtes Königreich|Großbritannien]]%1")
return (mw.ustring.gsub(PLresult, "(%u[%w%s%-]+)([,\n])", "[[%1]]%2"))
end
-- Ausnahmen für automatische Sprachlinks
function p.getOSlinks(frame)
local OSstring = frame.args[1] .. '\n'
local OSresult = OSstring
:gsub("Schweizerdeutsch([,\n])", "[[Schweizerdeutsch]]%1")
:gsub("Tagalog([,\n])", "[[Tagalog]]%1")
:gsub("Somali([,\n])", "[[Somali (Sprache)|Somali]]%1")
:gsub("Swahili([,\n])", "[[Swahili (Sprache)|Swahili]]%1")
:gsub("Hindi([,\n])", "[[Hindi]]%1")
:gsub("Maori([,\n])", "[[Maorische Sprache|Maori]]%1")
:gsub("Mandarin([,\n])", "[[Mandarin (Sprache)|Mandarin]]%1")
:gsub("Latein([,\n])", "[[Latein]]%1")
:gsub("Afrikaans([,\n])", "[[Afrikaans]]%1")
:gsub("Schottisch%-Gälisch([,\n])", "[[Schottisch-gälische Sprache|Schottisch-Gälisch]]%1")
:gsub("Khmer([,\n])", "[[Khmer-Sprache|Khmer]]%1")
:gsub("Igbo([,\n])", "[[Igbo (Sprache)|Igbo]]%1")
:gsub("Quechua([,\n])", "[[Quechua]]%1")
:gsub("Filipino([,\n])", "[[Filipino]]%1")
:gsub("El Silbo([,\n])", "[[El Silbo]]%1")
:gsub("Wolof([,\n])", "[[Wolof (Sprache)|Wolof]]%1")
:gsub("Xhosa([,\n])", "[[isiXhosa|Xhosa]]%1")
:gsub("Chichewa([,\n])", "[[Chichewa]]%1")
:gsub("ASL([,\n])", "[[American Sign Language|ASL]]%1")
:gsub("Farsi([,\n])", "[[Persische Sprache|Farsi]]%1")
:gsub("Urdu([,\n])", "[[Urdu]]%1")
:gsub("Yolngu Matha([,\n])", "[[Yolngu#Sprache|Yolngu Matha]]%1")
:gsub("Jiddisch([,\n])", "[[Jiddisch]]%1")
:gsub("Romani([,\n])", "[[Romani]]%1")
:gsub("Hochchinesisch([,\n])", "[[Hochchinesisch]]%1")
:gsub("Nouchi([,\n])", "[[Nouchi]]%1")
:gsub("Dioula([,\n])", "[[Dioula]]%1")
:gsub("Shona([,\n])", "[[Shona (Sprache)|Shona]]%1")
:gsub("Kirundi([,\n])", "[[Kirundi]]%1")
:gsub("Kinyarwanda([,\n])", "[[Kinyarwanda]]%1")
:gsub("Tamil([,\n])", "[[Tamil]]%1")
:gsub("Talisch([,\n])", "[[Talisch]]%1")
:gsub("Ladino([,\n])", "[[Judenspanisch|Ladino]]%1")
:gsub("Lingala([,\n])", "[[Lingala]]%1")
:gsub("Maschi([,\n])", "[[Naki (Sprache)|Maschi]]%1")
:gsub("Gujarati([,\n])", "[[Gujarati]]%1")
:gsub("Miskito([,\n])", "[[Miskito (Sprache)|Miskito]]%1")
:gsub("Chinesisch([,\n])", "[[Chinesische Sprachen|Chinesisch]]%1")
:gsub("Kurdisch([,\n])", "[[Kurdische Sprachen|Kurdisch]]%1")
:gsub("Mapudungun([,\n])", "[[Mapudungun]]%1")
:gsub("Mixtekisch([,\n])", "[[Mixtekisch]]%1")
:gsub("Navajo([,\n])", "[[Navajo (Sprache)|Navajo]]%1")
:gsub("Mòoré([,\n])", "[[Mòoré]]%1")
:gsub("Gan([,\n])", "[[Gan (Sprache)|Gan]]%1")
:gsub("Marathi([,\n])", "[[Marathi]]%1")
:gsub("Fulfulde([,\n])", "[[Fulfulde]]%1")
:gsub("Panjabi([,\n])", "[[Panjabi]]%1")
return (mw.ustring.gsub(OSresult, "(%w+)([,\n])", "[[%1e Sprache|%1]]%2"))
end
function p.getChildItems(frame)
local template = frame.args[1]
local id = frame.args["id"]
local showerrors = frame.args["showerrors"]
local default = frame.args["default"]
if default then showerrors = nil end
local template_props = {
["IMDb"] = {
["property"] = "P345",
["url"] = "https://www.imdb.com/",
["sub_url"] = {
["person"] = "name/",
["film"] = "title/"
},
["bind"] = "in der",
["link"] = "Internet Movie Database",
["lang"] = "englisch"
},
["Rotten Tomatoes"] = {
["property"] = "P1258",
["url"] = "https://www.rottentomatoes.com/",
["bind"] = "bei",
["link"] = "Rotten Tomatoes",
["lang"] = "englisch"
},
["Filmportal"] = {
["property"] = "P2639",
["url"] = "https://www.filmportal.de/",
["sub_url"] = {
["person"] = "person/",
["film"] = "film/"
},
["bind"] = "bei",
["link"] = "filmportal.de"
}
}
-- get wikidata entity
local entity = mw.wikibase.getEntity(id)
if not entity then
if showerrors then return printError("entity-not-found") else return default end
end
-- fetch the first claim of satisfying the needed property
local claims
if entity.claims then
claims = entity.claims[mw.wikibase.resolvePropertyId("P527")]
end
if not claims or not claims[1] then
if showerrors then return printError("needed-property-not-found") else return default end
end
result = {}
for idx in pairs(claims) do
local claim = claims[idx]
value = claim.mainsnak.datavalue.value["numeric-id"]
local entity2 = mw.wikibase.getEntity("Q" .. value)
local label = mw.wikibase.label("Q" .. value)
if entity2 and entity2.claims and entity2.claims[template_props[template]["property"]] then
local result_temp = ""
if idx ~= 1 then result_temp = "* " end
local claims2 = entity2.claims[template_props[template]["property"]]
result_temp = result_temp .. '<span class="wikidata-content">'
local property31 = entity2.claims[mw.wikibase.resolvePropertyId("P31")]
local isHuman = (property31[1].mainsnak.datavalue.value["numeric-id"] == 5)
if not isHuman then result_temp = result_temp .. '\'\'' end
result_temp = result_temp .. '[' .. template_props[template]["url"]
if template_props[template]["sub_url"] then
if isHuman then
result_temp = result_temp .. template_props[template]["sub_url"]["person"]
else
result_temp = result_temp .. template_props[template]["sub_url"]["film"]
end
end
result_temp = result_temp .. claims2[1].mainsnak.datavalue.value .. '/ ' .. label .. ']'
if not isHuman then result_temp = result_temp .. '\'\'' end
result_temp = result_temp .. '</span> ' .. template_props[template]["bind"] .. ' '
if idx == 1 then
result_temp = result_temp .. '[[' .. template_props[template]["link"] .. ']]'
else
result_temp = result_temp .. template_props[template]["link"]
end
if template_props[template]["lang"] then
result_temp = result_temp .. ' (' .. template_props[template]["lang"] .. ')'
end
result[#result + 1] = result_temp
else
return printError("child-item-without-given-property")
end
end
return table.concat(result, '\n')
end
-- Fehlermeldungen, die nur in der Vorschau sichtbar sind
function p.errorMessage(frame)
local errortext = frame.args[1]
if frame:preprocess( "{{REVISIONID}}" ) == "" then
return errortext
end
end
return p