Hopp til innhold

Modul:External links/conf/Musikk

Fra Wikipedia, den frie encyklopedi


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
}

local erArtist = false
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')
	egenskap = egenskap[1].mainsnak.datavalue.value
	-- sjekker om Q-id for første P31-egenskap matcher en av verdiene i forekomster-variablen
	for k,v in pairs(forekomster)
		do
			if egenskap.id == v
			then 
				-- om verdiene matcher, endres erArtist-variablen til å vise at artikkelen er om en artist, band eller annen gruppe, og stopper sammenligningen
				erArtist = true
				break
			else
				erArtist = false
			end
		end
end
		
local configured_claims = {}
-- om artikkelen handler om en artist eller gruppe (erArtist == true), benyttes første blokk, som inkluderer en ukursiv versjon av Last.fm-lenke.
if (erArtist) 
then
	configured_claims['nb'] = {
	 -- (HENTES FRA {{Offisielt nettsted}}) { prop ='P373', message ="$3 [$2 $1] – bilder, video eller lyd på [[Wikimedia Commons]]", langcode = 'en', genitiv = false, url_f=commons_formatter },
	 	{ prop='P2850',  message ="$3 [$2 $1] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --band, artist på Apple Music
		{ prop='P2281',  message ="$3 [$2 ''$1''] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --utgivelse på Apple Music
	    { prop='P11090',  message ="$3 [$2 $1] på [[Boomplay]]", short="[$2 Boomplay]", langcode ='en', genitiv = false }, --sang
		{ prop='P2206',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Utgivelse
		{ prop='P1953',  message ="$3 [$2 $1] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Artist
		{ prop='P1954',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Verk
		{ prop='P1955',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Label
		{ prop='P9003',  message ="$3 [$2 ''$1''] på Google Podcasts", short="[$2 Google Podcasts]", langcode ='en', genitiv = false }, -- podkast på Google Podcasts
		{ prop='P434',   message ="$3 [$2 $1] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Artist
		{ prop='P435',   message ="$3 [$2 ''$1''] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Utgivelse
		{ prop='P436',   message ="$3 [$2 ''$1''] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Verk
		{ prop='P2721',  message ="$3 [$2 ''$1''] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false },
		{ prop='P1989',  message ="$3 [$2 $1] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, -- artistoppføring
		{ prop='P1952',  message ="$3 [$2 $1] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, --bandoppføring
		{ prop='P9010',  message ="$3 [$2 ''$1''] på Player FM", short="[$2 Player FM]", langcode ='en', genitiv = false }, --podkast på Player FM
		{ prop='P9012',  message ="$3 [$2 ''$1''] på Podtail", short="[$2 Podtail]", langcode ='en', genitiv = false }, --podkast på Podtail
		{ prop='P3040',  message ="$3 [$2 $1] på [[SoundCloud]]", short="[$2 SoundCloud]", langcode ='en', genitiv = false },
		{ prop='P1902',  message ="$3 [$2 $1] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --band, artist på Spotify
		{ prop='P2205',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --utgivelse på Spotify
		{ prop='P2207',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --sang på Spotify
		{ prop='P5916',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --podkast på Spotify
		{ prop='P3478',  message ="$3 [$2 $1] på [[Songkick]]", short="[$2 Songkick]", langcode ='en', genitiv = false },
		{ prop='P3192',  message ="$3 [$2 $1] på [[Last.fm]]", short="[$2 Last.fm]", langcode ='en', genitiv = false },
		{ prop='P5172',  message ="$3 [$2 $1] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --artist/band
		{ prop='P5171',  message ="$3 [$2 ''$1''] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --utgivelse
		{ prop='P6217',  message ="$3 [$2 ''$1''] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --utgivelse
		{ prop='P6218',  message ="$3 [$2 ''$1''] på [[Genius (nettsted)|Genius]] — sangtekst", short="[$2 Genius]", langcode ='en', genitiv = false }, --sang
		{ prop='P2373',  message ="$3 [$2 $1] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --artist/band
		{ prop='P1728',  message ="$3 [$2 $1] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --artist
	    { prop='P1729',  message ="$3 [$2 ''$1''] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --sang
	    { prop='P5842',  message ="$3 [$2 ''$1''] på Apple Podcasts", short="[$2 Apple Podcasts]", langcode ='no', genitiv = false }, --podkast på Apple Podcasts
        { prop='P4300',  message ="$3 [$2 ''$1''] på YouTube Music", short="[$2 YouTube Music]", langcode ='en', genitiv = false }, --på YouTube Music
        { prop='P3283',  message ="$3 [$2 ''$1''] på Bandcamp", short="[$2 Bandcamp]", langcode ='en', genitiv = false }, --på Bandcamp
	}
else
	configured_claims['nb'] = {
	 -- (HENTES FRA {{Offisielt nettsted}}) { prop ='P373', message ="$3 [$2 $1] – bilder, video eller lyd på [[Wikimedia Commons]]", langcode = 'en', genitiv = false, url_f=commons_formatter },
	 	{ prop='P2850',  message ="$3 [$2 $1] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --band, artist på Apple Music
		{ prop='P2281',  message ="$3 [$2 ''$1''] på [[Apple Music]]", short="[$2 Apple Music]", langcode ='en', genitiv = false }, --utgivelse på Apple Music
		{ prop='P11090',  message ="$3 [$2 $1] på [[Boomplay]]", short="[$2 Boomplay]", langcode ='en', genitiv = false }, --sang
		{ prop='P2206',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Utgivelse
		{ prop='P1953',  message ="$3 [$2 $1] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Artist
		{ prop='P1954',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Verk
		{ prop='P1955',  message ="$3 [$2 ''$1''] på [[Discogs]]", short="[$2 Discogs]", langcode ='en', genitiv = false }, -- Label
		{ prop='P9003',  message ="$3 [$2 ''$1''] på Google Podcasts", short="[$2 Google Podcasts]", langcode ='en', genitiv = false }, -- podkast på Google Podcasts
		{ prop='P434',   message ="$3 [$2 $1] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Artist
		{ prop='P435',   message ="$3 [$2 ''$1''] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Utgivelse
		{ prop='P436',   message ="$3 [$2 ''$1''] på [[MusicBrainz]]", short="[$2 MusicBrainz]", langcode ='en', genitiv = false }, --Verk
		{ prop='P2721',  message ="$3 [$2 ''$1''] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false },
		{ prop='P9010',  message ="$3 [$2 ''$1''] på Player FM", short="[$2 Player FM]", langcode ='en', genitiv = false }, --podkast på Player FM
		{ prop='P9012',  message ="$3 [$2 ''$1''] på Podtail", short="[$2 Podtail]", langcode ='en', genitiv = false }, --podkast på Podtail
		{ prop='P1989',  message ="$3 [$2 $1] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, -- artistoppføring
		{ prop='P1952',  message ="$3 [$2 $1] på [[Encyclopaedia Metallum]]", short="[$2 Encyclopaedia Metallum]", langcode ='en', genitiv = false }, -- bandoppføring
		{ prop='P3040',  message ="$3 [$2 $1] på [[SoundCloud]]", short="[$2 SoundCloud]", langcode ='en', genitiv = false },
		{ prop='P1902',  message ="$3 [$2 $1] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --band, artist på Spotify
		{ prop='P2205',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --utgivelse på Spotify
		{ prop='P2207',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --sang på Spotify
		{ prop='P5916',  message ="$3 [$2 ''$1''] på [[Spotify]]", short="[$2 Spotify]", langcode ='en', genitiv = false }, --podkast på Spotify
		{ prop='P3478',  message ="$3 [$2 $1] på [[Songkick]]", short="[$2 Songkick]", langcode ='en', genitiv = false },
		{ prop='P3192',  message ="$3 [$2 ''$1''] på [[Last.fm]]", short="[$2 Last.fm]", langcode ='en', genitiv = false },
		{ prop='P5172',  message ="$3 [$2 $1] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --artist/band
		{ prop='P5171',  message ="$3 [$2 ''$1''] på [[Rockipedia]]", short="[$2 Rockipedia]", langcode ='no', genitiv = false }, --utgivelse
		{ prop='P6217',  message ="$3 [$2 ''$1''] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --utgivelse
		{ prop='P6218',  message ="$3 [$2 ''$1''] på [[Genius (nettsted)|Genius]] — sangtekst", short="[$2 Genius]", langcode ='en', genitiv = false }, --sang
		{ prop='P2373',  message ="$3 [$2 $1] på [[Genius (nettsted)|Genius]] — sangtekster", short="[$2 Genius]", langcode ='en', genitiv = false }, --artist/band
		{ prop='P1728',  message ="$3 [$2 $1] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --artist
	    { prop='P1729',  message ="$3 [$2 ''$1''] på [[AllMusic]]", short="[$2 AllMusic]", langcode ='en', genitiv = false }, --sang
	    { prop='P5842',  message ="$3 [$2 ''$1''] på Apple Podcasts", short="[$2 Apple Podcasts]", langcode ='no', genitiv = false }, --podcast
        { prop='P4300',  message ="$3 [$2 ''$1''] på YouTube Music", short="[$2 YouTube Music]", langcode ='en', genitiv = false }, --på YouTube Music
        { prop='P3283',  message ="$3 [$2 ''$1''] på Bandcamp", short="[$2 Bandcamp]", langcode ='en', genitiv = false }, --på Bandcamp
	}
end
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