Modul:External links/conf/Musikk

Fra Wikisida.no
Hopp til navigering Hopp til søk

Dokumentasjon for denne modulen kan opprettes på Modul:External links/conf/Musikk/dok

local function commons_formatter(id)
	return "https://commons.wikimedia.org/wiki/Category:" .. id:gsub(" ", "_")
end

-- forekomster-variablen er en liste over hvilke forekomster (P31 fra Wikidata-Q-element til artikkel) som ikke skal bli håndtert som et verk (kursiv tekst) for Last.fm-lenker
local forekomster = {
    "Q5", -- menneske
    "Q215380", -- band
    "Q5741069", -- rockeband
    "Q9212979", -- musikkduo
    "Q641066", -- jentegruppe
    "Q113292621", -- folkemusikkgruppe
    "Q216337", -- guttegruppe
    "Q42998", -- orkester
    "Q10648343", -- duo
    "Q56816954", -- heavy metal band
    "Q18127", -- platemerke
}

-- $1 er etiketten på lenka som genereres.
local lenkeEn = "''$1''"

-- sjekker om siden har wikidata-element og sjekker om det er et band eller individ
if mw.wikibase.getEntityIdForCurrentPage() ~= nil then
	-- henter egenskaper for P31 (forekomst av) og spesifiserer første tabell (egenskap)
	local egenskap = mw.wikibase.getBestStatements(mw.wikibase.getEntityIdForCurrentPage(), 'P31')
	-- sjekker om Q-id for første P31-egenskap matcher en av verdiene i forekomster-variablen
	for k,v in pairs(forekomster) do
		for i, e in pairs(egenskap) do
			if egenskap[i].mainsnak.datavalue.value.id == v	then
				-- om én forekomst av-egenskapen samsvarer med en av opplistingene i forekomster-variablen, fjernes kursivt formatering 
				lenkeEn = "$1"
				break
			end
		end
	end
end

local configured_claims = {}

configured_claims['nb'] = {
 -- (HENTES FRA {{Offisielt nettsted}}) { prop ='P373', message ="$3 [$2 " .. lenkeEn .. "] – bilder, video eller lyd på [[Wikimedia Commons]]", langcode = 'en', genitiv = false, url_f=commons_formatter },
 	{ prop='P2850',  message ="$3 [$2 " .. lenkeEn .. "] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --band, artist på Apple Music
	{ prop='P2281',  message ="$3 [$2 " .. lenkeEn .. "] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --utgivelse på Apple Music
	{ prop='P11090',  message ="$3 [$2 " .. lenkeEn .. "] på [[Boomplay]]", short="[$2 Boomplay]", langcode ='en', genitiv = false }, --sang
	{ prop='P2206',  message ="$3 [$2 " .. lenkeEn .. "] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Utgivelse
	{ prop='P1953',  message ="$3 [$2 " .. lenkeEn .. "] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Artist
	{ prop='P1954',  message ="$3 [$2 " .. lenkeEn .. "] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Verk
	{ prop='P1955',  message ="$3 [$2 " .. lenkeEn .. "] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Label
	{ prop='P9003',  message ="$3 [$2 " .. lenkeEn .. "] på Google Podcasts", short="[$2 Google Podcasts]", langcode ='en', genitiv = false }, -- podkast på Google Podcasts
	{ prop='P434',   message ="$3 [$2 " .. lenkeEn .. "] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Artist
	{ prop='P435',   message ="$3 [$2 " .. lenkeEn .. "] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Utgivelse
	{ prop='P436',   message ="$3 [$2 " .. lenkeEn .. "] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Verk
	{ prop='P2721',  message ="$3 [$2 " .. lenkeEn .. "] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false },
	{ prop='P9010',  message ="$3 [$2 " .. lenkeEn .. "] på Player FM", short="[$2 Player FM]", langcode ='en', genitiv = false }, --podkast på Player FM
	{ prop='P9012',  message ="$3 [$2 " .. lenkeEn .. "] på Podtail", short="[$2 Podtail]", langcode ='en', genitiv = false }, --podkast på Podtail
	{ prop='P1989',  message ="$3 [$2 " .. lenkeEn .. "] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, -- artistoppføring
	{ prop='P1952',  message ="$3 [$2 " .. lenkeEn .. "] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, -- bandoppføring
	{ prop='P3040',  message ="$3 [$2 " .. lenkeEn .. "] på [[SoundCloud]]", short="[$2 SoundCloud]", langcode ='en', genitiv = false },
	{ prop='P1902',  message ="$3 [$2 " .. lenkeEn .. "] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --band, artist på Spotify
	{ prop='P2205',  message ="$3 [$2 " .. lenkeEn .. "] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --utgivelse på Spotify
	{ prop='P2207',  message ="$3 [$2 " .. lenkeEn .. "] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --sang på Spotify
	{ prop='P5916',  message ="$3 [$2 " .. lenkeEn .. "] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --podkast på Spotify
	{ prop='P3478',  message ="$3 [$2 " .. lenkeEn .. "] på [[Songkick]]", short="[$2 Songkick]", langcode ='en', genitiv = false },
	{ prop='P3192',  message ="$3 [$2 " .. lenkeEn .. "] på [[Last.fm]]", short="[$2 Last.fm]", langcode ='en', genitiv = false },
	{ prop='P5172',  message ="$3 [$2 " .. lenkeEn .. "] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --artist/band
	{ prop='P5171',  message ="$3 [$2 " .. lenkeEn .. "] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --utgivelse
	{ prop='P6217',  message ="$3 [$2 " .. lenkeEn .. "] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --utgivelse
	{ prop='P6218',  message ="$3 [$2 " .. lenkeEn .. "] på [[Genius (nettsted)|Genius]] — sangtekst", short="[$2 Genius]", langcode ='en', genitiv = false }, --sang
	{ prop='P2373',  message ="$3 [$2 " .. lenkeEn .. "] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --artist/band
	{ prop='P1728',  message ="$3 [$2 " .. lenkeEn .. "] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --artist
    { prop='P1729',  message ="$3 [$2 " .. lenkeEn .. "] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --sang
    { prop='P5842',  message ="$3 [$2 " .. lenkeEn .. "] på Apple Podcasts", short="[$2 Apple Podcasts]", langcode ='no', genitiv = false }, --podcast
    { prop='P4300',  message ="$3 [$2 " .. lenkeEn .. "] på YouTube Music", short="[$2 YouTube Music]", langcode ='en', genitiv = false }, --på YouTube Music
    { prop='P3283',  message ="$3 [$2 " .. lenkeEn .. "] på Bandcamp", short="[$2 Bandcamp]", langcode ='en', genitiv = false }, --på Bandcamp
    }
	
local messages_conf = {}
messages_conf['nb'] = {
	['short-list-separator'] = " '''·''' ",
	['no-data-cat'] = '[[Kategori:Artikler uten musikklenker fra Wikidata]]',
	['with-data-cat'] = '[[Kategori:Artikler med musikklenker fra Wikidata]]',
	['with-local-cat'] = '[[Kategori:Artikler med musikklenker fra lokale verdier]]',
	['no-data-text'] = "''Artikkelen har ingen egenskaper for musikkdatabaser i Wikidata''",
	['no-wikilink'] = "''Artikkelen mangler oppslag i Wikidata''",
	['no-wikilink-cat'] = "[[Kategori:Artikler med musikklenker og uten kobling til Wikidata]]",
	['track-cat-wd-wd'] = '[[Kategori:Artikler med musikklenker for $1 fra Wikidata]]',
	['track-cat-local-local'] = '',
	['track-cat-wd-local'] = '',
	['track-cat-local-wd'] = '',
	['track-cat-local-wd-equal'] = '',
	['track-cat-local-wd-unequal'] = '',
}
local limits = {
	['links-shown'] = 10,		-- maximum number of links shown in the article.
}

local p = {}

function p.getConfiguredClaims (self, lang)
	return configured_claims[lang]
end

function p.getMessage (self, lang, msg)
	return messages_conf[lang][msg] 
end

function p.getLimits (self)
	return limits
end

-- metatable for the export
local mt = {
	-- adjust the installation of the module
	['__call'] = function (self, lang)
		self.configured_claims = configured_claims[lang]
		self.messages_conf = messages_conf[lang]
		return self
	end
}

-- install the metatable
setmetatable(p, mt)

return p