#1 Le 29/12/2010, à 22:03
- kde4 fan
besoin d'aide pour commande bash multiple operation
1 :vérifier si le fichier existe et télécharger le fichier si manquant
LISTE="/home/"$USER"/.Dreamnux/listes/tvfreebox.m3u"
if [ -f $LISTE ]; then
echo $LISTE
else
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u
voici un extrai du fichier
#EXTM3U
#EXTINF:0,2 - France 2 HD
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=hd
#EXTINF:0,2 - France 2
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd
#EXTINF:0,2 - France 2 (bas débit)
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=ld
ensuite separer et trier en 3 fichier .m3u (hd ,sd ,ld)et suprimer les autre lignes comme les radio
dans la meme ligne de commande avec grep cat et sed qui donerais un truc comme ca
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u | `cat home/"$USER"/.Dreamnux/listes/tvfreebox.m3u | grep $CHAINE` | grep REF | cut -d "\"" -f 2 | tail -1 > /home/"$USER"/.Dreamnux/listes/freeboxhd.m3u)
mais qui fonctionne vers les 3 nouvelle playlist
merci
Dernière modification par kde4 fan (Le 29/12/2010, à 22:03)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#2 Le 30/12/2010, à 02:05
- ssdg
Re : besoin d'aide pour commande bash multiple operation
Tu as pensé à utiliser un fichier temporaire?
s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.
Hors ligne
#3 Le 30/12/2010, à 13:35
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
Tu as pensé à utiliser un fichier temporaire?
j utilise le fichier tvfreebox.m3u que j'aimerai diviser en 3 .m3u
le problème pour moi c'est que je n'arrive pas a utiliser grep cat et sed
Dernière modification par kde4 fan (Le 30/12/2010, à 13:38)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#4 Le 30/12/2010, à 15:11
- AnsuzPeorth
Re : besoin d'aide pour commande bash multiple operation
Bjr,
Tu devrais faire une boucle en sortie de wget plutôt que d'essayer de faire ça en une ligne 'pipée' ...
Avec awk, ca devrait être possible, mais je ne le maîtrise pas suffisamment !
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#5 Le 30/12/2010, à 15:59
- Gari
Re : besoin d'aide pour commande bash multiple operation
Je ne pige pas trop ton besoin...
En gros, tu veux ça ?
repertoire=/home/"$USER"/.Dreamnux/listes
filein=${repertoire}/tvfreebox.m3u
fileout_hd=${repertoire}/tvfreebox_hd.m3u
fileout_sd=${repertoire}/tvfreebox_sd.m3u
fileout_ld=${repertoire}/tvfreebox_ld.m3u
egrep "flavour=hd$" $filein > $fileout_hd
egrep "flavour=sd$" $filein > $fileout_sd
egrep "flavour=ld$" $filein > $fileout_ld
Hors ligne
#6 Le 30/12/2010, à 18:07
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
Gari
AnsuzPeorth
oui a peux près
1 télécharger le fichier
2 le copier dans un répertoire (répertoire=/home/"$USER"/.Dreamnux/listes)
3 trier les ligne pour obtenir 3 fichiers tvfreebox_ld tvfreebox_sd tvfreebox_hd en ne gardan que les ligne corespondant a ld ou sd ou hd
cet ici que devrais intervenir les grep cat et sed ou Avec awk pour séparer les listes
4 avoirs dans mon répertoire 3 fichiers (tvfreebox_hd.m3u tvfreebox_sd.m3u tvfreebox_ld.m3u)
je ne sais pas si je suis claire dans mon explication
merci
Dernière modification par kde4 fan (Le 30/12/2010, à 18:18)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#7 Le 30/12/2010, à 19:02
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
ceci fonctionne
LISTE="/home/"$USER"/.Dreamnux/listes/tvfreebox.m3u"
if [ -f $LISTE ]; then
echo $LISTE
else
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u
repertoire=/home/"$USER"/.Dreamnux/listes
filein=${repertoire}/tvfreebox.m3u
fileout_hd=${repertoire}/tvfreebox_hd.m3u
fileout_sd=${repertoire}/tvfreebox_sd.m3u
fileout_ld=${repertoire}/tvfreebox_ld.m3u
egrep "flavour=hd$" $filein > $fileout_hd
egrep "flavour=sd$" $filein > $fileout_sd
egrep "flavour=ld$" $filein > $fileout_ld
fi
mais il me manque les ligne
#EXTINF:0,2 - France 2 HD au dessus de chaque ligne
résulta rechercher dans chaque fichier .m3u
#EXTM3U
#EXTINF:0,2 - France 2 HD
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=hd
#EXTM3U
#EXTINF:0,2 - France 2
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd
merci
Dernière modification par kde4 fan (Le 30/12/2010, à 19:06)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#8 Le 30/12/2010, à 19:06
- AnsuzPeorth
Re : besoin d'aide pour commande bash multiple operation
je proposais une boucle pour faire ça en full bash, mais la solution avec grep est valable, peu un peu plus longue à exécuter, mais dans ton cas, c'est pas très grave !
Pour arriver à tes fins, il te suffit d'ajouter #EXTM3U en début de chaque fichiers, pour matcher la ligne précédente, regarde l'option -B de grep.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#9 Le 30/12/2010, à 20:00
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
AnsuzPeorth
Pour arriver à tes fins, il te suffit d'ajouter #EXTM3U en début de chaque fichiers
pourrais tu écrire la ligne svp je ne vois pas ou je doit le placer
merci
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#10 Le 30/12/2010, à 20:11
- AnsuzPeorth
Re : besoin d'aide pour commande bash multiple operation
Ben il suffit de la mettre dans ta condition. Il faudra doubler les >> pour les grep, sinon tu effaceras ton premier echo.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#11 Le 30/12/2010, à 20:21
- Levi59
Re : besoin d'aide pour commande bash multiple operation
Question : Tout le fichier est-il sous ce format :
1 #EXTM3U
2 #EXTINF
3 Lien
2+2 #EXTINF
3+2 Lien
?
Si oui c'est assez simple à mettre en oeuvre...
Supprimé: nouvelle version plus bas
Dernière modification par Levi59 (Le 31/12/2010, à 14:51)
Hors ligne
#12 Le 30/12/2010, à 20:52
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
AnsuzPeorth
egrep "flavour=hd$" $filein > $fileout_hd
je rajoute "#EXTM3U" et >> mais je ne vois pas dans quelle ordre j'ai fais des teste et cela ne fonctionne pas
Levi59
super ces presque ca mais quand j'exécute le code il me crée 1 fichier par chaine donc me retrouve avec des centaines de fichier
sinon en les ouvrant avec gedit le trie est bon je retrouve bien
#EXTM3U
#EXTINF:0,2 - France 2 HD
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=hd
et je recherche pluto cela
#EXTM3U
#EXTINF:0,2 - France 2
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd
#EXTINF:0,3 - France 3
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=202&flavour=sd
#EXTINF:0,5 - France 5
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=203&flavour=sd
#EXTINF:0,7 - Arte
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=204&flavour=sd
#EXTINF:0,8 - Direct 8
merci
Dernière modification par kde4 fan (Le 30/12/2010, à 21:06)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#13 Le 30/12/2010, à 21:35
- Levi59
Re : besoin d'aide pour commande bash multiple operation
Uniquement les low definition?
Hors ligne
#14 Le 30/12/2010, à 21:47
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
Uniquement les low definition?
non les 3 hd sd ld dans 3 fichier séparer
Dernière modification par kde4 fan (Le 30/12/2010, à 21:48)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#15 Le 30/12/2010, à 21:50
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
en faisan comme cela
egrep "#EXTM3U" $filein > $fileout_hd
egrep "#EXTINF:0," $filein >> $fileout_hd
egrep "flavour=hd$" $filein >> $fileout_hd
egrep "#EXTM3U" $filein > $fileout_sd
egrep "#EXTINF:0,$" $filein >> $fileout_sd
egrep "flavour=sd$" $filein >> $fileout_sd
egrep "#EXTM3U" $filein > $fileout_ld
egrep "#EXTINF:0," $filein >> $fileout_ld
egrep "flavour=ld$" $filein >> $fileout_ld
j'obtiens
#EXTM3U
#EXTINF:0,
#EXTINF:0,
flavour=hd
flavour=hd
donc pas bon car les ligne ne se suive pas comme il faut
#EXTM3U
#EXTINF:0,
flavour=hd
#EXTINF:0,
flavour=hd
Dernière modification par kde4 fan (Le 30/12/2010, à 21:53)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#16 Le 30/12/2010, à 21:53
- AnsuzPeorth
Re : besoin d'aide pour commande bash multiple operation
Je suis pas sous linux, mais en recopiant vos proposition (sans optimisations ni corrections)
LISTE="/home/"$USER"/.Dreamnux/listes/tvfreebox.m3u"
if [ -f $LISTE ]; then
echo $LISTE
else
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u
repertoire=/home/"$USER"/.Dreamnux/listes
filein=${repertoire}/tvfreebox.m3u
fileout_hd=${repertoire}/tvfreebox_hd.m3u
fileout_sd=${repertoire}/tvfreebox_sd.m3u
fileout_ld=${repertoire}/tvfreebox_ld.m3u
echo '#EXTM3U' | tee "$fileout_hd" | tee "$fileout_sd" > "$fileout_ld"
# -B1 ou -B2, me souviens plus et je pas tester
egrep -B1 "flavour=hd$" $filein >> $fileout_hd
egrep -B1 "flavour=sd$" $filein >> $fileout_sd
egrep -B1 "flavour=ld$" $filein >> $fileout_ld
fi
C'était pas si compliqué
Dernière modification par AnsuzPeorth (Le 30/12/2010, à 21:59)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#17 Le 30/12/2010, à 22:00
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
C'était pas si compliqué qd même !
mille merci grâce a ta solution cela fonctionne et c'est très compliquer pour moi qui suis débutent
mais très compressible par rapport a la solution de Levi59 qui est tres complex pour moi
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#18 Le 30/12/2010, à 22:10
- AnsuzPeorth
Re : besoin d'aide pour commande bash multiple operation
mais très compressible par rapport a la solution de Levi59 qui est tres complex pour moi
D'ailleurs si sputnick passe par là, Levi59 aura l'honneur d'avoir un golden award useless of cat
Un peu de lecture qui fait du bien !
http://partmaps.org/era/unix/award.html
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#19 Le 30/12/2010, à 22:11
- kde4 fan
Re : besoin d'aide pour commande bash multiple operation
une fois le code traiter
LISTE="/home/"$USER"/.Dreamnux/listes/tvfreebox.m3u"
if [ -f $LISTE ]; then
echo $LISTE
else
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u
repertoire=/home/"$USER"/.Dreamnux/listes
filein=${repertoire}/tvfreebox.m3u
fileout_hd=${repertoire}/tvfreebox_hd.m3u
fileout_sd=${repertoire}/tvfreebox_sd.m3u
fileout_ld=${repertoire}/tvfreebox_ld.m3u
echo '#EXTM3U' | tee "$fileout_hd" | tee "$fileout_sd" > "$fileout_ld"
egrep -B1 "flavour=hd$" $filein >> $fileout_hd
egrep -B1 "flavour=sd$" $filein >> $fileout_sd
egrep -B1 "flavour=ld$" $filein >> $fileout_ld
rm /home/"$USER"/.Dreamnux/listes/tvfreebox.m3u
fi
j'aimerai l'afficher dans une zenity --list avec seulement le non des chaine dans la fenetre de zenity
TRIE=`echo $fileout | xargs zenity --list --title "Dreamnux" --window-icon="/home/"$USER"/.Dreamnux/images/icone-64x64.png" --text "<span color=\"blue\">Sélection De La Chaine Désirer</span>" --column "chaine" --width=200 --height=400`
Dernière modification par kde4 fan (Le 30/12/2010, à 22:12)
-------------------------------------------------------------------BONJOUR ET MERCI-----------------------------------------------------------
kubuntu 64 12.04 et Linux-Mint Maya 64 (MATE)
Bureau Animer Dreamnux : http://forum.ubuntu-fr.org/viewtopic.php?id=325865
Bureau Animer kreamnux : http://forum.kubuntu-fr.org/viewtopic.php?pid=8916691
Hors ligne
#20 Le 31/12/2010, à 11:16
- Levi59
Re : besoin d'aide pour commande bash multiple operation
kde4 fan a écrit :mais très compressible par rapport a la solution de Levi59 qui est tres complex pour moi
D'ailleurs si sputnick passe par là, Levi59 aura l'honneur d'avoir un golden award useless of cat
Un peu de lecture qui fait du bien !
http://partmaps.org/era/unix/award.html
Je sais pour le cat mais pour une raison que j'ignore, je n'ai pas pu stocker le fichier dans une variable car il remplaçait les retours à la ligne par des espaces (pourtant d'habitude ca marche).
Et je rappel que je ne script que depuis 1-2 ans en amateur...
Hors ligne
#21 Le 31/12/2010, à 11:39
- Totor
Re : besoin d'aide pour commande bash multiple operation
echo '#EXTM3U' | tee "$fileout_hd" | tee "$fileout_sd" > "$fileout_ld"
je sais, je vais encore passer pour un puriste :
tee "$fileout_hd" "$fileout_sd" > "$fileout_ld" <<< '#EXTM3U'
Dernière modification par Totor (Le 31/12/2010, à 11:39)
-- Lucid Lynx --
Hors ligne
#22 Le 31/12/2010, à 12:15
- Gari
Re : besoin d'aide pour commande bash multiple operation
J'adore aider les gens, j'apprends des tas de trucs
Le coup du "grep -B" je ne connaissais pas, c'est génial !
Je propose une réécriture du code afin que les variables que j'ai introduites soient utilisées dès le début (sinon c'est pas très utile). Je propose aussi de modifier le test, parce qu'il ne sert strictement à rien en l'état (vérifie si un fichier est présent, si ce n'est pas le cas il le télécharge puis le détruit : le fichier ne sera jamais présent !)...
#!/bin/sh
repertoire=/home/"$USER"/.Dreamnux/listes
filein=${repertoire}/tvfreebox.m3u
fileout_hd=${repertoire}/tvfreebox_hd.m3u
fileout_sd=${repertoire}/tvfreebox_sd.m3u
fileout_ld=${repertoire}/tvfreebox_ld.m3u
fileinweb=http://mafreebox.freebox.fr/freeboxtv/playlist.m3u
# On teste la présence des fichiers hd, sd, ld
if [ -f $fileout_hd ] && [ -f $fileout_sh ] && [ -f fileout_ld ]; then
echo $fileout_hd
echo $fileout_sd
echo $fileout_ld
else
wget -O - $fileinweb > $filein
echo '#EXTM3U' | tee "$fileout_hd" | tee "$fileout_sd" > "$fileout_ld"
egrep -B1 "flavour=hd$" $filein >> $fileout_hd
egrep -B1 "flavour=sd$" $filein >> $fileout_sd
egrep -B1 "flavour=ld$" $filein >> $fileout_ld
rm $filein
fi
Dernière modification par Gari (Le 31/12/2010, à 12:16)
Hors ligne
#23 Le 31/12/2010, à 13:03
- Levi59
Re : besoin d'aide pour commande bash multiple operation
Je viens de relire rapidement le topic et Il y a un truc que je viens de comprendre...
Tu veux faire 3 playlists avec dans chacune soit les low def, soit les medium, soit les hight def.
Je croyais que tu voulais une playlist pour chaque lien!
Edit : Nouvelle version en accord avec le cahier des charges!
#!/bin/bash
# script pour couper un fichier playlist de freebox (m3u) en
# plusieurs fichiers correspondant chacun à un flux TV de qualité hd, sd ou ld
#
# Copyright (C) 30 dec. 2010, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
LISTE="/home/"${USER}"/.Dreamnux/listes/tvfreebox.m3u"
[ -f ${LISTE} ] && rm ${LISTE}
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > "${LISTE}"
OLDIFS=$IFS
IFS="
"
for i in "hd" "sd" "ld"
do
lines=`egrep -B1 "flavour=${i}$" ${LISTE}`
echo -e "#EXTM3U" > tvfreebox_${i}.m3u
echo -e "${lines}" >> tvfreebox_${i}.m3u
sed -i '/--/d' tvfreebox_${i}.m3u
done
rm ${LISTE}
IFS=$OLDIFS
exit 0
Du coup mon code est plus court, plus simple à comprendre et plus optimisé.
Il est également plus facile de ne plus créer de m3u d'une certaine qualité (supprimer "xx" à la ligne for pour ne plus créer tvfreebox_xx.m3u)
Dernière modification par Levi59 (Le 31/12/2010, à 13:50)
Hors ligne
#24 Le 31/12/2010, à 14:26
- Totor
Re : besoin d'aide pour commande bash multiple operation
my turn
si le fichier est bien tel qu'il est donné dans le premier post, voilà ma façon de faire :
#!/bin/bash
repertoire="/home/${USER}/.Dreamnux/listes"
wget -O - http://mafreebox.freebox.fr/freeboxtv/playlist.m3u > >(
read && tee "${repertoire}"/tvfreebox_{h,l,s}d.m3u >/dev/null <<< "${REPLY}"
while { read; read url; }
do
printf "%s\n%s\n" "${REPLY}" "${url}" >> "${repertoire}/tvfreebox_${url##*=}.m3u"
done
)
edit : non testé mais confiant !
par contre, pour un script plus complet, il me faudrait savoir comment déterminer les lignes "TV" des autres (radio...)
Dernière modification par Totor (Le 03/01/2011, à 11:49)
-- Lucid Lynx --
Hors ligne
#25 Le 31/12/2010, à 14:50
- Levi59
Re : besoin d'aide pour commande bash multiple operation
@ Totor, comment remets tu la première ligne dans les nouveaux fichier (#EXTM3U)?
Hors ligne