- 欢迎来到THBWiki!如果您是第一次来到这里,请点击右上角注册一个帐户
- 有任何意见、建议、求助、反馈都可以在 讨论板 提出
- THBWiki以专业性和准确性为目标,如果你发现了任何确定的错误或疏漏,可在登录后直接进行改正
模块:沙盒/外链平台识别
< 模块:沙盒
跳到导航
跳到搜索
local p = {}
local data = {
-- 社交平台
['微博'] = 'weibo.com',
['Facebook'] = 'facebook.com',
['Twitter'] = 'twitter.com',
['X'] = 'x.com',
['QQ群'] = 'jq.qq.com',
['Telegram'] = 't.me',
-- 投稿平台
['哔哩哔哩'] = 'bilibili.com',
['Youtube'] = 'youtube.com',
['Niconico'] = 'nicovideo.jp',
['Odysee'] = 'odysee.com',
['QQ音乐'] = 'y.qq.com',
['网易云音乐'] = 'music.163.com',
['Apple Music'] = 'music.apple.com',
['酷狗'] = 'kugou.com',
['虾米'] = 'xiami.com',
['Bandcamp'] = 'bandcamp.com',
['Booth'] = 'booth.pm',
['SoundCloud'] = 'soundcloud.com',
['Pixiv'] = 'pixiv.net',
-- 通贩平台
['Dizzylab'] = 'dizzylab.net',
['淘宝'] = 'taobao.com',
['Steam'] = 'steampowered.com',
['Melonbooks'] = 'melonbooks.co.jp',
-- 其他平台
['Lofter'] = 'lofter.com',
['Wordpress'] = 'wordpress.com',
['新浪博客'] = 'blog.sina.com.cn',
['网易博客'] = 'blog.163.com',
['天窗联盟'] = 'doujin.bgm.tv',
['Tumblr'] = 'tumblr.com',
['Wixsite'] = 'wixsite.com',
['Sakura Blog'] = 'sakura.ne.jp',
['Jimdo'] = {
'jimdo.com',
'jimdofree.com',
'jimdosite.com'
},
['Fc2'] = 'fc2.com',
['Ameba'] = 'ameblo.jp',
}
-- 统一数据格式
for k, v in pairs(data) do
if type(v) == 'string' then
data[k] = { v }
end
end
-- 提取主机名
local function get_hostname(url)
url = url:lower()
local host = url:match('^https?://([^:/]+)')
return host
end
-- 判断 host 是否匹配某个域名
local function match_domain(host, domain)
return host == domain
or host:sub(-#domain - 1) == ('.' .. domain) -- 子域名
end
function p._identify(args)
local url = args['网址'] or args[1] or ''
local default = args['名称'] or args[2] or '网站'
if url == '' then
return '缺少参数'
end
local host = get_hostname(url)
if not host then
return '网址错误'
end
for name, item in pairs(data) do
for _, domain in ipairs(item) do
if match_domain(host, domain) then
return name
end
end
end
return default
end
function p.identify(frame)
local args = frame:getParent().args
return p._identify(args)
end
return p