وحدة:Social links
يمكن إنشاء صفحة توثيق الوحدة في وحدة:Social links/شرح
local p = {}
local getArgs = require('Module:Arguments').getArgs
local mw = mw
local socialPlatforms = {
facebook = {
property = 'P2013',
icon = 'Facebook icon 2013.svg',
label = 'فيسبوك',
wikiLink = '[[فيسبوك]]',
linkFormat = 'https://www.facebook.com/$1',
aliases = {'facebook', 'فيسبوك', 'فيس بوك'}
},
twitter = {
property = 'P2002',
icon = 'X logo 2023.svg',
label = 'إكس (تويتر)',
wikiLink = '[[تويتر]]',
linkFormat = 'https://x.com/$1',
aliases = {'twitter', 'x', 'تويتر'}
},
youtube = {
property = 'P2397',
icon = 'YouTube full-color icon (2017).svg',
label = 'يوتيوب',
wikiLink = '[[يوتيوب]]',
linkFormat = 'https://www.youtube.com/channel/$1',
aliases = {'youtube', 'يو تيوب', 'يوتيوب'}
},
instagram = {
property = 'P2003',
icon = 'Instagram logo 2016.svg',
label = 'انستجرام',
wikiLink = '[[انستجرام]]',
linkFormat = 'https://www.instagram.com/$1',
aliases = {'instagram', 'إنستغرام', 'انستغرام', 'إنستجرام', 'انستجرام'}
},
flickr = {
property = 'P3267',
icon = 'Flickr Shiny Icon.svg',
label = 'فليكر',
wikiLink = '[[فليكر]]',
linkFormat = 'https://www.flickr.com/photos//$1',
aliases = {'flickr', 'فليكر'}
},
linkedin = {
property = 'P6634',
icon = 'Linkedin icon.svg',
label = 'لينكد إن',
wikiLink = '[[لينكد إن]]',
linkFormat = 'https://www.linkedin.com/in/$1',
aliases = {'linkedin', 'لينكد إن', 'لينكد ان'}
},
soundcloud = {
property = 'P3040',
icon = 'Antu soundcloud.svg',
label = 'ساوند كلاود',
wikiLink = '[[ساوند كلاود]]',
linkFormat = 'https://soundcloud.com/$1',
aliases = {'soundcloud', 'ساوند كلاود', 'ساوندكلاود'}
},
myspace = {
property = 'P3265',
icon = 'Myspace.svg',
label = 'مايسبيس',
wikiLink = '[[مايسبيس]]',
linkFormat = 'https://myspace.com/$1',
aliases = {'myspace', 'مايسبيس'}
},
pinterest = {
property = 'P3836',
icon = 'Pinterest Shiny Icon.svg',
label = 'بنترست',
wikiLink = '[[بنترست]]',
linkFormat = 'https://www.pinterest.com/$1',
aliases = {'pinterest', 'بنترست'}
},
goodreads = {
property = 'P2963',
icon = "Goodreads_'g'_logo.svg",
label = 'مؤلف جودريدز',
wikiLink = '[[جود ريدز]]',
linkFormat = 'https://www.goodreads.com/author/show/$1',
aliases = {'goodreads', 'مؤلف جود ريدز', 'مؤلف جودريدز', 'مؤلف غود ريدز', 'مؤلف غودريدز'}
},
vk = {
property = 'P3185',
icon = 'VK Compact Logo (2021-present).svg',
label = 'ڤى كيه',
wikiLink = '[[ڤى كيه (خدمه)|ڤى كيه]]',
linkFormat = 'https://vk.com/$1',
aliases = {'vk', 'فكونتاكتي', 'فكونتاكتى', 'فى كيه', 'ڤى كيه'}
},
telegram = {
property = 'P3789',
icon = 'Telegram logo.svg',
label = 'تيليجرام',
wikiLink = '[[تيليجرام]]',
linkFormat = 'https://t.me/$1',
aliases = {'telegram', 'تيليجرام', 'تيليغرام', 'تلغرام', 'تلجرام', 'تلغرام', 'تلجرام'}
},
tumblr = {
property = 'P3943',
icon = 'Tumblr-2.svg',
label = 'تامبلر',
wikiLink = '[[تامبلر]]',
linkFormat = 'https://$1.tumblr.com',
aliases = {'tumblr', 'تامبلر', 'تمبلر'}
},
vine = {
property = 'P3207',
icon = 'Vine logo.svg',
label = 'ڤاين',
wikiLink = '[[ڤاين (خدمه)|ڤاين]]',
linkFormat = 'https://vine.co/u/$1',
aliases = {'vine', 'فاين', 'ڤاين'}
},
spotify = {
property = 'P1902',
icon = 'Spotify_icon.svg',
label = 'سبوتيفاى',
wikiLink = '[[سبوتيفاى]]',
linkFormat = 'https://open.spotify.com/artist/$1',
aliases = {'spotify', 'سبوتيفاى'}
},
snapchat = {
property = 'P2984',
icon = 'SnapChat!.jpg',
label = 'سناب شات',
wikiLink = '[[سناب شات]]',
linkFormat = 'https://www.snapchat.com/add/$1',
aliases = {'snapchat', 'سناب شات', 'سناب تشات'}
},
vimeo = {
property = 'P4015',
icon = 'Vimeo-icon-j.png',
label = 'فيميو',
wikiLink = '[[فيميو]]',
linkFormat = 'https://vimeo.com/$1',
aliases = {'vimeo', 'فيميو', 'فيمو'}
},
quora = {
property = 'P3417',
icon = 'Quora icon.svg',
label = 'كورا',
wikiLink = '[[كورا (ويب سايت)|كورا]]',
linkFormat = 'https://www.quora.com/topic/$1',
aliases = {'quora', 'كورا', 'كوارا', 'كيورا'}
},
tiktok = {
property = 'P7085',
icon = 'Iconoir tiktok.svg',
label = 'تيك توك',
wikiLink = '[[تيك توك]]',
linkFormat = 'https://www.tiktok.com/@/$1',
aliases = {'tiktok', 'تيك توك', 'تيكتوك'}
},
deezer = {
property = 'P2722',
icon = 'Deezer Icon.svg',
label = 'فنان ديزر',
wikiLink = '[[ديزر]]',
linkFormat = 'https://www.deezer.com/artist/$1',
aliases = {'deezer', 'ديزر'}
},
itunes = {
property = 'P2850',
icon = 'ITunes logo.svg',
label = 'فنان آى تيونز',
wikiLink = '[[آى تيونز]]',
linkFormat = 'https://itunes.apple.com/artist/$1',
aliases = {'itunes', 'آى تيونز'}
},
}
local function makeLink(platform, handle, name)
local icon = string.format('[[File:%s|link=|18px]]', platform.icon)
local platformLink = platform.wikiLink
local linkText = string.format('%s %s', icon, name or platform.label)
return string.format('[%s %s] على %s', platform.linkFormat:gsub('$1', handle), linkText, platformLink)
end
local function getWikidataValue(qid, property)
local entity = mw.wikibase.getEntity(qid)
if entity and entity.claims and entity.claims[property] and entity.claims[property][1] then
return entity.claims[property][1].mainsnak.datavalue.value
end
return nil
end
local function getLabel(qid)
local entity = mw.wikibase.getEntity(qid)
if entity then
local label = entity.labels and entity.labels.en and entity.labels.arz.value
if not label then
label = entity.labels and entity.labels.ar and entity.labels.en.value
end
return label
end
return nil
end
function p.main(frame)
local args = getArgs(frame)
local qid = args.QID or args.qid or mw.wikibase.getEntityIdForCurrentPage()
local name = mw.title.getCurrentTitle().text or args.name or getLabel(qid)
local result = {}
for site, data in pairs(socialPlatforms) do
local user_value
for _, alias in ipairs(data.aliases) do
if args[alias] then
user_value = args[alias]
break
end
end
local id
if user_value then
id = user_value
else
id = getWikidataValue(qid, data.property)
end
if id then
local link = makeLink(data, id, name)
table.insert(result, "* " .. link)
end
end
return string.format("\n%s\n", table.concat(result, "\n"))
end
return p