Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#376 Le 14/06/2008, à 15:50

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

petites remarques :
à la ligne 729 :

if [[ "$format" == "AVI" ]] || [[ "$format" == "ARCHOS" ]] || [[ "format" == "MEIZU" ]]
	then VIDEO="$(echo $VIDEO | sed -e 's/\.flv$/\.avi/')"
	mv "$source.avi" "$VIDEO"
elif [[ "$format" == "MKV" ]]
	then VIDEO="$(echo $VIDEO | sed -e 's/.flv$/.mkv/')"
	mv "$source.mkv" "$VIDEO"
else VIDEO="$(echo $VIDEO | sed -e 's/.flv$/.mp4/')"
mv "$source.mp4" "$VIDEO"
fi

- il manque un $ devant le dernier format de la premiere ligne wink

- ensuite tu déplace $source.avi en $video juste apres avoir lancé l'encodage avec & a la fin, ce qui veut dire que le script n'attend pas la fin de la conversion pour déplacer? ca vient pas de la les messages "mv: ne peut évaluer..."
voila  si je dis une grosse bétise désolé wink

Hors ligne

#377 Le 14/06/2008, à 15:54

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Euh le script ne marche pas et c'est normal yurek hein, la je me concentrais uniquement sur la partie conversion, je me suis pas occupé du reste.

redisded > pour le nohup je sais pas j'avais lu ça quelque part mais j'ai plus la source...


effectivement il manquais un $ j'avais pas vu
Pour le déplacement c'est réglé, mais c'était pas mon problème non plus.

Enfin vous pouvez arrêter de vous prendre la tête dessus, je posterais une version beta plus tard si j'ai besoin d'aide mais déja la le script est très différent de ce matin donc inutile de corriger des bugs qui n'existent peut être même plus wink

ah si une question quand même, c'est possible d'avoir une barre de progressionzenity qui se balade de droite à gauche (comme quand on sait pas combien de temps l'opération dure) ?

Dernière modification par Ras' (Le 14/06/2008, à 15:57)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#378 Le 14/06/2008, à 16:08

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

oui zenity --progress --pulsate c'est ce que je t'ai suggéré plus haut wink

EDIT :
pour le nohup, selon cette page http://fr.wikipedia.org/wiki/Nohup

il ne sert qu'a lancer un processus qui restera actif meme apres la déco de l'utilisateur.

Dernière modification par redisded (Le 14/06/2008, à 16:10)

Hors ligne

#379 Le 14/06/2008, à 16:16

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

ah oki :$
De toute façon je viens de voir qu'en l'enlevant ça marchait aussi bien

Ok pour pulsate, merci, je m'en étais mal servi la première fois du coup ça avait pas marché :$


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#380 Le 14/06/2008, à 16:29

yurek

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Dis moi que tu as utiliser des fonctions pour ta beta !!!


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#381 Le 14/06/2008, à 16:37

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

?

explique ton message s'il te plait ? je comprends pas bien...


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#382 Le 14/06/2008, à 16:43

azimuth024

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

J'ai téléchargé le script sur ibidems.free.fr, ça marche super bien.
Merci !

Hors ligne

#383 Le 14/06/2008, à 16:54

yurek

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

chaque fonction a une fonction bien précise et il le fait bien, ca éclairci le script et le rend plus facile a modifier.

Dernière modification par yurek (Le 14/06/2008, à 16:54)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#384 Le 14/06/2008, à 16:58

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

yurek a écrit :

chaque fonction a une fonction bien précise et il le fait bien, ca éclairci le script et le rend plus facile a modifier.

Lis le script et tu aura ta réponse

Hors ligne

#385 Le 14/06/2008, à 17:14

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

c'était à peu près déja le cas hein...


EDIT : grnx de bordel de bondiou d'script à la c#n !
J'en ai maaaarrree !

Dernière modification par Ras' (Le 14/06/2008, à 17:35)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#386 Le 14/06/2008, à 17:38

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

toujours le mem pb?

Hors ligne

#387 Le 14/06/2008, à 17:42

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

A l'heure actuelle le script ne sort pas de la fonction emissions tant que les vidéos ne sont pas converties...
J'ai beau mettre des & partout ça veut rien savoir.

Donc je vais mettre les wait dans cette fonction émission quitte à avoir 2 barres zenity en même temps... même si c'est pas le comportement que je voudrais. Et j'y réfléchirais plus tard, ça m'énerve là ^^


Et quand je met ça dans la fonction émissions :

#############################################
# Attente de la fin d'exécution des conversions si nécessaire
if ( grep -q "CONVERT" "$parent_dir"/.canal_config )
then
cd PID
	( while ( ls | grep ".pid" )
	do
	proc=$( ls -t | grep ".pid" | head -1)
	wait $( cat $proc )
	rm -f $proc
	done ) | zenity --progress --title="Conversion" --text="Conversion des vidéos en cours..." --auto-close --pulsate
cd ..
rmdir PID/
fi
#############################################

j'ai le droit à
+ wait 14506
canal: line 992: wait : l'identifiant de processus 14506 n'est pas un enfant de ce terminal

Surement parce que le processus est créé dans une fonction ?

Dernière modification par Ras' (Le 14/06/2008, à 17:59)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#388 Le 14/06/2008, à 18:03

juju_teamp2p

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Moi j'ai un petit problème quand j'utilise le script! les vidéos sont bien téléchargés mais impossible de les lires via Vlc ou autres... ! de plus dans le dossier ou elles devraient se trouvés il n'y à rien sad


www.p2p-area.com: telecharger des logiciels libres!
www.linux-inside.fr: Partagez vos experiences dans le domaine du monde libre de Linux

Hors ligne

#389 Le 14/06/2008, à 18:06

Ras'

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Quand tu dis impossible de les lire, tu les lance à partir de la playlist ?
(remarque si y'a pas de vidéos dans le dossier tu dois lancer la playlist oui ><')

Donc problème de conversion à mon avis, enlève la conversion pour le moment (refait ta config et clique sur annuler au moment ou on te demande)
le problème sera bientôt résolu.


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#390 Le 14/06/2008, à 18:17

juju_teamp2p

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

J'ai enlevé la compression pour le format flv et ça m'a tous l'air de marché smile
Merci Ras' pour ton coup de main wink


www.p2p-area.com: telecharger des logiciels libres!
www.linux-inside.fr: Partagez vos experiences dans le domaine du monde libre de Linux

Hors ligne

#391 Le 14/06/2008, à 20:11

yurek

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

salut ras, j'ai un peu de temps, pourrais tu donner le lien de ton script que tu est en train de modifier de réécrire pour que je puisse jeter un œil ?


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#392 Le 14/06/2008, à 20:41

Ras&#039;

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

dernière version (qui ne marche pas) :

#!/bin/bash                                                                                                                                                   
#                                                                                                                                                             
# But: Telecharger des videos de canalplus.fr et les mettre dans une playlist                                                                                         
# Auteur : Ras' 
# Dépendances : Zenity, wget
# Licence : Ce script est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier 
# selon les termes de la Licence Publique Générale GNU ( GNU GPL ) publiée par la Free Software 
# Foundation.
#
# Merci à beudbeud pour l'implémentation de la fonction d'automatisation via cron
#

todo="
Ajouter une icône (voir une barre de progression) dans la zone de notification


N'hésitez pas à proposer les votres sur le forum :
http://forum.ubuntu-fr.org/viewtopic.php?id=200149
"

version=v1.304

touch .canal_log
clear
parent_dir=$( dirname "$0" )
if [[ "$parent_dir" == "." ]]
then
parent_dir=$( pwd )
fi


##############################################
# Fonction qui choisi l'affichage : terminal en couleur ou Zenity
color()
{
printf '\033[%sm%s\033[m\n' "$@" 
}

function display
{
titre="$1"
texte="$2"
type="$3"
if ( grep -q GTK "$parent_dir"/.canal_config )
	then
		if [[ "$type" == "--progression" ]]
		then echo "$titre $texte"
		else
		zenity $type --title="$titre" --text="$texte" 
		fi
	else
		echo `color 1 "$titre"`
		echo `color 34 "$texte"`
fi
}
##############################################




##############################################
# Mise à jour automatique du script
function maj_auto
{
cd /tmp
rm -f canal*
wget "http://ibidems.free.fr/ras/script/canal" &>/dev/null
if ! [[ -f canal ]]
then display "Fin du script" "Veuillez vérifier votre connection internet et relancer le script." "--warning"
exit 0
fi

new=$( cat canal | grep "version=[v]" | cut -f2 -d "=" )
wget "http://ibidems.free.fr/ras/script/$new.txt" &>/dev/null

if ! [[ "$new" = "$version" ]]
then
text="La version $new est disponible, voici la liste des nouveautées :
$(cat $new.txt)

Voulez vous installer cette version ?"
if ( grep -q GTK "$parent_dir"/.canal_config )
then
display "Mise à jour" "$text" "--info"
	if [[ $? == "0" ]]
	then
	maj="1"
	fi
	if [[ $? == "1" ]]
	then zenity --warning --title="Fin du script" --text="Le script à été arreté"
	exit 0
	fi
else
echo "$text"
read -p "(Tapez 1 pour valider)" maj
fi

if [[ $maj == "1" ]]
then
echo "Mise à jour du script en cours..."
set --
rm -f "$parent_dir"/canal
cp canal "$parent_dir"/
chmod +x "$parent_dir"/canal
rm -f canal*
text="Une mise à jour a été effectuée vers la version $new
Merci de bien vouloir relancer le script."
display "Mise à jour" "$text" "--info"
	exit 0
	fi
fi
}
##############################################





##############################################
# Fonction --help
function _help
{
help="Télécharger les quotidiennes (ou pas) de Canal+
Créé par Ras'

Usage : ./canal [ARGUMENT]

Arguments disponibles :
-m, --menu     Ouvre un menu permettant de choisir 
               parmis les options suivantes

-c, --config   Configurer le script
               Lors de la première exécution, le script
               se lance automatiquement en configuration

-d, --date     Ouvre un calendrier Zenity
               Permet l'utilisation du script graphiquement

-a, --alacarte Permet exeptionnellement de télécharger
               des émissions différentes des habituelles
               (sans changer la configuration)

-l, --lanceur  Permet de rajouter une icône de lancement 
               dans le menu \"Applications > Son et Video\"

-cr, --cron    Permet l'ajout du tâche planifié

-b, --bug      Ouvre Firefox à l'adresse : 
               http://forum.ubuntu-fr.org/viewtopic.php?id=200149
               Topic du forum ubuntu-fr.org permettant de 
               rapporter un bug

-h, --help     Affiche cette aide et quitte

-?, --about    Affiche les informations sur le script

"
display "Menu Help" "$help" "--info"
exit 0
}
##############################################




##############################################
# Ajout d'une entrée dans le menu Applications > Son et vidéo
function _lanceur
{
if ! [[ -f logo64x64.svg ]]
then
wget -q http://ibidems.free.fr/ras/script/logo64x64.svg
fi
echo "[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Canal
GenericName=Canal
Comment=Script permettant de télécharger les quotidiennes du site de Canal+ 
Icon=$parent_dir/logo64x64.svg
Exec=$parent_dir/canal --menu
Terminal=false
StartupNotify=false
Categories=Application;AudioVideo" > canal.desktop

text="Le Script à besoin de votre mot de passe utilisateur pour créer l'entrée du menu 'Applications > Son et videos'.
Ce mot de passe ne sera évidemment pas sauvegardé ni utilisé ultérieurement par le script."
display "Droits root nécessaire" "$text" "--warning"

gksudo 'mv -f canal.desktop /usr/share/applications/'

text="Une entrée 'Canal' à été ajouté au menu 'Applications > Son et videos'.

Merci de bien vouloir relancer le script."
display "Menu ajouté" "$text" "--info"

sudo -k
exit 0
}
##############################################




##############################################
# Externalisation des fonctions "choix des émissions" et "true/false" de la configuration pour pouvoir marcher avec l'option "alacarte"
# Fonction permettant d'afficher par défaut les options de l'ancien fichier de config
function true_false
{
	if ( grep -q $1 .canal_config.bak &>/dev/null )
	then echo "TRUE"
	else echo "FALSE"
	fi
}

function choix_emissions
{
zenity --list --checklist --height=580 --width=400\
    --title="Configuration en cours... 4/7" \
    --text="Choix des émissions à télécharger"\
    --column="" --column="" --column="Emissions" \
    --hide-column=2 \
    --separator=" " \
    `true_false ZAP` ZAP "Le zapping"\
    `true_false PJA` PJA "Le petit journal actu de Yann Barthès"\
    `true_false GUI` GUI "Les guignols de l'info"\
    `true_false MET` MET "La météo de Louise Bourguoin"\
    `true_false PJP` PJP "Le petit journal people de Yann Barthès"\
    `true_false TOP` TOP "Le Top 5 de Thomas Nguijol"\
    `true_false SAV` SAV "Le service après vente d'Omar et Fred"\
    `true_false BAQ` BAQ "La boite à questions"\
    `true_false RDP` RDP "La revue de presse de Chris Esquerre"\
    `true_false STO` STO "La chronique de Sebastien Tohen"\
    `true_false ADM` ADM "L'avis de Mouloud"\
    `true_false DSH` DSH "Le daily show"\
    `true_false SGU` SGU "La chronique de Stephane Guillon"\
    `true_false IDB` IDB "Les infos de Blakowski" \
    `true_false CDA` CDA "Le champion de l'actu"\
    `true_false GRO` GRO "Le Groland"\
    `true_false TAC` TAC "Les têtes à claques"\
    `true_false PEP` PEP "Les Pépites du net" \
    `true_false MDH` MDH "Le meilleur du hier (semaine courante)" >> $1
}
##############################################





##############################################
# Si l'option d'appel est '--config' le script est lancé uniquement pour la création/modification du fichier canal_config
function _config
{
cp .canal_config .canal_config.bak &>/dev/null
rm -f .canal_config
echo "Configuration en cours..."


# Vérification des dépendances :
if [ !  `which zenity` ]
then echo "Zenity n'est pas installé, merci de l'installer pour assurer le bon fonctionnement du script :

Ouvrez un terminal et tapez : sudo apt-get install zenity
Puis relancez le script.
Merci."
exit 0
fi


# Choix du répertoire de téléchargement
zenity --info --title="Configuration en cours... 1/7" --text="Choisir un répertoire pour le téléchargement des émissions
( un sous répertoire \"Canal+/\" y sera automatiquement créé )"
REP=$(zenity --title="Choisir un répertoire pour le télécharchement des émissions" --file-selection --directory)
echo "$REP" > .canal_config


# Choix du mode de fonctionnement
zenity --list --list --radiolist --height=210 --width=200 \
    --title="Configuration en cours... 2/7" \
    --text="Choix du lecteur de vidéos"\
    --column="" --column="" --column="mode" \
    --hide-column=2 \
    --separator=" " \
    `true_false vlc` vlc "vlc media player"\
    `true_false mplayer` mplayer "mplayer movie player"\
    `true_false totem` totem "totem" >> .canal_config

# Choix du mode de fonctionnement
zenity --list --list --radiolist --height=210 --width=840 \
    --title="Configuration en cours... 3/7" \
    --text="Choix du mode de fonctionnement"\
    --column="" --column="" --column="mode" \
    --hide-column=2 \
    --separator=" " \
    `true_false QUO` QUO "Quotidien : les anciennes vidéos sont supprimées et remplacées par les nouvelles"\
    `true_false HIS` HIS "Historique : un dossier est créé pour chaque jour de diffusion, les anciennes vidéos ne sont pas supprimées"\
    `true_false HEM` HEM "Historique : un dossier est créé pour chaque émission, les anciennes vidéos ne sont pas supprimées" >> .canal_config

# Choix des émissions à télécharger
choix_emissions ".canal_config"

# Choix de la qualité des vidéos
zenity --list --list --radiolist --height=190 --width=650 \
    --title="Configuration en cours... 5/7" \
    --text="Choix de la qualité de lecture des vidéos"\
    --column="" --column="" --column="mode" \
    --hide-column=2 \
    --separator=" " \
    `true_false HIGH` HIGH "High : Optimisation de la qualité d'image, vidéos plus lourde "\
    `true_false LOW` LOW "Low : Optimisation de la vitesse de téléchargement, qualité d'image moins bonne" >> .canal_config

# Choix d'un mode de conversion vidéo
choix=$( zenity --list --list --radiolist --height=330 --width=575\
    --title="Configuration en cours... 6/7" \
    --text="Le script permet de convertir les vidéos dans d'autres format que l'original (.flv)
Cliquez sur 'annuler' si vous ne désirez pas convertir les vidéos"\
    --column="" --column="" --column="Format de conversion" \
    --hide-column=2 \
    --separator=" " \
    `true_false AVI` AVI "Convertir les vidéos au format .avi"\
    `true_false MKV` MKV "Convertir les vidéos au format .mkv"\
    `true_false IPOD` IPOD "Convertir les vidéos en un format lisible par un iPod"\
    `true_false ARCHOS` ARCHOS "Convertir les vidéos en un format lisible par un Archos / Creative Zen"\
    `true_false IRIVER` IRIVER "Convertir les vidéos en un format lisible par un iRiver"\
    `true_false MEIZU` MEIZU "Convertir les vidéos en un format lisible par un Meizu"\
    `true_false PSP` PSP "Convertir les vidéos en un format lisible par une PSP "\ )
if ! [[ $? == "0" ]] || [[ -z $choix ]]
then zenity --info --title="Configuration en cours... 6/7" --text="Les vidéos ne seront pas converties"
else echo "CONVERT=$choix" >> .canal_config
zenity --info --title="Configuration en cours... 6/7" --text="Certaines dépendances sont nécessaire pour effectuer cette conversion. Merci de bien vouloir les installer. Ouvrez un terminal et entrez les commandes suivantes :

Pour les iPod et PSP
sudo apt-get install ffmpeg faac libfaac0

Pour le mkv
sudo apt-get install ffmpeg ffmpeg2theora

Pour les autres
sudo apt get install mencoder


Si le script ne télécharge pas de vidéos, reconfigurez le pour enlever la conversion et venez me faire part de votre problème sur le forum à l'adresse : http://forum.ubuntu-fr.org/viewtopic.php?id=200149
(ou option bug du menu)"
fi

# Choix du mode d'utilisation graphique ou console
zenity --question --title="Configuration en cours... 7/7" --width=700 --text="Voulez vous utiliser l'interface graphique ?



En cliquant sur valider, le script affichera une barre de progression GTK+ lors du téléchargement des émissions.

Sinon le script sera silencieux jusqu'à la fin des téléchargements (les détails seront néanmoins disponibles en console)"
if [[ $? == "0" ]]
then echo "GTK" >> .canal_config
fi

# Inscription de la version du script dans le fichier de config
echo "version=$version" >> .canal_config 

#Fin de la configuration, le script est arreté
rm -f .canal_config.bak
echo "Configuration terminée"
exit 0
}
##############################################




##############################################
# Ajout d'une entrée dans crontab

annuler ()
{
if [ $? = 1 ]; then
exit 0
fi
}

function _cron
{
if ( grep -q CRON "$parent_dir"/.canal_config )
then
zenity --question --text="Une tache est déjà planifié voulez vous la modifier?"
sed -i '/CRON/d' "$parent_dir"/.canal_config
fi
annuler

crontab -l | grep DISPLAY >> /dev/null 2>&1
if  (test $? -eq  1 );
then echo 'DISPLAY=":0.0"' > tempcrontab
fi
crontab -l >> tempcrontab
sed -i '/canal/d' tempcrontab


JOURS=$(zenity --list --checklist --width=500 --height=447 \
        --title "Sélectionner les jours" \
        --text="Veuillez sélectionnez les jours :" \
    --separator="," \
    --hide-column=2 \
    --column="choix" --column="N° jour" --column="jours" \
    TRUE  "1" "lundi" \
    TRUE  "2" "mardi" \
    TRUE  "3" "mercredi" \
    TRUE  "4" "jeudi" \
    TRUE  "5" "vendredi" \
    TRUE  "6" "samedi" \
    TRUE  "7" "dimanche" \
   );annuler
      
crontab -l | grep canal >> /dev/null 2>&1
if (test $? -eq 0); then 
HH=`crontab -l | grep canal | awk -F' ' '{print $2}'`
MM=`crontab -l | grep canal | awk -F' ' '{print $1}'`
else 
HH=hh
MM=mm
fi

CHHEURE=`zenity --entry \
  --title="Heure" \
  --text="Saisissez l'heure du lancement : exemple : 20H00" \
  --entry-text "$HH"H"$MM"`
annuler

HEURE=`echo $CHHEURE | awk -F"H" '{print $1}'`
MIN=`echo $CHHEURE | awk -F"H" '{print $2}'`


echo "$MIN $HEURE * * $JOURS $parent_dir/canal" '#canal quotidienne' >> tempcrontab #canal quotidienne
crontab tempcrontab
zenity --text-info --filename=tempcrontab --width=500
rm tempcrontab
echo CRON >> .canal_config
exit 0
}
##############################################




##############################################
# Fonction --bug ouvre Fx sur la page du forum
function _bug
{
text="Le script va ouvrir Firefox à l'adresse 

http://forum.ubuntu-fr.org/viewtopic.php?id=200149

Veuillez y poster un descriptif clair de votre problème."
display "Rapport de bug" "$text" "--info"
firefox "http://forum.ubuntu-fr.org/viewtopic.php?id=200149"
exit 0
}
##############################################




##############################################
# Fonction --about
function _about
{
text="Créateur : Ras'
Version : $version
License : Ce programme est diffusée selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation.
Vous êtes libre de l'utiliser, le modifier et le redistribuer selon les termes de la license GNU GPL

Todo list : $todo
"
display "Script Canal" "$text" "--info"
exit 0
}
##############################################





##############################################
# Lancement de la vérification de mise à jour éventuelle
maj_auto
cd "$parent_dir"/



# Lancement automatique du script en mode config si la version du fichier .canal_config n'est pas la même que celle du script
canal_config_version=$( cat .canal_config | grep "version=[v]" | cut -f2 -d "=" | cut -c 1-4 )
if ! [[ `echo "$version" | cut -c 1-4` = $canal_config_version ]]
then
text="Votre fichier de configuration n'existe pas ou ne correspond pas à la version actuelle du script.
Lancement du script en mode configuration.

Si vous faites fonctionner le script en mode console et que Zenity n'est pas installé, merci de créer votre fichier de config.
Pour celà, inspirez vous de l'explication ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=1762893#p1762893"
display "Fichier de configuration erroné" "$text" "--error"
_config
fi
##############################################





##############################################
# Fonction "--menu" > menu principal
# Appel fonction --menu
if [[ "$1" == "-m" ]] || [[ "$1" == "--menu" ]]
then
option=$( zenity --list --radiolist --height=355 --width=515 \
    --title="Choix du mode de lancement" \
    --text="Choissez l'action à exécuter" \
    --column="" --column="" --column="action" \
    --separator=" " \
    --hide-column=2 \
    TRUE "" "Télécharger les émissions d'hier" \
    FALSE "date" "Télécharger des émissions antérieures à hier" \
    FALSE "alacarte" "Choisir exeptionnellement les émissions à télécharger aujourd'hui" \
    FALSE "config" "Modifier la configuration du script" \
    FALSE "lanceur" "Ajouter un lanceur au menu Applications > Son et Video" \
    FALSE "cron" "Automatiser l'exécution du script via cron" \
    FALSE "help" "Afficher l'aide et quitte" \
    FALSE "bug" "Déclarer un bug ( ou faire des remerciements ^^ )" \
    FALSE "about" "A propos du script / Todo list" )

if [[ $? == "1" ]]
then zenity --warning --title="Fin du script" --text="Le script à été arreté"
exit 0
fi

set -- "--$option"
if [[ "$1" == "--" ]]
then set --
fi
fi
##############################################




# Lancement du script avec une option :
# Appel fonction --help
if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]
then _help
fi
# Appel fonction --lanceur
if [[ "$1" == "-l" ]] || [[ "$1" == "--lanceur" ]]
then _lanceur
fi
# Appel fonction --config
if [[ "$1" == "-c" ]] || [[ "$1" == "--config" ]]
then _config
fi
# Appel fonction --bug
if [[ "$1" == "-b" ]] || [[ "$1" == "--bug" ]]
then _bug
fi
# Appel fonction --about
if [[ "$1" == "-?" ]] || [[ "$1" == "--about" ]]
then _about
fi
# Appel fonction --alacarte
if [[ "$1" == "-a" ]] || [[ "$1" == "--alacarte" ]]
then
set -- "--date"
alacarte="yes"
fi
# Appel fonction --cron
if [[ "$1" == "-cr" ]] || [[ "$1" == "--cron" ]]
then _cron
fi
##############################################











##############################################
# Début du script, changement de répertoire et création du répertoire Canal+
REP=$(head -1 .canal_config)
mkdir -p "$REP"/Canal+
cd "$REP"/Canal+

# Vérification de la date de téléchargement choisie
# Si le script est lancé avec l'option "date"
if [[ "$1" == "-d" ]] || [[ "$1" == "--date" ]]
then
date=$( zenity --calendar --date-format=%d/%m/%y --text="Choix de la date" )
	if ! [[ $? == "0" ]]
	then zenity --warning --title="Fin du script" --text="Le script à été arreté"
	exit 0
	fi

	if [[ "$date" == "`date +%d/%m/%y`" ]]
	then date=$( date +%d/%m/%y --date '1 days ago' )
	fi
# Sinon
else 
if [[ -z $1 ]]
then d="1"
else d=$1
fi
date=$( date +%d/%m/%y --date ''$d' days ago' )
fi

dd=${date:0:2}
mm=${date:3:2}
yy=${date:6:2}
date_us="$mm/$dd/$yy"
echo `color 1 "Téléchargement des émissions du $date en cours...
"`




# Définition du mode de fonctionnement
# Quotidien
if ( grep -q QUO "$parent_dir"/.canal_config )
then
	if [[ $(ls | grep $yy$mm$dd ) ]]
	then
	error=1
	else
	rm -f *.flv
	rm -f *-playlist.m3u
	fi
fi
# Historique par date de diffusion
if ( grep -q HIS "$parent_dir"/.canal_config )
then
folder=$( date +%Y-%m-%d -d $date_us )
	if [[ -d $folder ]]
	then
	error=1
	else
	mkdir -p $folder
	cd $folder
	fi
fi
# Historique par emission
if ( grep -q HEM "$parent_dir"/.canal_config )
then mode="HEM"
fi


# Fonction qui arrête le script si les émissions sont déja présentes
if [[ $error == "1" ]]
then
text="Les émissions du $date sont déja présente dans votre dossier Canal+
	
Pour néanmoins télécharger les vidéos, veuillez supprimer les vidéos existantes ou le dossier vidéo existant correspondant à la date désirée puis relancer le script"
display "Emissions déja présentes" "$text" "--warning"
exit 0
fi


# Détection de la qualité
if ( grep -q HIGH "$parent_dir"/.canal_config )
then
quality="H"
else
quality="L"
fi

# Détection du format de conversion
format=$( cat "$parent_dir"/.canal_config | grep "CONVERT=" | cut -f2 -d "=" )

# création de la playlist
echo "# http://vod-flash.canalplus.fr/" > $yy-$mm-$dd"-playlist.m3u"


# Choix des émissions si l'option "alacarte" est choisie
if [[ $alacarte == "yes" ]]
then
choix_emissions ".alacarte"
fi
##############################################















##############################################
# Fonction qui converti les vidéos aux formats avi, mkv, ogm, ipod, archos, iriver, meizu ou psp
function convert
{
mkdir -p PID
source="$1"
if [[ "$format" == "AVI" ]] || [[ "$format" == "ARCHOS" ]] || [[ "format" == "MEIZU" ]]
	then VIDEO="$(echo $VIDEO | sed -e 's/\.flv$/\.avi/')"
elif [[ "$format" == "MKV" ]]
	then VIDEO="$(echo $VIDEO | sed -e 's/.flv$/.mkv/')"
else VIDEO="$(echo $VIDEO | sed -e 's/.flv$/.mp4/')"
fi

case "$format" in
	AVI)
		mencoder "$source" -ovc xvid -xvidencopts fixed_quant=3 -oac mp3lame -lameopts cbr:preset=128 -o "$VIDEO" 2>/dev/null &
		;;
	MKV)
		mencoder "$source" -ovc xvid -xvidencopts fixed_quant=3 -oac mp3lame -lameopts cbr:preset=128 -o "$VIDEO" 2>/dev/null &
		;;
	IPOD)
		ffmpeg -y -i "$source" -vcodec mpeg4 -b 717000 -s 480x320 -aspect 16:9 -f mp4 -acodec aac "$VIDEO" 2>/dev/null &
		;;
	ARCHOS)
		mencoder "$source" -ovc xvid -xvidencopts fixed_quant=3 -vf scale=320:-2 -oac mp3lame -lameopts cbr:preset=128 -af volume=+5 -o "$VIDEO" 2>/dev/null &
		;;
	IRIVER)
		mencoder "$source" -ofps 15.000 -vf-add crop=0:0:-1:-1  -vf-add scale=320:240 -vf-add expand=320:240:-1:-1:1 -srate 44100 -ovc xvid -xvidencopts bitrate=380 -oac mp3lame -lameopts vbr=0  -lameopts br=128 -lameopts vol=0 -lameopts mode=0 -lameopts aq=7 -lameopts padding=3 -af volnorm -xvidencopts max_bframes=0:nogmc:noqpel -mc 0 -o "$VIDEO" 2>/dev/null &
		;;
	MEIZU)
		mencoder "$source" -idx -noodml -ofps 20 -vf scale=320:-2,expand=:240:::1,crop=320:240,rotate=1 -ovc lavc -ffourcc XVID -lavcopts vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -srate 44100 -oac mp3lame -lameopts cbr:br=128:mode=0 -o "$VIDEO" 2>/dev/null &
		;;
	PSP)
		ffmpeg -y -i "$source" -title "$VIDEO" -vcodec h264 -level 13 -g 250 -s 368x208 -r 29.97 -b 768 -acodec aac -ac 2 -ar 48000 -ab 128 "$VIDEO" 2>/dev/null &
		;;
esac
echo $! > "PID/`basename "$VIDEO"`.pid"
}











# Fonction qui regroupe les vidéos dans des dossier à leur nom
function copie
{
	mkdir -p "$1"	
	mv -f "$VIDEO" "$1"
	if ! [[ -z $VIDEO ]]
	then
	VIDEO="$1/$VIDEO"
	fi
}



# Fonction de téléchargement des émissions
function download
{
	get_http "$1"
	get_video "$2" "$3"
	if ! [[ -z $VIDEO ]]
	then
		if [[ $mode == "HEM" ]]
		then copie "$2"
		fi
		if ( grep -q "CONVERT" "$parent_dir"/.canal_config )
		then convert "$VIDEO"
		fi
	echo `pwd`"/$VIDEO" >> $yy-$mm-$dd"-playlist.m3u"
	fi
	unset VIDEO
	rm -f .menu_src_code
	rm -f .video_src_code
	unset video_id
}

# Fonction qui vérifie dans le fichier de config si la vidéo doit être téléchargée ou non, puis lance le téléchargement si nécessaire
function check
{
if [[ $alacarte == "yes" ]]
then if ( grep -q $1 .alacarte )
     then download "$2" "$3" "$4"
     fi
else
     if ( grep -q $1 "$parent_dir"/.canal_config )
     then download "$2" "$3" "$4"
     fi
fi
}


function check_2
{
day=$( date +%A -d $date_us )
date=$( echo $day | tr 'a-z' 'A-Z' )
	if [[ $date == "SAMEDI" ]] || [[ $date == "DIMANCHE" ]]
	then
	date="WEEK-END"
	fi
	if [[ $alacarte == "yes" ]] ; then
		if ( grep -q $1 .alacarte )
		then download "$2" "$3" "$4"
		fi
	else
		if ( grep -q $1 "$parent_dir"/.canal_config )
		then download "$2" "$3" "$4"
		fi
	fi
date="$dd/$mm/$yy"
}


# fonction qui récupère le code source de la page contenant la vidéo dans un fichier ".menu_src_code"
function get_http
{
	wget -q --save-cookies cookie.txt --keep-session-cookies $1 -O .menu_src_code 
	rm -f .menu_src_code 
	wget -q --load-cookies cookie.txt --keep-session-cookies $1 -O .menu_src_code
	rm -f cookie.txt	
}


# Fonction qui récupère le nom de la page de téléchargement de la vidéo dans le fichier ".video_src_code", récupère ensuite l'url direct de la vidéo, puis la télécharge
function get_video
{
	if [[ -z $2 ]]
	then 
	{
	aVideos=$( cat .menu_src_code | grep "$date"  | cut -f2 -d [ | cut -f1 -d ] ) # Majorité des émissions 
	if ! [[ -z $aVideos ]]
	then
	video_id=$( cat .menu_src_code | grep "aVideos\[$aVideos\]" | grep "CONTENT_ID" | cut -f2 -d '"' | head -n 1 )
	fi
	}
	else video_id=$( cat .menu_src_code | grep "$date" | grep chooseVideo | cut -f2 -d "'" | head -n 1 ) # Pepites sur le net, têtes à claques et meilleur du hier
	fi
	if [ -z "$aVideos" -a -z "$video_id" ]
	then
	i=$(( $i + 100/$n ))
	echo "$i % : L'émission '$1' n'a pu être téléchargée"
	echo "_$1" >> "$parent_dir"/.canal_log
	else
	{
	page="http://www.canalplus.fr/flash/xml/module/embed-video-player/embed-video-player.php?video_id=$video_id"
	wget -q -O .video_src_code "$page"
	url=$( cat .video_src_code | grep -o "http://[^ ]*$quality.flv" )
	wget $url
	i=$(( $i + 100/$n ))
	display "$i % : Fin du téléchargement de l'émission :" "$1" "--progression"
	VIDEO=$( echo $url | cut -c 31- | cut -f2 -d "/" )
	}
	fi
	set --
}
##############################################
















##############################################
# Initialisation des variables pour la barre de progression
i="0"
n=$( cat "$parent_dir"/.canal_config | head -4 | tail -1 | wc -w )


# Téléchargement des émissions :
function emissions
{
# Zapping
nom="le zapping"
url="http://www.canalplus.fr/index.php?pid=1830"
check ZAP "$url" "$nom"

# Petit Journal Actu
nom="le petit journal actu"
url="http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=608"
check PJA "$url" "$nom"

# Guignols
nom="les guignols de l'info"
url="http://www.canalplus.fr/index.php?pid=1784"
check GUI "$url" "$nom"

# Météo
nom="la météo de Louise Bourguoin"
url="http://www.canalplus.fr/index.php?pid=2028"
check MET "$url" "$nom"

# Petit Journal People
nom="le petit journal people"
url="http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613"
check PJP "$url" "$nom"

# Top 5
nom="le top 5 de Thomas Ngijol"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=1282"
check TOP "$url" "$nom"

# SAV des emissions
nom="le Service Après Vente des émissions"
url="http://www.canalplus.fr/index.php?pid=1782"
check SAV "$url" "$nom"

# Boite à questions
nom="la boite à questions"
url="http://www.canalplus.fr/index.php?pid=1786"
check BAQ "$url" "$nom"

# Revue de presse
nom="la revue de presse de Chris Esquerre"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=2582"
check RDP "$url" "$nom"

# Sebastien Tohen
nom="la chronique de Sebastien Tohen"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=2584"
check STO "$url" "$nom"

# L'avis de Mouloud
nom="l'avis de Mouloud"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=622"
check ADM "$url" "$nom"

# Le daily show
nom="le daily show"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=722"
check DSH "$url" "$nom"

# La chronique de Stephane Guillon
nom="la chronique de Stephane Guillon"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=682"
check SGU "$url" "$nom"

#Blakowski
nom="Les infos de blako"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=684"
check IDB "$url" "$nom"

#Le champion de l'actu
nom="Le champion de l'actu"
url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=688"
check CDA "$url" "$nom"

# Groland
nom="le Groland"
url="http://www.canalplus.fr/index.php?pid=1787"
check GRO "$url" "$nom"

# Tetes à claques
nom="les têtes à claques"
url="http://www.canalplus.fr/index.php?pid=2170"
check TAC "$url" "$nom" 42

# Pépites sur le net
nom="les pépites du net"
url="http://www.canalplus.fr/index.php?pid=1778"
check PEP "$url" "$nom" 42

# Le meilleur du hier
nom="le meilleur du hier"
url="http://www.canalplus.fr/index.php?pid=1831"
check_2 MDH "$url" "$nom" 42


#############################################
# Attente de la fin d'exécution des conversions si nécessaire
if ( grep -q "CONVERT" "$parent_dir"/.canal_config )
then
cd PID
	( while ( ls | grep ".pid" )
	do
	proc=$( ls -t | grep ".pid" | head -1)
	wait $( cat $proc )
	rm -f $proc
	done ) | zenity --progress --title="Conversion" --text="Conversion des vidéos en cours..." --auto-close --pulsate
cd ..
rmdir PID/
fi
#############################################
}

	if ( grep -q GTK "$parent_dir"/.canal_config )
	then
	emissions | zenity --progress \
	  --title="Téléchargement" \
	  --text="Téléchargement des émissions en cours..." \
	  --width=300 \
	  --auto-close \
	  --percentage=0
	else emissions
	fi
##############################################







# Déplacement de la playlist dans un dossier adapté si le script utilise une des options historique
play_dir="$REP"/Canal+/
if ! ( grep -q QUO "$parent_dir"/.canal_config )
then 
mkdir -p "$REP"/Canal+/playlists/
mv *-playlist.m3u "$REP"/Canal+/playlists/
play_dir="$REP"/Canal+/playlists/
fi




rm -f *.flv






##############################################
# Fin des téléchargement, affichage des logs, diffusion dans lecteur vidéo si demande exprimée par l'utilisateur (via fenetre Zenity) 
lecteur_video=$( cat "$parent_dir"/.canal_config | head -2 | tail -1 )
log=$(cat "$parent_dir"/.canal_log)

if ! [[ -z $log ]]
then
erreur="Les vidéos suivantes n'ont pas été diffusées ce jour là :"
fi

text="Les vidéos du $date ont été téléchargées
$erreur
$log

Voulez vous lancer la lecture dans $lecteur_video ?"
display "Fin du script" "$text" "--question"

if ( grep -q GTK "$parent_dir"/.canal_config )
then
	if [[ $? == "0" ]]
	then
	if [[ $lecteur_video == "mplayer" ]]
	then lecteur_video="$lecteur_video -playlist"
	fi
	nohup "$lecteur_video" "$play_dir"/$yy-$mm-$dd"-playlist.m3u" &
	fi
else
echo "Les vidéos du $date ont été téléchargées
$erreur
$log

La playlist est disponible dans $play_dir/$yy-$mm-$dd-playlist.m3u"
fi

rm -f "$parent_dir"/.canal_log
rm -f .alacarte
exit 0
##############################################







##############################################
# Astuces / Post it personnel
# Les liens direct vers les pages des émissions ont été trouvés sur les pages :
# http://www.canalplus.fr/processus/page/commun/xt_plus_de_rire.php?PAGE_ID=2053&ZONE_TEMPLATE_ID=3659 ## pour le contenu d'encore + de rire
# http://www.canalplus.fr//processus/page/commun/xt_plus_de_rire.php?PAGE_ID=2397&ZONE_TEMPLATE_ID=3659 ## pour le contenu du petit journal
# Pour retrouver les liens : aller sur la page de menu et chercher ZONE_TEMPLATE dans le code source ^^
# 
# Dans le code source de chacun des liens, on trouve un numéro, c'est le catID à rajouter à la fin du lien de la page générale. Par exemple pour le top5 :
# http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=1282

Si t'as des propositions esssai de les poster vite parce que je m'y remet demain matin donc ça va encore changer.
Tout en sachant que le problème actuel est la conversion à la fin de tous les téléchargements, le reste ne m'interesse pas pour le moment.

Sinon le meilleur moyen de tester c'est bash -x canal --alacarte wink
(je remercie encore celui qui m'a proposé cette option c'était une trop bonne idée big_smile)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#393 Le 14/06/2008, à 21:59

yurek

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Voici le script a ma sauce, plus clair , les indentations présentes, a ma sauce.

Sachant qu'en passant j'ai vu des truck affreux, je vais commencer le "développement" a partir de celle la et je suivrais les nouvelles version que tu fera.
Voir le code plus loins

Dernière modification par yurek (Le 17/06/2008, à 22:12)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#394 Le 15/06/2008, à 06:33

Ras&#039;

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Tu peux expliquer les changements ?
Parce que j'ai pas lu en détails détails mais à part commenter la partie conversions et reorganiser le tout je vois pas trop...


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#395 Le 15/06/2008, à 07:21

Alain.g

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

yurek a écrit :

Sachant qu'en passant j'ai vu des truck affreux,

d'après le peu que j'ai regardé, ce sont surtout les changements que tu as fais qui ont l'air affreux !

changer par exemple

if [[ "$1" == "-b" ]] || [[ "$1" == "--bug" ]]
then

par

if ([ "$1" = "-b" ]; || [ "$1" = "--bug" ]; then

c'est du n'importe quoi roll

Dernière modification par Alain.g (Le 15/06/2008, à 07:23)


Xubuntu Karmic !

Hors ligne

#396 Le 15/06/2008, à 07:35

Ras&#039;

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

tiens j'avais pas vu mais c'est vrai que...

EDIT : bon ben j'ai trouvé une solution, pas propre certes mais bon...
Je m'attaque au rangement ^^

Dernière modification par Ras' (Le 15/06/2008, à 07:56)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#397 Le 15/06/2008, à 10:17

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

T'a trouvé pourquoi le script restait "bloqué" sur la conversion?

Dernière modification par redisded (Le 15/06/2008, à 10:19)

Hors ligne

#398 Le 15/06/2008, à 10:26

Ras&#039;

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Je comprend pas du tout pourquoi le script ne sort pas de la fonction emissions alors que les conversions sont lancées en arrière plan non...

Maintenant le script affiche une barre zenity --pulsate le temps de la fin de la conversion.
je sais quand la conversion est finie grâce à un top -n 1 | grep $pid
wait $pid ne veux pas car 'le processus n'a pas été lancé dans ce terminal' ... j'ai galéré un petit moment la dessus...

Je commence à clarifier le code wink


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#399 Le 15/06/2008, à 10:29

redisded

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

Bizarre c'est ce que j'ai utilisé pour un autre script et j'ai pas le pb... pourtant je "wait" bien un processus lancée par une fonction du script aussi...

Hors ligne

#400 Le 15/06/2008, à 10:29

Ras&#039;

Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+

si tu t'ennuie tu pourra chercher pourquoi ^^
EDIT : ahhhh
J'ai peut être trouvé pourquoi

je verrais ça plus tard wink

Dernière modification par Ras' (Le 15/06/2008, à 10:30)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne