Module:SiteList: Difference between revisions

3,891 bytes removed ,  23 July 2023
no edit summary
No edit summary
Tag: Reverted
No edit summary
 
(4 intermediate revisions by the same user not shown)
local p = {}
 
function p.site(frame)
local sites = {
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:SiteList'})
website1 = {
local site, labelerror = 'Website 1',getSite(args.site)
type = 'website',
aliases = {'website1', 'website1.com', 'website1com'},
url = 'https://website1.com/',
sceneUrl = 'https://website1.com/updates/',
modelUrl = 'https://website1.com/models/',
suffix = '?ats=eyJhIjoyOTQwNzMsImMiOjU3MTMxNDM3LCJuIjoyMiwicyI6MjA2LCJlIjo3NzczLCJwIjoyfQ==',
category = {'Website 1 models', 'Website 1 Videos', 'Website 1 Performers'},
network = 'Network1 Network',
},
website2 = {
label = 'Website 2',
type = 'website',
aliases = {'website2', 'website2.com', 'website2com'},
url = 'https://website2.com/',
sceneUrl = 'https://website2.com/scene/',
modelUrl = 'https://website2.com/people/',
suffix = '',
category = 'Website 2 models',
network = 'Network2 Network',
},
website3 = {
label = 'Website 3',
type = 'studio',
aliases = {'website3', 'website3.com', 'website3com'},
url = 'https://website3.com/',
sceneUrl = 'https://website3.com/videos/',
modelUrl = 'https://website3.com/performers/',
suffix = '.html',
category = 'Website 3 models',
network = 'Network3 Network',
list = 'List of Website3 actors',
},
website4 = {
label = 'Website 4',
type = 'website',
aliases = {'website4', 'website4.com', 'website4com'},
url = 'https://website4.com/',
sceneUrl = 'https://website4.com/videos/',
modelUrl = 'https://website4.com/performers/',
suffix = '.html',
category = 'Website 4 models',
network = '',
},
website5 = {
label = 'Website 5',
type = 'studio',
aliases = {'website5', 'website5.com', 'website5com'},
url = 'https://website5.com/',
sceneUrl = '',
modelUrl = 'https://website5.com/models/',
suffix = '',
category = 'Website 5 models',
network = 'Network5 Network',
},
website6 = {
label = 'Website 6',
type = 'website',
aliases = {'website6', 'website6.com', 'website6com'},
url = '',
sceneUrl = '',
modelUrl = '',
suffix = '',
category = '',
network = '',
},
website7 = {
label = 'Website 7',
type = 'website',
aliases = {'website7', 'website7.com', 'website7com'},
url = 'https://website7.com/',
sceneUrl = 'https://website7.com/videos/',
modelUrl = 'https://website7.com/performers/',
suffix = '?ats=eyJhIjoyOTQwNzMsImMiOjU3MTMxNDM3LCJuIjoyMiwicyI6MjA2LCJlIjo3NzczLCJwIjoyfQ==',
category = 'Website 7 models',
network = 'Network7 Network',
idtonum = 'y',
list = 'List of Website7 actors',
},
website8 = {
label = 'Website 8',
type = 'website',
aliases = {'website8', 'website8.com', 'website8com'},
url = 'https://website8.com/',
sceneUrl = 'https://website8.com/videos/',
modelUrl = 'https://website8.com/performers/',
suffix = '?ats=eyJhIjoyOTQwNzMsImMiOjU3MTMxNDM3LCJuIjoyMiwicyI6MjA2LCJlIjo3NzczLCJwIjoyfQ==',
category = 'Website 8 models',
network = 'Network8 Network',
idtonum = '',
list = '',
archiveURL = 'https://archive.ph/sBCAl',
archived = 'y',
},
website9 = {
label = 'Website 9',
type = 'website',
aliases = {'website9', 'website9.com', 'website9com'},
url = 'https://website9.com/',
sceneUrl = 'https://website9.com/videos/',
modelUrl = 'https://website9.com/performers/',
suffix = '?ats=eyJhIjoyOTQwNzMsImMiOjU3MTMxNDM3LCJuIjoyMiwicyI6MjA2LCJlIjo3NzczLCJwIjoyfQ==',
category = 'Website 9 models',
network = 'Network9 Network',
idtonum = 'y',
list = 'List of Website9 actors',
archiveURL = 'https://archive.ph/NSAHAga',
archived = 'y',
},
}
 
if error then
function p.site(args)
return string.format('|-\n| colspan="4" style="text-align:center;vertical-align:middle;color:red;font-weight:bold;" | %s \n| style="width: 0px; padding: 0px; border: none;" |\n', error)
local site = getSite(args.site)
elseif site then
 
if site then
local url = site.url
local isArchived = site.archived and (site.archived == 'yes' or site.archived == 'y')
local alias = args.alias or '<div style="font-size: 1em;">' .. mw.title.getCurrentTitle().text .. '</div>'
local notes = args.notes and '<div style="font-size: 1em;">' .. args.notes .. '</div>' or '<div style="font-size: 1em;">N/A</div>'
local categoryLink = site.network and site.network ~= '' and string.format('" <small>([[:Category:%s|'''%s''']])</small>'", site.network, site.network) or ''
local siteType = site.typesitetype or args[1]
local style
 
end
 
local result = ''string.format(
'|-\n| style="%s" | %s\n| style="text-align:center;vertical-align:middle;" | %s%s\n| style="text-align:center;vertical-align:middle;" | %s\n| style="text-align:center;vertical-align:middle;" | %s\n| style="width: 0px; padding: 0px; border: none;" |\n',
style,
siteType and siteType:gsub("^%l", string.upper) or 'Website',
linkOrLabel,
categoryLink,
alias,
notes
)
 
local ns = mw.title.getCurrentTitle().namespace
if ns == 0 then
end
 
return {result
style = style,
siteType = siteType and siteType:gsub("^%l", string.upper) or 'Website',
linkOrLabel = linkOrLabel,
categoryLink = categoryLink,
alias = alias,
notes = notes,
additionalInfo = result
}
else
return string.format('|-\n| colspan="4" style="text-align:center;vertical-align:middle;color:red;font-weight:bold;" | Error: invalid site parameter: %s. See [[PBC:SiteList|PBC:SiteList for documentation]] \n| style="width: 0px; padding: 0px; border: none;" |\n', args.site)
return nil
end
end
 
function p.siteList(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:SiteListTop'})
local sites = {}
for i, site in ipairs(args.list) do
local siteData = p.site({site = site, id = args.id, sceneid = args.sceneid, alias = args.alias, notes = args.notes})
if siteData then
table.insert(sites, siteData)
end
end
-- Сортируем массив сайтов по linkOrLabel
table.sort(sites, function(a, b) return a.linkOrLabel < b.linkOrLabel end)
-- Создаем итоговую строку
local result = ''
for _, site in ipairs(sites) do
result = result .. string.format(
'|-\n| style="%s" | %s\n| style="text-align:center;vertical-align:middle;" | %s%s\n| style="text-align:center;vertical-align:middle;" | %s\n| style="text-align:center;vertical-align:middle;" | %s\n| style="width: 0px; padding: 0px; border: none;" |\n',
site.style,
site.siteType,
site.linkOrLabel,
site.categoryLink,
site.alias,
site.notes
) .. site.additionalInfo
end
return result
end
 
 
function getSite(name)
local firstLetter = name:sub(1, 1):upper()
for _, site in pairs(sites) do
local success, siteDictModule = pcall(require, 'Module:SiteDict/' .. firstLetter)
if site.label:lower() == name:lower() or table.contains(site.aliases, name:lower()) then
 
return site
if success then
local matchedSites = {}
for _, site in pairs(siteDictModule.sites) do
if site.label:lower() == name:lower() or table.contains(site.aliases, name:lower()) then
table.insert(matchedSites, site)
end
end
 
if #matchedSites > 1 then
return nil, 'Error: Duplicate sites found in module. Please check the module for errors.'
elseif #matchedSites == 1 then
return matchedSites[1]
end
else
mw.log('Could not load module: ' .. 'Module:SiteDict/' .. firstLetter)
end
 
return nil
end