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.

#426 Le 16/06/2008, à 13:50

MulX

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

Encore mieux, ça fait comme dans FF ou totem si tu n'as pas le(s) plugin(s) qui va bien (gstreamer, flash, java ...) mais je ne retrouve plus comment ça fonctionne.
Avec adept c'est simple : adept_batch mais la sur un pc sous windows et un serveur solaris c'est un peu rude de trouver la commande hmm

EDIT :  De mémoire faut lancer un script python avec les paquets a installer en paramètre.

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


Tchous, MulX. -- PlayOnLinux :) -- Gopherspace !   -- 6 * 9 = 42 (si si) --  Humph? -- Follow me!

Hors ligne

#427 Le 16/06/2008, à 13:54

redisded

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

C'est ce que j'ai éssayé de voir mais rien dans le man a ce niveau la...
sinon si tu demande a l'user de relancer le script avec sudo  et une option --dependances exeptionellement pour l'install des dépendances?

EDIT : re-dsl, je repondais a l'avant dernier post roll

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

Hors ligne

#428 Le 16/06/2008, à 15:43

Ras'

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

la dernière solution m'est venue à l'esprit tout à l'heure, à vouloir trop faire dans l'user friendly je me prend la tête pour rien du tout.
Y'a aussi le fait que je ne voulais installer que les dépendances nécessaires.

Tant pis je met une option dépendances qui installe toutes les dépendances utiles, à lancer en sudo, si on trouve mieux on me fait signe.


Je retourne nettoyer un peu et je poste ça en fin d'après midi.


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

#429 Le 16/06/2008, à 15:48

redisded

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

au pire tu demande a l'user les dependances qu'il souhaite selon le format choisi (je pense que l'user moyen, si il utilise la conversion, il va surtout se servir d'un seul type.) Donc un pti zenity --list dans la fonction dépendances qui listes les dépendances et les formats correspondants et l'user n'installe que les dependances necessaires à son ou ses format de conversion.

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

Hors ligne

#430 Le 16/06/2008, à 19:15

Ras'

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

Bon, avec le déménagement et tout j'ai pas trop le temps de m'en occuper de suite...
j'ai voulu faire une release avant test mais ça marche tellement pas que j'ai honte de la poster, donc on verra plus tard.
Deux jours à Stockholm puis retour famille tout ça donc je risque de pas trop avoir le temps d'y toucher d'ici lundi prochain. Mais j'essairais d'y jeter un oeil parce que je suis pas loin du but, c'est plus que des petits bugs normalement, mais j'ai mal à la tête là ^^


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

#431 Le 17/06/2008, à 06:32

Ras'

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

Me revoila \o/
Petite insomnie matinale (soleil levé à 3h30 et pas de rideaux...) du coup je me suis remis un peu dedans et j'ai corrigé deux trois bourdes smile


Donc normalement le script est fonctionnel même si j'ai pas eu le temps de tout tester.
Comme je disais j'ai enlevé la fonction vérification si l'émission existe parce que ça fait chier ^^ (canal diffuse des émissions du jour J sous le nom J+1 de temps en temps, et du coup ça fout le bordel)

Par contre j'ai rajouté les pépites du net qui n'avaient finalement jamais marché.
C'est une fonction spéciale, codée à l'arrache mais fonctionnelle, je verrais plus tard pour son intégration.

Sinon si vous voulez essayer, en graphique et en console, l'installation des dépendances and co aussi ^^



Dites moi surtout si :
_y'a des bugs
_y'a des fautes d'orthographes
_y'a des trucs que vous auriez vu différemment
_vous auriez aimé plus de commentaires sur certaines parties
_vous avez quelque chose à dire ^^

Merci pour l'aide que vous m'apportez smile

#!/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
#

version=v1.304
todo="
Aucune c'est affreux ! Oo'

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

############################################## Fonctions basiques ############################################
# Fonction qui permet l'affichage en couleur dans le terminal
color()
{
printf '\033[%sm%s\033[m\n' "$@"
}

# Fonction qui quitte le script lorsqu'on clique sur annuler dans zenity
annuler ()
{
if [[ $? == "1" ]]
then exit 0
fi
}
##############################################################################################################




################################################### Display ##################################################
# Fonction qui permet l'affichage via zenity ou bien dans le terminal
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
}
##############################################################################################################




############################################### Dossier source ###############################################
# Définition de $parent_dir, dossier ou le script et le fichier .canal_config sont enregistrés
parent_dir=$( dirname "$0" )
if [[ "$parent_dir" == "." ]]
then parent_dir=$( pwd )
fi
cd $parent_dir
##############################################################################################################




################################################# Dépendances ################################################
# Fonction qui installe automatiquement les dépendances nécessaires aux diverses conversions
function dependances
{
if [[ !  `which ffmpeg` ]]; then dependances="ffmpeg"
elif [[ !  `which faac` ]]; then dependances="$dependances faac"
elif [[ !  `which libfaac0` ]]; then dependances="$dependances libfaac0"
elif [[ !  `which ffmpeg2theora` ]]; then dependances="$dependances ffmpeg2theora"
elif [[ !  `which mencoder` ]]; then dependances="$dependances mencoder"
fi

if ! [[ -z $dependances ]]
then
echo "Ajout du dépot medibuntu dans /etc/apt/sources.list.d/medibuntu.list"
echo "deb http://fr.packages.medibuntu.org/ hardy free non-free" >> medibuntu.list
sudo cp -f medibuntu.list /etc/apt/sources.list.d/

echo "Mise à jour de la liste des paquets (apt-get update)"
sudo apt-get update

echo "Installation des dépendances, les paquets suivants seront installés :
$dependances"
sudo apt-get install $dependances
echo "Toutes les dépendances sont désormais installées.
Vous pouvez désormais convertir vos vidéos"
fi
}
##############################################################################################################




########################################## Function Mise à jour auto ##########################################
# Mise à jour automatique du script si la version présente sur le net n'est pas la même que celle ci
# Vérification de la connection internet par la même occasion
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="oui"
		fi

		annuler
	else
		echo "$text"
		read -p "Tapez oui pour installer la nouvelle version : " maj
	fi

	if [[ $maj == "oui" ]]
	then
		echo "Mise à jour du script en cours..."
		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
cd "$parent_dir"
}
###############################################################################################################





####################################################### Help ##################################################
# 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

-d, --date     Ouvre un calendrier Zenity pour choisir la date

-a, --alacarte Choisir exeptionnellement les émissions
               (sans changer la configuration)

-l, --lanceur  Rajoute 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
               Pour les rapports de bug

-h, --help     Affiche cette aide et quitte

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

-dep,          Installation des dépendances
--dependances  (nécessite d'être root)

Installation manuelle des dépendances (pour la conversion) :

_Ajouter la source mediubuntu :
	echo 'deb http://fr.packages.medibuntu.org/ hardy free non-free' >> medibuntu.list
	sudo cp -f medibuntu.list /etc/apt/sources.list.d/
_Mettre à jour de la liste des paquets
	sudo apt-get update
_Installer les paquets suivants :
	ffmpeg faac libfaac0 # Ipod et PSP
	ffmpeg ffmpeg2theora # mkv
	mencoder # avi, Archos, Creative Zen, Iriver et Meizu"
display "Menu Help" "$help" "--info"
exit 0
}
###############################################################################################################




################################################# Menu Son et Vidéo ############################################
# 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"

if ( grep -q GTK "$parent_dir"/.canal_config )
then gksudo 'mv -f canal.desktop /usr/share/applications/'
else sudo 'mv -f canal.desktop /usr/share/applications/'
fi

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
}
################################################################################################################



################################################### Configuration ##############################################
##############################################
# Externalisation des fonctions "choix des émissions" et "true/false" de la configuration pour pouvoir fonctionner avec l'option "alacarte"
# true_false : 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
}


# choix_emissions : fonction écrivant une abreviation du nom des émissions choisies dans le fichier .canal_config
function choix_emissions
{
zenity --list --checklist --height=570 --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 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
}
##############################################




##############################################
# Début de la configuration, le script est arrêté à la fin de la création du fichier .canal_config
function _config
{
cd "$parent_dir"
mv .canal_config .canal_config.bak &>/dev/null
echo "Configuration en cours..."


##############################################
# Vérification de la présence de zenity, installation si nécessaire
if [[ !  `which zenity` ]]
then gksudo -m "Veuillez entrer votre mot de passe pour installer Zenity et continuer l'installation en graphique. Sinon cliquez sur annuler." "apt-get install -y zenity"
fi


##############################################
# Choix du répertoire de téléchargement parent, un sous répertoire Canal+ est ensuite créé
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 lecteur vidéo : vlc, totem ou mplayer
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 : quotidien, historique par date ou historique par émission
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, utilisation de la fonction choix_emissions
choix_emissions ".canal_config"


##############################################
# Choix de la qualité des vidéos : high ou low
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, conversion des vidéos dans différents formats (lisibles par différents lecteur mp3/vidéo)
choix=$( zenity --list --list --radiolist --height=350 --width=585\
    --title="Configuration en cours... 6/7" \
    --text="Le script permet de convertir les vidéos dans d'autres format que l'original (.flv)
Cette opération n'est réellement utile que si vous désirez lire les vidéos sur un lecteur vidéo portable.
Choisissez 'Aucune conversion' si vous ne désirez pas convertir les vidéos."\
    --column="" --column="" --column="Format de conversion" \
    --hide-column=2 \
    --separator=" " \
    `true_false FLV` FLV "Aucune conversion"\
    `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 "\ )
echo "CONVERT=$choix" >> .canal_config
if ! [[ $choix == "FLV" ]] 
then
zenity --info --title="Configuration en cours... 6/7" \
    --text="Des dépendances sont nécessaires pour cette conversion.
Pour les installer automatiquement, ouvrez un terminal et tapez :

cd `pwd`
sudo ./canal --dependances

Sinon regardez dans l'aide les dépendances nécessaires pour les installer manuellement"
fi




##############################################
# Choix du mode d'utilisation graphique ou console, en graphique, Zenity affiche des barres de progression
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
}
################################################################################################################




########################################## Planification de tache via cron #####################################
# Ajout d'une entrée dans crontab
function _cron
{
grep -q CRON .canal_config >> /dev/null 2>&1
if (test $? -eq 1)
then for days in `seq 1 7`
	do
	var[days]="TRUE"
	done
fi

if ( grep -q CRON "$parent_dir"/.canal_config )
then
	zenity --question --text="Une tâche est déjà planifiée. Voulez-vous la supprimer ou la modifier ? 

( 'Valider' pour la supprimer ; 'Annuler' pour la modifier )"
	if [[ $? == "0" ]]
	then 
	        crontab -l >> tempcrontab
	        sed -i '/canal/d' tempcrontab
	        crontab tempcrontab
	        rm tempcrontab
	        sed -i '/CRON/d' "$parent_dir"/.canal_config
		zenity --info --text="Tâche supprimée"
        	exit
        	annuler
	else 
		crontab -l | grep canal | awk -F'*' '{print $3}' >> tempcrontab
		for days in `seq 1 7`;
		do
			if ( grep -q $days tempcrontab )
			then var[days]="TRUE"
			else var[days]="FALSE"
			fi
		done
		rm tempcrontab
		annuler
	fi
fi

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" \
    ${var[1]}  "1" "lundi" \
    ${var[2]}  "2" "mardi" \
    ${var[3]}  "3" "mercredi" \
    ${var[4]}  "4" "jeudi" \
    ${var[5]}  "5" "vendredi" \
    ${var[6]}  "6" "samedi" \
    ${var[7]}  "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
sed -i '/CRON/d' "$parent_dir"/.canal_config
echo CRON >> .canal_config
exit
}
################################################################################################################




################################################## Rapport de bug ##############################################
# 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
}
################################################################################################################




####################################################### About ###################################################
# 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
}
#################################################################################################################




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




#################################################### Conversion #################################################
# Fonction qui converti les vidéos aux formats avi, mkv, ogm, ipod, archos, iriver, meizu ou psp
function convert
{
mkdir -p PID
source="$1"
# Creation du nom pour le fichier vidéo de sortie
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"
echo "$REP/Canal+/$source" >> ".PID/`basename "$VIDEO"`.pid"
}
#################################################################################################################




###################################################### Get http #################################################
# 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	
}
#################################################################################################################




###################################################### Get video ################################################
# Fonction qui récupère l'url 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
{
# Récupération de l'url de la page de téléhargement de la vidéo
	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

# Si video_id manque c'est que l'émission n'a pas été diffusée
	if [[ -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
# Si video_id existe, l'url direct de la video est trouvé sur la page et la vidéo est téléchargée
	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 -c $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 --
}
#################################################################################################################




##################################################### Download ##################################################
# Fonction de téléchargement des émissions, lance le téléchargement de la fonctione de téléchargement de page puis de celle de téléchargement de la vidéo
# Copie puis converti les vidéos si nécessaire. Ajoute enfin la vidéo dans la playlist 
function download
{
if [[ $emission = "PEP" ]]
then pepites
else
	get_http "$1"
	get_video "$2" "$3"
fi
	if ! [[ -z $VIDEO ]]
	then
		if [[ $mode == "HEM" ]]
		then copie "$2"
		fi
		if ! [[ $format == "FLV" ]]
		then convert "$VIDEO"
		fi
	echo `pwd`"/$VIDEO" >> $yy-$mm-$dd"-playlist.m3u"
	fi
	unset VIDEO
	unset video_id
	unset aVideos
	rm -f .menu_src_code
	rm -f .video_src_code
}
#################################################################################################################





function pepites
{
wget -q -O .menu_src_code "http://www.canalplus.fr/processus/page/commun/xt_mea_trombi.php?page_id=1778&zone_template_id=3329&langue_id=1"
code_video=$( cat .menu_src_code | grep -o "PEPITES_SUR_LE_NET_EMISSION_"$yy$mm$dd"_CAN_[0-9]*_" )
if ! [[ -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
		code_video=$( echo "$code_video""video_""$quality.flv" )
		url="http://vod-flash.canalplus.fr/$code_video"
		wget -c $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 --
}





##################################################### Emissions #################################################
# Appel de la fonction de téléchargement adaptée pour chaque émission
function emissions
{
case "$1" in
	ZAP)
		# Zapping
		nom="le zapping"
		url="http://www.canalplus.fr/index.php?pid=1830"
		download "$url" "$nom"
		;;
	PJA)
		# Petit Journal Actu
		nom="le petit journal actu"
		url="http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=608"
		download "$url" "$nom"
		;;
	GUI)
		# Guignols
		nom="les guignols de l'info"
		url="http://www.canalplus.fr/index.php?pid=1784"
		download "$url" "$nom"
		;;
	MET)
		# Météo
		nom="la météo de Louise Bourguoin"
		url="http://www.canalplus.fr/index.php?pid=2028"
		download "$url" "$nom"
		;;
	PJP)
		# Petit Journal People
		nom="le petit journal people"
		url="http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613"
		download "$url" "$nom"
		;;
	SAV)
		# SAV des emissions
		nom="le Service Après Vente des émissions"
		url="http://www.canalplus.fr/index.php?pid=1782"
		download "$url" "$nom"
		;;
	BAQ)
		# Boite à questions
		nom="la boite à questions"
		url="http://www.canalplus.fr/index.php?pid=1786"
		download "$url" "$nom"
		;;
	RDP)
		# 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"
		download "$url" "$nom"
		;;
	STO)
		# Sebastien Tohen
		nom="la chronique de Sebastien Tohen"
		url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=2584"
		download "$url" "$nom"
		;;
	ADM)
		# L'avis de Mouloud
		nom="l'avis de Mouloud"
		url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=622"
		download "$url" "$nom"
		;;
	DSH)
		# Le daily show
		nom="le daily show"
		url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=722"
		download "$url" "$nom"
		;;
	SGU)
		# 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"
		download "$url" "$nom"
		;;
	IDB)
		#Blakowski
		nom="Les infos de blako"
		url="http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=684"
		download "$url" "$nom"
		;;
	CDA)
		#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"
		download "$url" "$nom"
		;;
	GRO)
		# Groland
		nom="le Groland"
		url="http://www.canalplus.fr/index.php?pid=1787"
		download "$url" "$nom"
		;;
	TAC)
		# Tetes à claques
		nom="les têtes à claques"
		url="http://www.canalplus.fr/index.php?pid=2170"
		download "$url" "$nom" 42
		;;
	PEP)
		# Pépites sur le net
		nom="les pépites du net"
		url="http://www.canalplus.fr/index.php?pid=1778"
		download "$url" "$nom" 42
		;;
	MDH)
		# Le meilleur du hier, changement de la date pour correspondre au format de date du site de canal
		nom="le meilleur du hier"
		url="http://www.canalplus.fr/index.php?pid=1831"
		day=$( date +%A -d $date_us )
		date=$( echo $day | tr 'a-z' 'A-Z' )
			if [[ $date == "SAMEDI" ]] || [[ $date == "DIMANCHE" ]]
			then date="WEEK-END"
			fi

		download "$url" "$nom" 42
		date="$dd/$mm/$yy"
		;;
esac
}
#################################################################################################################








################################################## Début du script ##############################################




#############################################
# Creation du fichier log et définition du dossier parent (ou est rangé le script)
touch .canal_log
clear


##############################################
# Lancement de la vérification de mise à jour éventuelle
maj_auto | zenity --progress --pulsate --auto-close title="Demarrage" --text="Verification des mises à jour en cours..."


##############################################
# 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 et relancez le script.
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"
	if ( grep -q GTK "$parent_dir"/.canal_config )
	then _config
	fi
fi






################################################### Menu Principal ##############################################
# Choix via une fenetre zenity de mode de fonctionnement du script
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
#################################################################################################################




################################################## Appel de fonction ############################################
# Appel de la fonction demandé par l'argument d'appel du script, le menu, ou une exeption (fichier de config inexistant)
# 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
# Appel fonction --dependances
if [[ "$1" == "-dep" ]] || [[ "$1" == "--dependances" ]]
then dependances
fi
#################################################################################################################







############################################# Définition des préférences ########################################
#############################################
# Changement de répertoire vers celui choisi lors de la configuration, création du sous 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 ou --alacarte, choix de la date dans un calendrier Zenity 
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
# Si la date est la date du jour, la date de la veille est choisie
	if [[ "$date" == "`date +%d/%m/%y`" ]]
	then date=$( date +%d/%m/%y --date '1 days ago' )
	fi
# Si le script n'est pas lancé avec l'option date, le script télécharge les vidéos de $1 days ago, ou de la veille si $1 n'est pas précisé lors de l'appel du script
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 téléchargement, quotidien, historique par date de diffusion ou historique par émission
# 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 émission
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é : High ou Low
if ( grep -q HIGH "$parent_dir"/.canal_config )
then quality="H"
else quality="L"
fi


#############################################
# Détection du format de conversion si nécessaire
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"


#############################################
# Liste des diminutifs des émissions à télécharger
emissions_wanted=$( cat "$parent_dir"/.canal_config | head -4 | tail -1 )


#############################################
# Choix des émissions si l'option "alacarte" est choisie et modification de l'incrémentation de la barre de progression en conséquent
if [[ $alacarte == "yes" ]]
then
choix_emissions ".alacarte"
emissions_wanted=$( cat .alacarte )
fi


##############################################
# Initialisation des variables pour la barre de progression en fonctionnement graphique
i="0"
n=$( echo "$emissions_wanted" | wc -w )


#################################################################################################################






############################################ Téléchargement des émissions #######################################
# Lancement de la fonction de téléchargement des émissions
IFS=' ';
	if ( grep -q GTK "$parent_dir"/.canal_config )
	then 
	( for emission in $emissions_wanted
	  do
	  emissions $emission
	  done ) | zenity --progress \
	  --title="Téléchargement" \
	  --text="Téléchargement des émissions en cours..." \
	  --width=300 \
	  --auto-close \
	  --percentage=0
	else
		for emission in $emissions_wanted
		do
		emissions $emission
		done
	fi
IFS='\n';
#################################################################################################################



if ! [[ $format == "FLV" ]]
then
	cd .PID/
	( while ( ls | grep ".pid" )
	do
	proc=$( ls -rt | grep ".pid" | head -1 )
		while ! ( top -n 1 | grep `cat $proc | head -1` )
		do sleep 2
		done
	video_source=$( cat $proc | tail -1 )
	find "$video_source" -exec rm -f '{}' \;
	rm -f $proc
	done ) | zenity --progress --title="Conversion" --text="Conversion des vidéos en cours..." --auto-close --pulsate
	cd ..
	rmdir .PID/
fi






############################################# Déplacement de la playlist ########################################
# 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
#################################################################################################################








################################# Affichage des logs, ouverture de la playlist ##################################
# 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

"

if ( grep -q GTK "$parent_dir"/.canal_config )
then
	text2="Voulez vous lancer la lecture dans $lecteur_video ?"
	display "Fin du script" "$text$text2" "--question"
	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
	text2="La playlist est disponible dans $play_dir/$yy-$mm-$dd-playlist.m3u"
	echo "$text$text2"
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

C'est pas tout j'ai un bus moi ^^
Adiou !


EDIT : j'ai laissé le numéro de version à 1.304 comme ça quand on le lance il n'essai pas de se mettre à jour sur le serveur wink

Je mettrais la version sur le serveur quand elle sera sortable sans bug ni fautes wink

Dernière modification par Ras' (Le 17/06/2008, à 06: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

#432 Le 17/06/2008, à 13:09

redisded

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

redisded a écrit :

euh si je peu me permettre une tite question, je n'arrive pas à comprendre pourquoi le script attend la fin des conversions alors qu'elle sont lancée avec & à la fin, si tu peut m'éclairer sur ce point...

Sinon, vu que je n'ai pas la réponse au point précedent, je vais peut-etre répondre à coté mais pour le script des emissions de france 5 que je suis en train d'écrire, je lance la fonction de chaque emissions sauf la derniere séléctionné avec & a la fin.Dans chaque fonction, les telechargements sont également lancé avec & à la fin et en notant leur pid dans un fichier (echo $! >fichier.pid); puis, juste apres dans la meme fonction, un "wait $(cat fichier.pid)".
De cette maniere, chaque fonction telecharge ses emissions une à une en créant un fichier pid dans le rep de configuration et l'efface un fois terminée.

Le problème était que si la derniere des fonctions lancées se terminait avant les autres, le script prenait fin alors que des emissions etaient encore en cours de telechargement.

j'ai donc ajouté ensuite à la fin du script (apres l'execution des differentes fonctions correspondants chacune à une emission) une boucle de ce type :

while ls "$confrep" | grep -q ".pid" ; do
	wait $(cat $(ls -lt $confrep/*.pid | head -1 | cut -d " " -f 8))  
done

en clair au cas ou ca ne le serait pas :
tant qu'un fichier avec l'extension pid existe dans le rep de conf, attendre la fin de l'execution du premier pid de la liste. De cette manière, le script attend que toutes les emissions soit terminées pour s'arreter.

Peut-etre qu'en utilisant un systeme de ce genre, tu pourrait, un fois que tout les telechargements sont terminés, afficher un barre zenity avec l'option pulsate (oué je sais c'est pas le top sad ) qui indique à l'utilisateur que des conversions sont toujours en cours.

Bon je sais que vu que j'ai pas totalement compris la problematique j'ai peut etre répondu à coté mais si ca peut avoir fait avancer un peu le schmilblik... wink

p.s: Surtout qu'après relecture, je me demande si quelq'un d'autre que moi peut comprendre ce que je viens d'écrire roll

Bon alors en fait je viens de me rendre compte que je rencontrais la meme erreur que toi avec mon script roll

Il telecharge tellement d'emissions que ca me donne des fichiers log indigestes et j'étais passé à coté de ca.

En fait ca fonctionne quand meme puisque le fichier log indique en boucle le mess d'erreur tant que le fichier .pid n'est pas éffacé, puis le script reprend son cours des qu'il n'existe plus aucun fichiers pid; Bon je te l'accorde, c'est pas terrible.
mais j'ai peut etre trouvé une soluce pour un autre script :

Je lance les dl de cette maniere :

for i in $choix ; do # $i correspond à une emission
	DOWNLOAD $i && rm -f "$confrep/$i.pid" & echo $! >$confrep/$i.pid 
done

Bon je sais c'est un peu bizzare mais de cette manière, le script lance la fonction DOWNLOAD sur l'emission et efface le fichier pid apres l'opération terminée; en fait, c'est la suppression du fichier je pense qui est lancé en tache de fond et dont le pid est noté dans le fichier. Donc je ne vois jamais le pid apparaitre dans le resultat de la commande top (trop rapide je pense) mais le script attend bien la fin de chaque pid grace à cette boucle placée juste apres :

while ls "$confrep" | grep -q ".pid" ; do
pid=$(cat $(ls -lt $confrep/*.pid | tr -s " " | cut -d " " -f 8 | head -1))
wait $pid
done

D'ailleurs, il manquait un :

| tr -s " " |

dans mon premier post ce qui posait pb avec la sortie du ls.

Voila bon je me doute que tu ne dois plus etre la dessus maintenant mais au cas ou tu n'ai pas encore de soluce qui te convienne pour ce pb je pense que ca peut etre pas trop mal.

Par contre,si tu tue le process en fermant la fentre zenity le script ne sort pas de la boucle puisque le rm ne se fait pas.

Hors ligne

#433 Le 17/06/2008, à 22:28

yurek

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

C'est possible d'avoir vos fonctions les plus importants pour les téléchargements ?

Héé ooohhh, j'inaugure ma version 3 : nouveauté par rapport a celui de ras voir ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=1857239#p1857239

PS: Je tiens a remercier ras car sans lui j'aurais jamais pu faire ce genre de script, de plus j'ai appris des choses sur les pages webs et les cookies.

Ras si tu m'entends, les pépites du net et ceux qui ont des truck en plus pour le téléchargement ne fonctionne toujours pas meme avec ton code.

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


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

#434 Le 18/06/2008, à 17:28

Ras'

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

yurek a écrit :

C'est possible d'avoir vos fonctions les plus importants pour les téléchargements ?

Qu'entends tu par là ?

yurek a écrit :

éé ooohhh, j'inaugure ma version 3 : nouveauté par rapport a celui de ras voir ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=1857239#p1857239

J'ai la flemme de lire ton script, en tout as ça me dérange pas que tu fasse un fork mais fais attention à la fonction maj_auto qui met à jour sur mon serveur wink


yurek a écrit :

PS: Je tiens a remercier ras car sans lui j'aurais jamais pu faire ce genre de script, de plus j'ai appris des choses sur les pages webs et les cookies.

t'as lu le gros résumé de e que j'ai moi même appris en fait wink
Enfin de rien smile

yurek a écrit :

Ras si tu m'entends, les pépites du net et ceux qui ont des truck en plus pour le téléchargement ne fonctionne toujours pas meme avec ton code.

J'ai testé les pépites sur un seul jour, c'est possible qu'en fait ça ne marche pas...
Par contre qu'entends tu par "ceux qui ont des trucs en plus ?"


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

#435 Le 18/06/2008, à 19:05

yurek

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

dans mon script je n'appelle pas la fonction mise a jour car je l'ai legerement modifié, ton script télécharge tout le script, le mien fonctionne comme un depot, il télécharge un simple fichier texte contenant la version et les améliorations, en faite c'est une proposition d'amélioration car tu ne fais que télécharger milles lignes pour rien  ( eh oui! ca compte )

Dernière modification par yurek (Le 18/06/2008, à 19:06)


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

#436 Le 19/06/2008, à 23:21

Ras'

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

C'est un truc auquel j'avais pensé et que j'ai oublié, mais je le ferais à la prochaine version wink

Pour les autres questions ?


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

#437 Le 20/06/2008, à 11:30

yurek

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

Oui pour les vidéos pépites du net et ceux où la méthode de téléchargement est différente, y'aurait il pas moyen de trouvé plus simple, moins bidouillage ? je me demande pourquoi ces page sont différentes !


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

#438 Le 20/06/2008, à 12:27

Ras'

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

Ben analyse le code mon petit ^^
D'ailleurs je voulais dire ça pour rigoler mais à vrai dire je me rapelle plus trop moi même, faudrait que je me replonge dedans et là de suite j'ai plutôt la flemme et plutôt envie de profiter de mes vacances ^^

Pour les pépites du net c'est expliqué plus haut
Pour les autres, en gros la différence c'est que la date nous donne une variable nommée aVideo, avec laquelle on trouve le video_id, alors que pour les émissions 42 on peut trouver le video_id directement sur la même ligne que la date.
Moi je trouve pas ça si bidouillage par rapport au site.

Y'a juste la fonction pépites qui arrive comme un cheveux sur la soupe mais je m'en occuperais plus tard.


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

#439 Le 20/06/2008, à 16:03

josian

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

Bonjour,
Je viens de découvrir et je commence à apprécier.
Toutefois.... j'ai un petit problème :
Après chargement OK, au lancement du lecteur vidéo ( Ici VLC), j'ai le message
nohup:appending output to 'nohup.out'
Le fichier téléchargé est OK et bien lu par VLC en 'externe'
Où est mon erreur ?


W XP et UBUNTU 10.04
  AMD 64 3000+ ATI HD 4650
FREEBOX V5  NIKON D70 Sony Ericsson W595s

Hors ligne

#440 Le 20/06/2008, à 17:49

chaoswizard

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

Sinon, il pourrait y avoir un truc intéressant à faire : renommer les fichiers téléchargés pour ne pas avoir un nom barbare du genre
ZAPPING_EMISSION_080614_CAN_34738_video_H
mais plutôt
Zapping du 14 juin 2008

Dernière modification par chaoswizard (Le 20/06/2008, à 17:49)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#441 Le 20/06/2008, à 19:04

cedric84

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

chaoswizard a écrit :

Sinon, il pourrait y avoir un truc intéressant à faire : renommer les fichiers téléchargés pour ne pas avoir un nom barbare du genre
ZAPPING_EMISSION_080614_CAN_34738_video_H
mais plutôt
Zapping du 14 juin 2008

+1 pour l'idée....


A Abandonné Win$ en Aout 2007 ! Sous ubuntu depuis Feisty.
Actuellement sous Natty ! Acer extensa 7620.

Hors ligne

#442 Le 21/06/2008, à 10:20

Ras'

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

oui c'est pas con et pas dur à faire, à vrai dire je sais même pas pourquoi j'y ai pas pensé avant ><'

Sinon josian tu ne fais rien de mal, en fait je lance le lecteur vidéo avec l'option nohup qui sert d'aileurs à rien et que je vais enlever. A la base c'est pour lancer le lecteur en tache de fond et libérer le terminal, sauf que la commande c'est pas nohup et je suis juste un boulay big_smile

Enfin si tu ne veux pas voir tous les messages, fais toi un raccourci pour le script 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

#443 Le 22/06/2008, à 11:21

josian

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

J'ai constaté que les répertoires avec caractères diacritiques posent problème au moins à VLC, le chemin transmis est erroné  et donc non reconnu.
Pour s'en convaincre : cliker sur un des fichiers contenu dans un répertoire tel que" vidéos" et demander sa lecture par vlc = le chemin est incorrectement transmis, le fichier n'est pas lu ; on peut toutefois utiliser ouvrir fichier, etc..


W XP et UBUNTU 10.04
  AMD 64 3000+ ATI HD 4650
FREEBOX V5  NIKON D70 Sony Ericsson W595s

Hors ligne

#444 Le 22/06/2008, à 22:53

yurek

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

Les espace étant pas trop conseiller je propose :
Zapping_du_14_juin_2008

Je mettrais ca dans mon script la prochaine fois.

Dernière modification par yurek (Le 22/06/2008, à 22: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

#445 Le 23/06/2008, à 15:52

josian

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

Pour compléter mon propos :
Dans un premier temps j'ai utilisé le répertoire "vidéos", impossible de lancer automatiquement la lecture après chargement.
J'ai créé un nouveau répertoire "mes_videos", cette fois c'est OK.
Une remarque, lorsque je lance Canal sur une journée sans enregistrement, l'indicateur de téléchargement fonctionne ( très rapidement il est vrai ) et le lecteur est lancé ... dans le vide.


W XP et UBUNTU 10.04
  AMD 64 3000+ ATI HD 4650
FREEBOX V5  NIKON D70 Sony Ericsson W595s

Hors ligne

#446 Le 23/06/2008, à 16:39

Ras&#039;

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

ah si ya aucune émissions le lecteur se lance quand même, c'est pas faux, vu que j'en télécharge beaucoup en général y'en a toujours une et du coup j'ai jamais vu le bug ^^
Je ferais ça, la casse et le renommage la prochaine fois, j'ai encore pas mal de truc à faire cette semaine... Désolé pour la lenteur des mises à jour :\

Pour compléter mon propos, le script avance de 100/n % (n=nb d'émissions que t'as choisi de dl) à chaque fois qu'il traite une émission. Donc si elle se télécharge l'avancement de la tranche de n% se fera lentement, et si l'émission n'est pas diffusé il avance vite ces n% là. Et avec ça si tu connais bien l'ordre des émissions tu peux même savoir quelle émission est diffusée ou non en regardant la barre de progression lol

Dernière modification par Ras' (Le 23/06/2008, à 16:50)


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

#447 Le 23/06/2008, à 23:17

yurek

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

salut en attendant que ras mettent a jour son script, tu peux tester le mien j'ai ajouter ce que tu demandais, et je peux pas tester moi même.

Dernière modification par yurek (Le 25/06/2008, à 19:50)


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

#448 Le 23/06/2008, à 23:30

cedlerick

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

salut @ tous, j'ai découvert se petit script bien sympa il y a qq jours
j'aurais une petite suggestion d'amélioration
lors de la conversion d'une video, il pourrait déjà télécharger l'émission suivante??
à voir à faire un & dans la commande de conversion ou passer le relais autrement...
et encore bravo pour le concepteur et à tous les contributeurs


portable ASUS G51J-SZ045V ubuntu/win7

Hors ligne

#449 Le 02/07/2008, à 10:24

binoglobule

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

Salut,
sur ton site tu notes :

En graphique

Lanceur dans le menu Applications > Son et Vidéos
Dans le menu, choisissez l'option "créer un lanceur dans le menu 'Application > Son et Vidéo'"

(votre mot de passe utilisateur sera demandé car le script à besoin des droits root pour créer le fichier /usr/share/applications/canal.desktop)
Le lanceur est désormais présent dans le menu Applications > Son et Vidéos !

...Personnellement je ne comprends rien... ou alors on a pas la même version d'ubuntu.

Sinon à part ça chapeau.

#450 Le 02/07/2008, à 10:46

beudbeud

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

binoglobule a écrit :

Salut,
sur ton site tu notes :

En graphique

Lanceur dans le menu Applications > Son et Vidéos
Dans le menu, choisissez l'option "créer un lanceur dans le menu 'Application > Son et Vidéo'"

(votre mot de passe utilisateur sera demandé car le script à besoin des droits root pour créer le fichier /usr/share/applications/canal.desktop)
Le lanceur est désormais présent dans le menu Applications > Son et Vidéos !

...Personnellement je ne comprends rien... ou alors on a pas la même version d'ubuntu.

Sinon à part ça chapeau.

pour avoir le lanceur dans Applications > Son et Vidéos

il faut lancer le script en ligne de commande et ensuite faire ajouter un lanceur


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne