Module:YouTube
Apparence
[voir] [modifier] [historique] [purger]
Ce module Lua est utilisé par le modèle {{YouTube}}.
Page à prévisualiser pour vérifier les modifications : Discussion module:YouTube/Test.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--[[
* format canonique : 30s
* YouTube supporte davantage de formats, mais redirige vers le format canonique :
** il peut y avoir des leading zeroes
** heures, minutes, secondes peuvent être spécifiés dans n'importe quel ordre
** si on spécifie uniquement des secondes, le suffixe "s" peut être omis
]]
local p = {}
local function toSeconds( number, unit )
if unit == 's' then
return number
elseif unit == 'm' then
return number * 60
elseif unit == 'h' then
return number * 3600
end
end
local function timestampToNbSeconds( timestamp )
local num1, unit1, num2, unit2, num3, unit3
-- "30s"
num1, unit1 = timestamp:match( '^0*(%d+)([hms])$' )
if num1 then
return toSeconds( num1, unit1 )
end
-- "20m30s"
num1, unit1, num2, unit2 = timestamp:match( '^0*(%d+)([hms])0*(%d+)([hms])$' )
if num1 then
return toSeconds( num1, unit1 ) + toSeconds( num2, unit2 )
end
-- "1h20m30s"
num1, unit1, num2, unit2, num3, unit3 = timestamp:match( '^0*(%d+)([hms])0*(%d+)([hms])0*(%d+)([hms])$' )
if num1 then
return toSeconds( num1, unit1 ) + toSeconds( num2, unit2 ) + toSeconds( num3, unit3 )
end
-- "30"
local seconds = timestamp:match( '^0*(%d+)$' )
if seconds then
return seconds
end
return false
end
function p.timestamp( frame )
local timestamp = frame.args[ 1 ]
local nbSeconds = timestampToNbSeconds( timestamp )
if not nbSeconds then
-- fallback: return the original input
return timestamp
end
return nbSeconds .. 's'
end
return p