وحدة:بطاقة/قالب/عمل موسيقي

-- Credits:
-- Developer : وهراني @arwiki (وحدة:بطاقة/قالب/عمل غنائي)
-- Version: 20240614

local generic = require( 'وحدة:بطاقة/أدوات' )
local localdata = require  'وحدة:بطاقة/بيانات' 

local wd = require "Module:Wikidata.Ca"

local function check_P406() 
    if localdata.wikidata then return end
	local wid = localdata.item and localdata.item.id
	local wid2 = wd.claim{ item = wid, property = 'P406', formatting = 'raw'} 

    if(wid2 and mw.wikibase.isValidEntityId( wid2 )) then localdata.item.id = wid2 end

end


local formats = {
	--{لون العنوان, لون العنوان الفرعي, لون النص)
	Q23691 = { '#FFD615', '#FFED96', '#000000'}, --  نشيد وطني
	Q7366 = { '#F4DCB6', '#F4DCB6', '#000000'}, --  أغنية


	Q208569 = {'lightsteelblue', '#E1E1E1', '#000000'},  --studio
	Q220935 = {'lightsteelblue', '#E1E1E1', '#000000'},  --demo
	Q169930 = {'#F4BF92', '#E1E1E1', '#000000'},  --EP : extended play 
	Q105438658 = {'#F4BF92', '#E1E1E1', '#000000'}, --single_album 
	Q209939 = {'burlywood', '#E1E1E1', '#000000'},  -- live album 
	Q723849 = {'#BFE0BF', '#E1E1E1', '#000000'},  -- greatest hits album 
	Q963099 = {'#BFE0BF', '#E1E1E1', '#000000'},  -- remix album 
	Q394970 = {'#BFE0BF', '#E1E1E1', '#000000'},  -- box set 
	Q222910 = {'#BFE0BF', '#E1E1E1', '#000000'},  -- compilation album 
	Q1892995 = {'#BFE0BF', '#E1E1E1', '#000000'},  --mixtape 
	Q217199 = {'gainsboro', '#E1E1E1', '#000000'},  --soundtrack--film
	Q5049564 = {'gainsboro', '#E1E1E1', '#000000'}, --cast 
	Q193977 = {'#99CCFF', '#E1E1E1', '#000000'}, --video clip
	--other = {'peachpuff', '#E1E1E1', '#000000'}, --

	default = {'#CEDEFF', '#E1E1E1', '#000000'}	
}
local function wdformat() 
	local wid = localdata.item and localdata.item.id
	local wtypes = wd.claim{ item = wid, property = 'P31', formatting = 'raw', separator='/·/'	} or ''
	
	wtypes = wtypes .. '/·/' .. (wd.claim{ item = wid, property = 'P7937', formatting = 'raw', separator='/·/'	} or '')
	
    if wtypes then	wtypes = mw.text.split(wtypes, '/·/')	end

	local default = formats.default
	--wtypes = wd.addVals(wtypes or {}, {property = 'P279'}, 1) 
	for i, item in pairs(wtypes or {}) do
		if formats[item] then
			return formats[item]
		end
	end
	return default
end

check_P406()

local displayformat = wdformat()

return  {
	-- الألوان المستعملة لعنوان البطاقة
 maincolor = displayformat[1],
 secondcolor = displayformat[2],
 thirdcolor = displayformat[3] ,
 
 wikimod = 'Wikidata.Ca',
 parts = { -- محتويات البطاقة
	generic.title({icon='music'}),
	{type = 'subtitle',
		value = {'عنوان أصلي','original title'},
		wikidata= {
			property = 'P1476',
			conjunction = "<br />", separator = "<br />",
			formatting = '$text {{لغة وصلة|$language}}',
			listrank='bestrank'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
	},

	generic.logo(),
	generic.mainimage{imageparameters = {"صورة", "الغلاف", "cover", "image"}},

	{type = 'table' , title ='معلومات عامة' ,rows = {
        {type = 'row', 
			label = 'الفنان',
			value = {'فنان','الفنان','artist'},
			wikidata = {property='P175',
qualifier='P577', listrank='bestrank', conjunction='<br />', formatting='table',
rowformat = '$0$R0$1',
rowsubformat1 =' ($1)'
},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
	    {type = 'row' , label = 'نسبة التسمية لـ' ,
			value = {'تسمية','named_after'} ,
			wikidata = {property='P138'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
	    },
        {type = 'row', 
			label = 'نوع العمل',
			value = {'نوع','النوع','type'},
			wikidata = {property='P31'},
			metadata = {
				description = "",
				option = "", 
				suggestedvalues = {"أغنية منفردة","أغنية", "promo", "demo", 
					"remix single", "instrumental", "composition",
					"نشيد", "nursery"},
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[نوع موسيقي|النوع الموسيقي]]',
			value = {'نوع موسيقي','genre'},
			wikidata = {property='P136'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row' ,
			label = 'الشكل الإبداعي',
			value = {'شكل إبداعي','work form'},
			wikidata = {property='P7937'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
		},
        {type = 'row', 
			label = 'اللغة',
			value = {'لغة','اللغة','language'},
			wikidata = {
				property='P364 OR P407',
				blacklist0='Q56467;Q13955', 
				formatting='table', rowformat='$0'
			},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'الوجه الأول',
			value = {'وجه أول','الوجه الأول','A-side'},
			--wikidata = {property='P'},
			metadata = {
				description = "هذا الحقل يستعمل إذا وجدت أي أغنية رائعة في هذه الوجه",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'الوجه الثاني',
			value = {'وجه ثاني','الوجه الثاني','B-side'},
			--wikidata = {property='P'},
			metadata = {
				description = "هذا الحقل يستعمل إذا وجدت أي أغنية رائعة في هذه الوجه",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'البلد',
			value = {'بلد','البلد','بلد الإصدار','country'},
			wikidata = {property='P495 OR P17'},
			metadata = {
				description = "بلد الإصدار",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row' ,
			label = 'النص والكلمات',
			value = {'كلمات','text'},
			wikidata = {property='P6439'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
		},
		{type = 'row' ,
			label = 'النص الشعري',
			value = {'نص شعري','libretto'},
			wikidata = {property='P87'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
		},
        {type = 'row', 
			label = 'تاريخ الكتابة',
			value = {'كتابة','written'},
			wikidata = {property='P571'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'عدد الأغاني',
			value = {'عدد الأغاني','عدد الأجزاء','track_count'}, 
			wikidata = {
				property='P2635'  --, formatting='unitlink'
			},
			metadata = {
				description = "عدد الأجزاء العمل",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'قائمة الأغاني',
			value = {'قائمة الأغاني','tracklist'},
			wikidata = {
				property='P658', qualifier='P1545', rowsubformat1='$1 : ',
				formatting='table', rowformat='$1$0$R0', sortting='1/0',
				conjunction = '<br />'
			},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'تاريخ الإصدار',
			value = {'إصدار','الإصدار','published','released'},
			wikidata = {property='P577'},
			metadata = {
				description = "أكتب في هذا الحقل تاريخ إصدار الأغنية سواء كان تاريخ سنوي كأن تكتب تاريخ السنة فقط أو كان تاريخ الشهر والسنة أو أن تكتب التاريخ كاملاً ( يوم / شهر / سنة )",
				option = "", 
				type = "date", 
			}
        },
        --{type = 'row', label = 'Released',value = {'released'},	wikidata = {property='P'}},
        {type = 'row', 
			label = 'التسجيل',
			value = {'تسجيل','التسجيل','recorded'},
			wikidata = {property='P10135'},
			metadata = {
				description = "أكتب السنة التي سجلت الأغنية فيها",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'استوديو التسجيل',
			value = {'استوديو','studio'},
			wikidata = {property='P483'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'مكان التسجيل',
			value = {'مكان','venue'},
			wikidata = {property='P8546'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'المدة',
			value = {'مدة','المدة','length'},
			wikidata = {property='P2047',formatting='durationh:m:s'},
			metadata = {
				description = "مدة الأغنية بهذا الشكل (دقائق : ثواني)",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[كاتب أغاني]]',
			value = {'كاتب','الكاتب','writer'},
			wikidata = {property='P676'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[شاعر غنائي|الشاعر]]',
			value = {'شاعر','الشاعر','الشعراء','lyricist'},
			wikidata = {property='P'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[ملحن|الملحن]]',
			value = {'ملحن','الملحن','الملحنون','composer'},
			wikidata = {property='P86'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[توزيع موسيقي|التوزيع الموسيقي]]',
			value = {'توزيع موسيقي','الموزعون'},
			wikidata = {property='P'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'المجمع الموسيقي',
			value = {'مجمع','المجمع الموسيقي','التجميع','compiler'},
			wikidata = {property='P'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[المخرج]]',
			value = {'مخرج','المخرج','director'},
			wikidata = {property='P57'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = 'الآلات',
			value = {'آلات','الآلات','instruments'},
			wikidata = {property='P870'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        {type = 'row', 
			label = '[[منتج أغاني|المنتج]]',
			value = {'منتج','المنتج','producer'},
			wikidata = {property='P162'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
	}},
   
   generic.selectSound{defaultcaption ='ملف صوتي'},
   
	{type = "table", title = "بيانات أخرى", rows = {
		{type = 'row' ,
			label = 'الإهداء',
			value = {'إهداء','dedication'},
			wikidata = {property='P825'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
		},
        {type = 'row', 
			label = '[[صناعة التسجيل|العلامة التجارية]]',
			value = {'علامة تجارية','العلامة التجارية','label'},
			wikidata = {property='P264'},
			metadata = {
				description = "الشركة الأصلية المنتجة",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row', 
			label = 'فنان الغلاف',
			value = {'فنان الغلاف','cover artist'},
			wikidata = {property='P736'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row', 
			label = 'نسق التوزيع',
			value = {'توزيع','distribution'},
			wikidata = {property='P437'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row', 
			label = 'نسخ أخرى لفنانين',
			value = {'نسخ أخرى','versions'},
			wikidata = {property='P'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row', 
			label = 'المراجعات المحترفة',
			value = {'مراجعات','المراجعات'},
			wikidata = {property='P'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
        generic.awards(),
        {type = 'row', 
			label = 'تصنيف تراثي',
			value = {'تصنيف تراثي','heritage status'},
			wikidata = {
				property='P3259', qualifier='P17', rowsubformat1='$1 : ',
				formatting='table', rowformat='$1$0$R0', showDate='true',
				conjunction = '<br />'
			},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
	}},
   
	{type = "table", title = "التسلسل", rows = {
        {type = 'row', 
			label = '[[الألبوم]]',
			value = {'ألبوم','الألبوم','album'},
			wikidata = {property='P1433'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
        },
		{type = 'row',
			label = 'جزء من',
			value = {'جزء_من','part of'},
			wikidata = {property='P361'},
			metadata = {
				description = "",
				option = "", 
				type = "string", 
			}
		},
		{type = 'navbox' , inner='y',
			previousparameter = {"سبقتها",'الألبوم السابق','prev','prev_title'}, previousproperty = "P155",
			nextparameter = {"تبعتها",'الألبوم التالي','next','next_title'},	nextproperty = "P156"
		},
	}},
	{type = 'table' , title ='متفرقات' ,rows = {
		{type = 'row1col', value = {'متفرقات','متنوع','misc'}},       
	}}
 }
}