logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-11-2019 15:19:04

Anonyme
Invité

[Résolu]Ne prendre en compte que les durées de plus de ...

Bonjour,

la commande :


lsdvd /dev/sr0 | grep 'Length:' | awk '{print$2" |---> "$4}' | sed "s/\..*//" | tr -d ','
 




me donne ça :



01 |---> 00:47:14
02 |---> 00:47:08
03 |---> 00:47:22
04 |---> 00:47:24
05 |---> 00:00:13
 



je voudrais que les durées de moins de 2 minutes ne soient pas prises en compte.


01 |---> 00:47:14
02 |---> 00:47:08
03 |---> 00:47:22
04 |---> 00:47:24
 



merci pour l'aide

Dernière modification par Anonyme (03-11-2019 18:43:31)

#2 03-11-2019 16:48:19

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Tu pourrais utiliser la fonction mktime de awk pour avoir le temps en secondes :

awk 'BEGIN { date0="1970 01 01 "; print 3600 + mktime ( date0"00 47 14" ) }'


2834


Cela dit, le plus simple serait de calculer le temps en secondes en additionnant les secondes au produit des minutes par 60 et au produit des heures par 3600.

Ta commande raccourcie donne quoi ? :

lsdvd /dev/sr0 | grep 'Length:'

Dernière modification par Beta-Pictoris (03-11-2019 17:08:12)

Hors ligne

#3 03-11-2019 17:59:52

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Bonsoir Beta-Pictoris

J'ai juste besoin d'un truc plus lisible en gardant les durées pricipales dans ce format "ex : 00:47:14"
C'est vrai que je n'ai pas posté un exemple plus parlant de le genre :


01 |---> 01:16:33
02 |---> 00:00:00
03 |---> 00:00:03
04 |---> 00:00:06
05 |---> 00:00:52
06 |---> 00:00:15
07 |---> 00:00:00
08 |---> 00:00:16
09 |---> 00:00:00
10 |---> 00:00:00
11 |---> 00:00:06
12 |---> 00:03:47
13 |---> 00:03:42
14 |---> 00:03:42
15 |---> 00:00:00
16 |---> 00:00:00
17 |---> 00:00:00
18 |---> 00:00:00
19 |---> 00:00:00
20 |---> 00:00:00
21 |---> 00:00:00
22 |---> 00:00:00
23 |---> 00:00:00
24 |---> 00:00:00
25 |---> 00:03:47
26 |---> 00:00:07
27 |---> 00:00:07
28 |---> 00:00:00
29 |---> 00:03:26
30 |---> 00:03:26
31 |---> 00:00:53
32 |---> 00:00:53
33 |---> 00:03:23
34 |---> 00:00:00
35 |---> 00:01:20
36 |---> 00:03:23
37 |---> 00:00:00
38 |---> 00:00:00
39 |---> 00:00:00
40 |---> 00:00:00
41 |---> 00:00:00
42 |---> 00:00:00
43 |---> 00:01:20
44 |---> 00:00:12
45 |---> 00:00:00
 



Je voudrais, c'est plus lisible :


01 |---> 01:16:33
12 |---> 00:03:47
13 |---> 00:03:42
14 |---> 00:03:42
12 |---> 00:03:47
13 |---> 00:03:42
25 |---> 00:03:47
29 |---> 00:03:26
30 |---> 00:03:26
33 |---> 00:03:23
36 |---> 00:03:23




 





Pour répondre à ta question :

lsdvd /dev/sr0 | grep 'Length:'




Title: 01, Length: 01:16:33.720 Chapters: 17, Cells: 23, Audio streams: 03, Subpictures: 08
Title: 02, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 03, Subpictures: 08
Title: 03, Length: 00:00:03.960 Chapters: 03, Cells: 03, Audio streams: 01, Subpictures: 01
Title: 04, Length: 00:00:06.000 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
Title: 05, Length: 00:00:52.520 Chapters: 02, Cells: 02, Audio streams: 02, Subpictures: 01
Title: 06, Length: 00:00:15.520 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01
Title: 07, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01
Title: 08, Length: 00:00:16.840 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 01
Title: 09, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 01
Title: 10, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00
Title: 11, Length: 00:00:06.000 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
Title: 12, Length: 00:03:47.560 Chapters: 03, Cells: 03, Audio streams: 02, Subpictures: 00
Title: 13, Length: 00:03:42.600 Chapters: 04, Cells: 04, Audio streams: 02, Subpictures: 00
Title: 14, Length: 00:03:42.600 Chapters: 04, Cells: 04, Audio streams: 02, Subpictures: 00
Title: 15, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 16, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 17, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 18, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 19, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 20, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 21, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 22, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 23, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 24, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 00
Title: 25, Length: 00:03:47.560 Chapters: 03, Cells: 03, Audio streams: 02, Subpictures: 00
Title: 26, Length: 00:00:07.000 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00
Title: 27, Length: 00:00:07.000 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00
Title: 28, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00
Title: 29, Length: 00:03:26.400 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
Title: 30, Length: 00:03:26.400 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
Title: 31, Length: 00:00:53.280 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 01
Title: 32, Length: 00:00:53.280 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 01
Title: 33, Length: 00:03:23.720 Chapters: 03, Cells: 03, Audio streams: 02, Subpictures: 01
Title: 34, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 35, Length: 00:01:20.520 Chapters: 02, Cells: 02, Audio streams: 02, Subpictures: 01
Title: 36, Length: 00:03:23.720 Chapters: 03, Cells: 03, Audio streams: 02, Subpictures: 01
Title: 37, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 38, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 39, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 40, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 41, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 42, Length: 00:00:00.480 Chapters: 01, Cells: 01, Audio streams: 02, Subpictures: 01
Title: 43, Length: 00:01:20.520 Chapters: 02, Cells: 02, Audio streams: 02, Subpictures: 01
Title: 44, Length: 00:00:12.000 Chapters: 01, Cells: 01, Audio streams: 01, Subpictures: 00
Title: 45, Length: 00:00:00.760 Chapters: 01, Cells: 01, Audio streams: 00, Subpictures: 00

 



J'avais déjà une commande du même style :


lsdvd /dev/sr0 | grep 'Length:' | awk '{print$4}' | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' | sed "s/\..*//"




4593
0
3
6
52
15
0
16
0
0
6
227
222
222
0
0
0
0
0
0
0
0
0
0
227
7
7
0
206
206
53
53
203
0
80
203
0
0
0
0
0
0
80
12
0
 



mais voilà, si je veux aussi printer $2 avec $6 en même temps, ça fausse tout smile

En résumé :

un awk print sur le numéro $2 et un awk print sur le time en $4 (ces deux infos sur la même ligne)
et le truc pour que ça me met que les plus gros temps.

Dernière modification par Anonyme (03-11-2019 18:16:49)

#4 03-11-2019 18:19:21

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

en ajoutant un sed "/00:0[0-1]:/d?

cat input_values


01 |---> 00:47:14
02 |---> 00:47:08
03 |---> 00:47:22
04 |---> 00:47:24
05 |---> 00:00:13




cat input_values | sed "/00:0[0-1]:/d"


01 |---> 00:47:14
02 |---> 00:47:08
03 |---> 00:47:22
04 |---> 00:47:24

Hors ligne

#5 03-11-2019 18:32:01

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

@David5647

J'y représente comment dans cette commande ? smile

lsdvd /dev/sr0 | grep 'Length:' | awk '{print$2" |---> "$4}' | sed "s/\..*//" | tr -d ','

#6 03-11-2019 18:35:11

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

@David5647


Ha oui !!! je vois ce que tu veux dire

#7 03-11-2019 18:37:18

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

ça fonctionne !!!! big_smile

 lsdvd /dev/sr0 | grep 'Length:' | awk '{print$2" |---> "$4}' | sed "s/\..*//" | tr -d ',' | sed "/00:0[0-1]:/d"




01 |---> 01:16:33
12 |---> 00:03:47
13 |---> 00:03:42
14 |---> 00:03:42
25 |---> 00:03:47
29 |---> 00:03:26
30 |---> 00:03:26
33 |---> 00:03:23
36 |---> 00:03:23

 



Expliques moi le


sed "/00:0[0-1]:/d"



pour la limite de temps.

En tout cas, c'est nickel.
Merci à vous deux. wink

Dernière modification par Anonyme (03-11-2019 18:43:05)

#8 03-11-2019 18:44:07

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

sed "/terme/d"


le d supprimer la ligne contenant terme

et tu recherches les motifs : 00:00: et 00:01:

[0-1] indique les chiffres de 0 à 1 autrement dit : soit 0, soit 1

donc /00:0[0-1]:/d

on pourrait l'écrire, en explicitant tout les chiffres :

sed "/00:0[0-1]:[0-9][0-9]/d"

Dernière modification par David5647 (03-11-2019 18:45:26)

Hors ligne

#9 03-11-2019 18:44:49

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Toutes les lignes qui contiennent "00:00:" ou "00:01:"  ne seront pas affichées (/d pour delete).

Sinon, pour info, sans regexp, ça donne ceci :

lsdvd /dev/sr0 | awk '/Length:/{ split ($4,time,":");if (time[3]+(time[2]+time[1]*60)*60 >= 120) { print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}}'

Dernière modification par Beta-Pictoris (03-11-2019 18:52:45)

Hors ligne

#10 03-11-2019 18:53:23

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Pas mal !!! Merci smile
Il fallait y penser à ce "truc" big_smile
sans regexp ..... ça me donne le tourni tongue

Donc voilà mon script simple et pratique pour choisir le titre d'un dvd ( seul, les titres de plus 2 minutes seront affichés) :

#!/bin/bash

DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g')
lsdvd $DEVICE | grep 'Length:' | awk '{print$2" |---> "$4}' | sed "s/\..*//" | tr -d ',' | sed "/00:0[0-1]:/d"

echo -n "Entrer Le Numéro du Titre : "
read num
echo $num

for i in $num;
       do mplayer -noconfig all -nocache -dvd-device "$DEVICE" dvdnav://$num;
done
 


J'ai plus qu'a fusionner tout ça avec cd-info (lecture des CD-AUDIO) et tout sera Ok.

Dernière modification par Anonyme (03-11-2019 18:54:21)

#11 03-11-2019 18:57:49

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Anonyme a écrit :

Pas mal !!! Merci smile
Il fallait y penser à ce "truc" big_smile
sans regexp ..... ça me donne le tourni tongue


Ce n'est pas évident que ta solution soit meilleure, car tu utilises un grep, un sed, un tr et encore un grep alors que l'on peut tout faire avec awk, comme dans l'exemple que je t'ai donné.
D'ailleurs, avec awk, on pourrait aussi appliquer un regexp sur le temps.

Hors ligne

#12 03-11-2019 19:02:31

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Comme ceci ? :

lsdvd /dev/sr0 | awk '/Length:/{ if ( $4 !~ /00:0[0-1]:/ ) { print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}}'

Hors ligne

#13 03-11-2019 19:04:09

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Oh oui, je sais bien que c'est pas la meilleur smile mais c'est la seule pour l'instant que j'arrive à comprendre pour bidouiller tongue

#14 03-11-2019 19:04:55

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Beta-Pictoris a écrit :

Comme ceci ? :

lsdvd /dev/sr0 | awk '/Length:/{ if ( $4 !~ /00:0[0-1]:/ ) { print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}}'



Message croisé, je test pour voir.

#15 03-11-2019 19:07:45

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

lsdvd /dev/sr0 | awk '/Length:/{ if ( $4 !~ /00:0[0-1]:/ ) { print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}}'




01 |---> 01:16:33
12 |---> 00:03:47
13 |---> 00:03:42
14 |---> 00:03:42
25 |---> 00:03:47
29 |---> 00:03:26
30 |---> 00:03:26
33 |---> 00:03:23
36 |---> 00:03:23

 



wink

#16 03-11-2019 19:16:26

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

On peut simplifier en faisant les tests à l'extérieur des accolades

lsdvd /dev/sr0 | awk '/Length:/ && $4 !~ /00:0[0-1]:/ {print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}'

Dernière modification par Beta-Pictoris (03-11-2019 19:16:50)

Hors ligne

#17 03-11-2019 19:29:12

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Je test après avoir mangé smile

#18 03-11-2019 19:54:25

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Beta-Pictoris a écrit :

On peut simplifier en faisant les tests à l'extérieur des accolades

lsdvd /dev/sr0 | awk '/Length:/ && $4 !~ /00:0[0-1]:/ {print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}'




lsdvd /dev/sr0 | awk '/Length:/ && $4 !~ /00:0[0-1]:/ {print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}'




01 |---> 01:16:33
12 |---> 00:03:47
13 |---> 00:03:42
14 |---> 00:03:42
25 |---> 00:03:47
29 |---> 00:03:26
30 |---> 00:03:26
33 |---> 00:03:23
36 |---> 00:03:23

 



smile

#19 04-11-2019 07:50:26

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Bonjour,

c'est juste pour comprendre un peu plus.

par

/00:0[0-9]:



je cache bien tout les titres de moins de 9 minutes:


01 |---> 01:06:13
12 |---> 00:14:24
 





mais où je pige un peu moins, c'est pour passer à la dizaine de minute. Si je décide de ne plus voir ce qui est en dessous de 15 minutes.
exemple pour le titre 12 |---> 00:14:24, je coince.
Jusqu'à 9, ça passe bien.

Dernière modification par Anonyme (04-11-2019 07:53:17)

#20 04-11-2019 08:12:40

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Essaye ceci :

/00:(1[0-4]|0[0-9]):/

Hors ligne

#21 04-11-2019 11:13:01

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Beta-Pictoris a écrit :

Essaye ceci :

/00:(1[0-4]|0[0-9]):/



ça fonctionne wink

Alors ça, si je comprend bien :

/[0-0][0-0]:[0-1][0-9]:[0-9][0-9]/



voudrait dire que je tapes dans les titres qui sont égal ou plus de 20 minutes ?

#22 04-11-2019 19:04:10

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

La regexp correspond à toutes les chaînes qui commencent par "00:" , puis qui continuent avec un chiffre 1 suivi d'un chiffre entre 0 et 4, ou qui continuent avec un chiffre 0 suivi d'un chiffre entre 0 et 9, et qui terminent par un ":".

Hors ligne

#23 04-11-2019 19:52:06

Anonyme
Invité

Re : [Résolu]Ne prendre en compte que les durées de plus de ...

Et bien en tout cas merci pour l'aide smile

Lancer un simple script pour visionner simplement un DVD avec un style de playlist des titres les plus long est un réel plaisir.


EDIT: Le script actuel :


#!/bin/bash
## IMPORTANTE COMMANDE
## https://askubuntu.com/questions/407743/convert-time-stamp-to-seconds-in-bash
# lsdvd $DEVICE | grep 'Length:' | awk '{print$4}' | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
# lsdvd $DEVICE | grep 'Length:' | awk '{print$4}' | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' | sed "s/\..*//"
# -vf eq=20:50
# -vf eq2=1:1:0:0
# -nolirc -osdlevel 3 -subfont-osd-scale 2 -font LiquidCrystal-Normal -subfont-blur 8 -slang fra -alang fra

# gamma         -100    100
# brightness    -100    100
# contrast      -100    100
# saturation    -100    100
# hue           -100    100


## lsdvd /dev/sr0 | grep 'Length:' | awk '{print $4}' | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' | sed "s/\..*//" | awk '$1 > 2000 { print }'
## https://debian-facile.org/viewtopic.php?pid=315323#p315323
DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g')
COUNT=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g' | wc -l)




if [ "$COUNT" -eq 1 ]; then
#lsdvd $DEVICE | grep 'Length:' | awk '{print$2" |---> "$4}' | sed "s/\..*//" | tr -d ',' | sed "/00:0[0-1]:/d"
#lsdvd $DEVICE | awk '/Length:/{ if ( $4 !~ /00:0[0-1]:/ ) { print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}}'
lsdvd "$DEVICE" | head -1 | awk '{print $3}'
lsdvd "$DEVICE" | awk '/Length:/ && $4 !~ /[0-0][0-0]:[0-0][0-1]:[0-9][0-9]/ {print substr($2,1,length($2)-1)" |---> "substr($4,1,8)}'

echo -n "Entrer Le Numéro du Titre : "
read -r num
echo "$num"


      mplayer -ao alsa -noconfig all -fs -nolirc -osdlevel 3 -subfont-osd-scale 1.5 -font LiquidCrystal-Normal -subfont-blur 8 \
          -contrast 5 -brightness 5 -saturation -50 -gamma -5 -nosub -alang fra -nocache -dvd-device "$DEVICE" dvdnav://"$num"  
             



else
echo -n "Pas de Dvd ... Terminé."
sleep 2
exit 0
fi
 

Dernière modification par Anonyme (29-05-2020 20:50:26)

Pied de page des forums