#1 Le 09/05/2011, à 01:51
- Hizoka
[Resolu] additionner des durées
Bonsoir,
je cherche un moyen simple pour additionner des temps, ex :
00:01:56
01:54:22
....
pour que cela me calcul le total (en respectant la limite de 59mins et 59sec évidement...)
alors il est possible de séparé chaque durée en heures, minutes, secondes d'additionner chaque element de le diviser par 60 (min et sec) et co....
mais existe-t-il quelque chose de plus simple ?
Mon but ?
afficher la durée de film disponible dans un dossier en passant par ffmpeg.
alors s'il existe quelque chose du genre, je prends aussi
apres des tests rapides :
unset temps heure min sec heure_total min_total sec_total reste_sec reste_min
for i in *
do
temps=$(ffmpeg -i "${i}" 2>&1 | sed -n '/.*Duration/ s/.*Duration: \(.*\), start.*/\1/p')
[[ -z ${temps} ]] && continue
heure=${temps%%:*}
min=${temps%:*} min=${min#*:}
sec=${temps##*:} sec=${sec%.*}
heure_total=$((${heure_total:-0} + ${heure}))
min_total=$((${min_total:-0} + ${min}))
sec_total=$((${sec_total:-0} + ${sec}))
done
# Nombre de secondes
reste_sec=$((${sec_total}%60))
# Nombre de minutes
reste_min=$((${min_total}%60))
# Ajout des minutes formées par les secondes aux minutes
min_total=$(((${reste_min}/60) + ${min_total}))
# Ajout des heures formées par les minutes aux heures
heure_total=$((${heure_total} + (${min_total}/60)))
echo "Durée totale : ${heure_total} heures et ${reste_min} minutes et ${reste_sec} secondes"
mais ca me parait un chouille compliqué pour ça...
Dernière modification par Hizoka (Le 09/05/2011, à 16:45)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2 Le 09/05/2011, à 06:30
- FRUiT
Re : [Resolu] additionner des durées
Bon là c'est une soustraction mais le principe est le même,
http://forum.kubuntu-fr.org/viewtopic.p … 1#p3901101
Et aussi :
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#3 Le 09/05/2011, à 07:10
- Hizoka
Re : [Resolu] additionner des durées
ouais mais là, du coup, il faut que je convertisse les temps en secondes...pas forcement plus pratique...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 09/05/2011, à 07:41
- FRUiT
Re : [Resolu] additionner des durées
Plus pratique je sais pas, c'est peut-être possible de récupérer les temps directement en secondes, mais en tout cas, moins de lignes que ton bout de code surement, non ?
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#5 Le 09/05/2011, à 13:23
- twocats
Re : [Resolu] additionner des durées
SECS=$(mplayer -frames 0 -identify "${i}" 2>/dev/null| awk 'BEGIN {FS="="} /ID_L/ {sub(/\./, "="); print $2}')
HH=$(( SECS / 3600 ))
MM=$(( ( SECS / 60 ) % 60 ))
SS=$(( SECS % 60 ))
printf "%02d:%02d:%02d " $HH $MM $SS
La réponse est 42
Hors ligne
#6 Le 09/05/2011, à 15:04
- FRUiT
Re : [Resolu] additionner des durées
HH=$(( SECS / 3600 )) MM=$(( ( SECS / 60 ) % 60 )) SS=$(( SECS % 60 )) printf "%02d:%02d:%02d " $HH $MM $SS
=
date -u -d "@$SECS" +'%T'
Cf les liens au dessus
Dernière modification par FRUiT (Le 09/05/2011, à 15:23)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#7 Le 09/05/2011, à 15:31
- FRUiT
Re : [Resolu] additionner des durées
Ce qui donnerait en gros :
SECS=0
for i in *; do
SECS=$(($(mplayer -frames 0 -identify "${i}" 2>/dev/null| awk -F'=' '/ID_L/ {sub(/\./, "="); print $2}')+$SECS))
done
[ $SECS -ge 86400 ] && TOT=$(date -u -d "@$SECS" +'(%d) %T') || TOT=$(date -u -d "@$SECS" +'%T')
Dernière modification par FRUiT (Le 09/05/2011, à 17:07)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#8 Le 09/05/2011, à 16:45
- Hizoka
Re : [Resolu] additionner des durées
Merci, c'est en effet plus simple (même si j'ai toujours du mal avec awk), mais il y a 2 erreurs
- Il manque une " ) " pour la récupération de SECS.
- %SECS -ge 86400 => $SECS -ge 86400
ce qui donne :
for i in *; do
SECS=$(($(mplayer -frames 0 -identify "${i}" 2>/dev/null| awk -F'=' '/ID_L/ {sub(/\./, "="); print $2}')+${SECS:-0}))
done
[ ${SECS} -ge 86400 ] && TOT=$(date -u -d "@${SECS}" +'(%d) %T') || TOT=$(date -u -d "@${SECS}" +'%T')
il fallait le savoir que ID_LENGTH valait le temps en secondes...
merci à vous !
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 09/05/2011, à 17:06
- FRUiT
Re : [Resolu] additionner des durées
Oups dsl pour les erreurs je pouvais pas faire de C/C...
Je corrige mon message.
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#10 Le 09/05/2011, à 18:15
- twocats
Re : [Resolu] additionner des durées
À propos de :
awk -F'='
Je rappel ce que dit 'man awk' :
BOGUES
L'option -F n'est pas nécessaire étant donné la fonctionnalité d'affectation de variables en ligne de commandes ; elle n'est maintenue que pour assurer une
compatibilité ascendante.Les programmes syntaxiquement invalides d'un seul caractère tendent à faire déborder la pile de l'analyseur syntaxique, générant ainsi un message plutôt in‐
utile. De tels programmes sont contre toute attente difficiles à diagnostiquer dans le cas le plus général, et l'effort nécessaire pour les détecter n'en vaut
pas vraiment la peine.
C'est pourquoi je mets un bloc BEGIN.
La réponse est 42
Hors ligne
#11 Le 09/05/2011, à 19:42
- FRUiT
Re : [Resolu] additionner des durées
J'avais jamais prêté attention à ce passage, merci de l'info, je note.
Je vois pas trop ce que c'est ces "Syntactically invalid single character programs"... En as-tu une idée toi ?
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#12 Le 10/05/2011, à 18:05
- Hizoka
Re : [Resolu] additionner des durées
mais en y reflechissant ça ne repond pas totalement à la question de base qui était de calculer des durées heure:min:sec
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#13 Le 10/05/2011, à 19:38
- Postmortem
Re : [Resolu] additionner des durées
Salut à tous !
Je me permet une petite question en passant :
date -u -d "@$SECS" +'%T'
D'où sort le @ dans << date -u -d "@$SECS" +'%T' >> ??
J'ai cherché dans "man date" et ça n'en cause pas... ou alors j'ai pas les yeux en face des trous !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#14 Le 10/05/2011, à 21:22
- FRUiT
Re : [Resolu] additionner des durées
Apparemment ça sert à indiquer que l'unité du nombre suivant est la seconde :
> date -u -d "@300" +'%T'
00:05:00
> date -u -d "300" +'%T'
03:00:00
> date -u -d "0020" +'%T'
00:20:00
> date -u -d "330" +'%T'
03:30:00
Sinon j'avoue que moi j'ai bêtement recopié sur Totor sans trop y réfléchir.
Et pour les « » c'est alt-GR+w et alt-GR+x ^^
Dernière modification par FRUiT (Le 10/05/2011, à 21:27)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#15 Le 10/05/2011, à 22:54
- aduxas
Re : [Resolu] additionner des durées
info coreutils 'date invocation'
27.8 Seconds since the Epoch
============================If you precede a number with `@', it represents an internal time stamp
as a count of seconds. The number can contain an internal decimal
point (either `.' or `,'); any excess precision not supported by the
internal representation is truncated toward minus infinity. Such a
number cannot be combined with any other date item, as it specifies a
complete time stamp.
Hors ligne
#16 Le 11/05/2011, à 12:36
- Postmortem
Re : [Resolu] additionner des durées
Merci à vous !
J'avais bien regardé dans « info coreutils 'date invocation' » mais dans ma version, pas de trace du « @ » !
EDIT :
Ah si, ça en cause !
Or if you do not mind depending on the `@' feature present since
coreutils 5.3.0, you could shorten this to:date -d @946684800 +"%F %T %z"
1999-12-31 19:00:00 -0500
RE-EDIT : Sous Natty, c'est au paragraphe 28.8 que ça parle de « Seconds since the Epoch »
Dernière modification par Postmortem (Le 11/05/2011, à 12:50)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne