Aller au contenu

Module:YouTube

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 24 mai 2023 à 02:27 et modifiée en dernier par Od1n (discuter | contributions) (ce cas ne doit normalement pas se produire). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[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.

--[[
* 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 nbSeconds( number, unit )
    if unit == 's' then
        return number
    elseif unit == 'm' then
        return number * 60
    elseif unit == 'h' then
        return number * 3600
    end
end

function p.timestamp( frame )
    local timestamp = frame.args[ 1 ]

    local num1, unit1, num2, unit2, num3, unit3

    -- "30s"
    num1, unit1 = timestamp:match( '^0*(%d+)([hms])$' )
    if num1 then
        return ( nbSeconds( num1, unit1 ) ) .. 's'
    end

    -- "20m30s"
    num1, unit1, num2, unit2 = timestamp:match( '^0*(%d+)([hms])0*(%d+)([hms])$' )
    if num1 then
        return ( nbSeconds( num1, unit1 ) + nbSeconds( num2, unit2 ) ) .. 's'
    end

    -- "1h20m30s"
    num1, unit1, num2, unit2, num3, unit3 = timestamp:match( '^0*(%d+)([hms])0*(%d+)([hms])0*(%d+)([hms])$' )
    if num1 then
        return ( nbSeconds( num1, unit1 ) + nbSeconds( num2, unit2 ) + nbSeconds( num3, unit3 ) ) .. 's'
    end

    -- "30"
    local seconds = timestamp:match( '^0*(%d+)$' )
    if seconds then
        return seconds .. 's'
    end

    -- fallback: return the original input
    return timestamp
end

return p