Il video non è 1 settimana, 2 giorni, 6 ore e 21 minuti e 32 secondi?
Youtube lo mostra come 222 ore 21 minuti e 17 secondi; 1 * 7 * 24 + 2 * 24 + 6 = 222. Non so da dove arriva la discrepanza di 17 secondi contro 32 secondi; può anche essere un errore di arrotondamento.
A mio parere, scrivere un parser non è difficile. Sfortunatamente, dateutil
non sembra analizzare gli intervalli, ma solo i punti datetime.
Aggiornamento:
vedo che c'è un pacchetto per questo, ma solo come un esempio di potere regexp, brevità, e la sintassi incomprensibile, ecco un parser per voi:
import re
# see http://en.wikipedia.org/wiki/ISO_8601#Durations
ISO_8601_period_rx = re.compile(
'P' # designates a period
'(?:(?P<years>\d+)Y)?' # years
'(?:(?P<months>\d+)M)?' # months
'(?:(?P<weeks>\d+)W)?' # weeks
'(?:(?P<days>\d+)D)?' # days
'(?:T' # time part must begin with a T
'(?:(?P<hours>\d+)H)?' # hourss
'(?:(?P<minutes>\d+)M)?' # minutes
'(?:(?P<seconds>\d+)S)?' # seconds
')?' # end of time part
)
from pprint import pprint
pprint(ISO_8601_period_rx.match('P1W2DT6H21M32S').groupdict())
# {'days': '2',
# 'hours': '6',
# 'minutes': '21',
# 'months': None,
# 'seconds': '32',
# 'weeks': '1',
# 'years': None}
I deliberatamente non sto calcolando il numero esatto di secondi da questi dati qui. Sembra banale (vedi sopra), ma in realtà non lo è. Ad esempio, la distanza di 2 mesi dal 1 ° gennaio è di 58 giorni (30 + 28) o 59 (30 + 29), a seconda dell'anno, mentre dal 1 ° marzo è sempre 61 giorni. Una corretta implementazione del calendario dovrebbe tenere conto di tutto ciò; per un calcolo della lunghezza della clip di YouTube, deve essere eccessivo.
wow, considerando che ho scritto il mio parser, questo rende tutto così semplice :) grazie! –
@MorganWilde Una delle grandi cose di Python è che di solito è possibile trovare una soluzione esistente, se non nella libreria standard, quindi su pypi. È buona norma cercare di evitare l'implementazione di qualsiasi cosa se esiste già una soluzione (in qualsiasi lingua, non solo in python). – zstewart