47 lines
1.4 KiB
Text
47 lines
1.4 KiB
Text
local p = {}
|
|
|
|
local i18n = {
|
|
trackCategory = '[[Category:Pages with%s videos]]',
|
|
services = { -- when video embeded with a new service provider, add it here
|
|
youtube = ' YouTube',
|
|
youtubeplaylist = ' YouTube',
|
|
vimeo = ' Vimeo',
|
|
bilibili = ' Bilibili',
|
|
}
|
|
}
|
|
|
|
function p.genVideo( provider, id, width, height, align, caption, urlArgs )
|
|
if not id then
|
|
return nil
|
|
end
|
|
provider = provider and provider:lower() or 'youtube'
|
|
local dimensions = tonumber( width ) or 425
|
|
height = tonumber( height )
|
|
if height then
|
|
dimensions = dimensions .. 'x' .. height
|
|
end
|
|
if urlArgs then
|
|
return mw.getCurrentFrame():callParserFunction{ name = '#ev', args = { provider, id = id, dimensions = dimensions, alignment = align, description = caption, urlArgs = urlArgs } }
|
|
else
|
|
return mw.getCurrentFrame():extensionTag{ name = provider, content = id, args = { dimensions = dimensions, alignment = align, description = caption } }
|
|
end
|
|
end
|
|
|
|
function p.main( f )
|
|
local args = f
|
|
if f == mw.getCurrentFrame() then
|
|
args = require( 'Module:ProcessArgs' ).merge( true )
|
|
end
|
|
|
|
local result = p.genVideo( args.provider, args[ 1 ], args[ 2 ], args[ 3 ], args.align, args.caption, args.urlargs )
|
|
if result then
|
|
--result = mw.html.create( 'div' ):wikitext( result )
|
|
if not args.nocat then
|
|
result = tostring( result ) .. i18n.trackCategory:format( i18n.services[ args.provider and args.provider:lower() or '' ] or '' )
|
|
end
|
|
end
|
|
|
|
return result
|
|
end
|
|
|
|
return p
|