模块:SongPlayer
来自Rizline中文维基
更多操作
此模块的文档可以在模块:SongPlayer/doc创建
local p = {}
function p.player(frame)
local args = getArgs(frame)
if not args then args = frame:getParent().args end
local title = args.title
local artist = args.artist
local imageName = args.image
local c1 = args.color1 or '#94E1FF'
local c2 = args.color2 or '#A3E5FF'
local c3 = args.color3 or '#B2E9FE'
local c4 = args.color4 or '#D5F3FE'
if not title or title == '' or not imageName or imageName == '' then
return ''
end
local sanitizedTitle = title:gsub(' ', '_'):gsub('[\\/:*?"<>|]', '-')
local encodedTitle = mw.uri.encode(sanitizedTitle, 'PATH')
local songUrl = 'https://pan.rizwiki.cn/d/song/' .. encodedTitle .. '.mp3'
local rawImagePath = frame:preprocess('{{filepath:' .. imageName .. '}}')
local imagePath = rawImagePath:gsub('^https?:', '')
local html = mw.html.create('div')
:attr('id', 'riz-player')
:addClass('riz-player-mini')
:attr('data-url', songUrl)
:css({
['--rp-c1'] = c1,
['--rp-c2'] = c2,
['--rp-c3'] = c3,
['--rp-c4'] = c4,
['display'] = 'none'
})
local cover = html:tag('div'):addClass('rp-cover')
cover:tag('img'):attr('src', imagePath):attr('alt', 'cover')
cover:tag('div'):addClass('rp-btn-toggle'):wikitext('<div class="rp-icon-play"></div><div class="rp-icon-pause"></div>')
local info = html:tag('div'):addClass('rp-info')
info:tag('div'):addClass('rp-title'):wikitext(title)
info:tag('div'):addClass('rp-artist'):wikitext(artist or '')
local progressWrap = info:tag('div'):addClass('rp-progress-wrap')
local progressBar = progressWrap:tag('div'):addClass('rp-progress-bar')
progressBar:tag('div'):addClass('rp-progress-current')
progressBar:tag('div'):addClass('rp-progress-handle')
info:tag('div'):addClass('rp-time'):wikitext('<span class="rp-cur">00:00</span> / <span class="rp-dur">00:00</span>')
return tostring(html)
end
return p