#476 Le 03/09/2008, à 09:41
- franco12
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
merci Ras!
"La route est (peut-être un peu) longue, mais la voie est (plus que jamais) libre" - Citation de Framasoft modifiée
Membre de l'April - « promouvoir et défendre le logiciel libre » - http://www.april.org
Mon jabber : francois_@jabber.fr
Hors ligne
#477 Le 05/09/2008, à 10:05
- foulek
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Une petite correction a faire surement suite a un changement des URL des video par canal+.
Dans la fonction get_video il faut remplacer
VIDEO=$( echo $url | cut -c 31- | cut -f2 -d "/" )
par
VIDEO=$( echo $url | cut -c 31- | cut -f4 -d "/" )
Dernière modification par foulek (Le 05/09/2008, à 10:32)
Hors ligne
#478 Le 05/09/2008, à 15:46
- Ferod
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Je constate des petites erreurs aussi
1-Est ce que vous arrivez à télécharger le petit journal people de Yann Barthez ? Moi apparemment il ne le trouve pas. J'ai pas l'erreur en tête mais je vais le lancer et je reviendrais pour vous donner les messages d'erreur.
28 % : L'émission 'le petit journal actu' n'a pu être téléchargée
42 % : L'émission 'le petit journal people' n'a pu être téléchargée
Donc apparemment c'est le nom qui a du changer...
2-J'ai aussi des problèmes pour lancer la play list dans totem. Voici ce qu'elle contient :
# http://vod-flash.canalplus.fr/
/media/Documents/Vidéos/Emissions/Canal+/le zapping/PROGRESSIF
/media/Documents/Vidéos/Emissions/Canal+/le Service Après Vente des émissions/PROGRESSIF
/media/Documents/Vidéos/Emissions/Canal+/la boite à questions/PROGRESSIF
3-Il ne range plus les émissions par dossiers comme avant (un dossier zapping, un dossier SAV, etc...). Il y a un bug dans la commande mv : apparemment la valeur recherché par le script est PROGRESSIF alors que c'est le nom du fichier qu'il faudrait :
mv: ne peut évaluer `PROGRESSIF': Aucun fichier ou dossier de ce type
Les pb 2 et 3 c'est peut être à cause des changements de nom dont parle foulek mais j'attends d'en avoir confirmation hein...
yurek> Est ce que ton script est compatible avec la liste des noms de dossiers adoptée par Ras' ? En gros est ce que je peux écraser le script de Ras' par le tiens sans avoir à modifier les noms de mes dossiers ?
Et euh... Elle est où ta dernière version ? ^^
Dernière modification par Ferod (Le 05/09/2008, à 17:32)
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#479 Le 07/09/2008, à 15:18
- grusta
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Même problème pour le bug avec la commande mv, PROGRESSIF. Ca me retourne le même message d'erreur que Ferod.
Il serait peut-être bon de mettre en place un système de versions pour le script sur http://ibidems.free.fr/ras/canal.html, on s'y retrouverait mieux je pense.
Sinon, beau travail !
Hors ligne
#480 Le 08/09/2008, à 12:00
- prysme0
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Est ce que le script sur le site internet a été mis a jour ?
Car la modif de foulek ne me telecharge plus que le zapping et les tetes a claques ... des idées pour le reste ?
5 % : Fin du téléchargement de l'émission : le zapping
10 % : L'émission 'le petit journal actu' n'a pu être téléchargée
15 % : L'émission 'les guignols de l'info' n'a pu être téléchargée
20 % : L'émission 'le petit journal people' n'a pu être téléchargée
25 % : L'émission 'le top 5 de Thomas Ngijol' n'a pu être téléchargée
30 % : L'émission 'le Service Après Vente des émissions' n'a pu être téléchargée
35 % : L'émission 'la boite à questions' n'a pu être téléchargée
40 % : L'émission 'la revue de presse de Chris Esquerre' n'a pu être téléchargée
45 % : L'émission 'la chronique de Sebastien Tohen' n'a pu être téléchargée
50 % : L'émission 'l'avis de Mouloud' n'a pu être téléchargée
55 % : L'émission 'le daily show' n'a pu être téléchargée
60 % : L'émission 'la chronique de Stephane Guillon' n'a pu être téléchargée
65 % : L'émission 'Les infos de blako' n'a pu être téléchargée
70 % : L'émission 'Le champion de l'actu' n'a pu être téléchargée
75 % : L'émission 'le Groland' n'a pu être téléchargée
Merci à tous.
#481 Le 08/09/2008, à 17:59
- Ferod
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Tout dépend tes paramètres de lancement... Si tu le lances sans paramètre, par défaut il télécharge les émissions de la veille. Comme il s'est rien passé hier c'est logique de ne rien avoir aujourd'hui. Essaye avec la fonction "-d" pour choisir une date de la semaine dernière.
Et pis y'a des émissions qui n'ont pas été repris de l'année dernière (le top 5 de Thomas Ngigol, etc...)
Ceci expliquant cela...
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#482 Le 10/09/2008, à 10:58
- beudbeud
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
il faut une petite mise a jour du script avec les émissions qui sont été reconduite
Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project
Vostro 1510 Ubuntu 10.04
Hors ligne
#483 Le 10/09/2008, à 11:56
- prysme1
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Moi je suis perdu, faut faire une modification dans le script ou pas ?
Avec ou sans la modif il ne me telecharge que le zapping.
Est ce que quelqu'un peut poster un script qui fonctionne ?
En tout cas merci pour le taf, car c'est tres utile.
#484 Le 10/09/2008, à 21:08
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Pas le net dans mon nouvel appart :\
Je viens de choper un truc provisoir, je vous tiens au courant mais je garantie rien sur la date...
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
#485 Le 11/09/2008, à 20:49
- Ferod
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Alors je peux peut être te donner une piste, j'ai un petit peu cherché... ^^ J'arrive à télécharger le zapping, le SAV et la boite a question. J'ai un pb pour le petit journal actu et le petit journal people. J'ai pas testé les autres.
Voici mon fichier de configuration (uniquement le petit journal people) :
/home/sebastien/Script/toto
totem
HEM
PJP
LOW
version=v1.304
Je lance le script avec l'option -d et je choisi la date du 4 sept (l'émission était dispo hier).
A mon avis c'est dans la fonction get_videos.
function get_video
{
if [[ -z $2 ]]
then
{
aVideos=$( cat .menu_src_code | grep "$date" | cut -f2 -d [ | cut -f1 -d ] ) # Majorité des émissions
echo $date
echo "test1 = $aVideos"
if ! [[ -z "$aVideos" ]]
then
video_id=$( cat .menu_src_code | grep "aVideos\[$aVideos\]" | grep "CONTENT_ID" | cut -f2 -d '"' | head -n 1 )
echo "test2 = $video_id"
fi
}
A mon avis c'est ce qui est en gras qui marche pas. C'est peut être parce que aVideos n'est pas correct. Du coups j'ai extrait les commandes de ton script pour en faire un et j'arrive à télécharger l'émission.
wget -q --save-cookies cookie.txt --keep-session-cookie http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613 -O menu_src_code
aVideos=$( cat menu_src_code | grep "04/09/08" | cut -f2 -d [ | cut -f1 -d ] ) # Majorité des émissions
echo $aVideos
video_id=$( cat menu_src_code | grep "aVideos\[$aVideos\]" | grep "CONTENT_ID" | cut -f2 -d '"' | head -n 1 )
echo $video_id
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://[^ ]*L.flv" )
echo $url
wget $url
Voilà j'espère t'avoir aidé !
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#486 Le 15/09/2008, à 19:01
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Bon finalement pour le petit journal people et actu ça à l'air plus compliqué que prévu...
Apparement la page que je dl avec get_video n'est pas la bonne :\
Je publierais une version du script qui marche sans le PJA et le PJP et je verrais le reste dès que possible.
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
#487 Le 18/09/2008, à 14:01
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Aussi étrange que cela puisse paraitre, il apparaitrait que l'envoie de cookie nécessaire pour les autres émissions (du moins à l'époque) soit la cause du non téléchargement du petit journal...
avec load cookie :
wget -q --save-cookies cookie.txt --keep-session-cookies 'http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613' -O .menu_src_code
ras@ras-laptopoulos:~$ rm -f .menu_src_code
ras@ras-laptopoulos:~$ wget -q --load-cookies cookie.txt --keep-session-cookies 'http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613' -O .menu_src_code
ras@ras-laptopoulos:~$ rm -f cookie.txt
ras@ras-laptopoulos:~$ cat .menu_src_code | grep "16/09/08"
sans load cookie :
ras@ras-laptopoulos:~$ wget -q --save-cookies cookie.txt --keep-session-cookie http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613 -O menu_src_code
ras@ras-laptopoulos:~$ cat menu_src_code | grep "16/09/08"
aVideos[0]['CONTENT_VNC_TITRE'] = "LE PETIT JOURNAL PEOPLE - 16/09/08";
je vais manger je m'occupe de ça plus tard mais ça avance
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
#488 Le 18/09/2008, à 14:09
- beudbeud
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
merci Ras' de nous tenir au courant
sinon pour la revu de presse de chris esquire voila le changement a faire pour que ça le télécharge de nouveau
# Revue de presse
nom="la revue de presse de Chris Esquerre"
url="http://www.canalplus.fr/c-humour/pid2681-c-chris-esquerre.html"
check RDP "$url" "$nom"
Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project
Vostro 1510 Ubuntu 10.04
Hors ligne
#489 Le 18/09/2008, à 14:14
- matoo
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Salut
Je rencontre quelques problèmes a l utilisation de ce script depuis que je l ai mis sur un tout nouveau ubuntu tout frais :
dans le dossier canal il y a les sous-dossiers par émissions qui restent vides et les videos au format flv. Le problème doit venir de la conversion en avi mais je ne sais que faire...
J ai bien installe les dépendances (dont mencoder).
Au passage un grand merci pour ce script que j utilisais sur ma précédente mouture et qui fonctionnait a merveille.
Hors ligne
#490 Le 19/09/2008, à 06:45
- Bazoo
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Merci Ras' pour le script, c'est bien pratique !
Je te fais part de quelques retours (version 1.304) :
- Chez moi en mode 'historique' le script me créer les dossiers des émissions mais ne place pas les téléchargements a l'intérieur...
- Si je lance deux fois le script, il télécharge deux fois la même vidéo
- Pourquoi ne pas placer les fichiers de configuration dans un répertoire ~/.script-canal comme le font la plupart des programmes? (Ça permettrait de déplacer le script sans avoir a se préoccuper des fichiers de configuration)
- Je suggère que le script propose au démarrage d'utiliser la configuration précédente ou non Ça serait pratique pour ceux qui ne télécharge pas toujours les même émissions. M'enfin c'est comme tu veux bien sure...
En tout cas merci, je m'abonne au sujet pour suivre l'évolution.
A++
EDIT (Message perso): Hey Matoo! J'avais pas vu ton post, je vois qu'on traine dans les même topic ++
Dernière modification par Bazoo (Le 19/09/2008, à 06:52)
Hors ligne
#491 Le 21/09/2008, à 12:50
- beudbeud
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
petite info sous intrepid si on utilise totem pour lire la playlist ça ne fonctionne pas car il faut rajouter la ligne #EXTM3U au début du fichier m3u
Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project
Vostro 1510 Ubuntu 10.04
Hors ligne
#492 Le 22/09/2008, à 21:31
- derrickneverdie
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Bonjour,
Je ne viens absolument pas apporter le moindre grain à moudre. J'espère que l'apparté n'est pas proscrit par les règles du forum. Juste pour dire que je te remercie beaucoup RAS pour ce que tu fais, et que j'apprécie ta pugnacité.
Je suis avec interêt l'évolution de ton script.
Et comme disait l'autre: "Si c'est totalement inutile alors c'est rigoureusement indispensable"
Voilà,
Paix, Amour et Chmod
#493 Le 22/09/2008, à 22:12
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Fatigue projets envie de faire autre chose de mes temps libres... je suis désolé de pas m'occuper de tout ça... pourtant ça demande pas un gros investissements, mais vu que j'y ai pas touché depuis longtemps... Bref, désolé de pas m'y filer un peu plus...
Merci entre autre à Bazoo pour son retour détaillé
J'arretes de promettre des trucs mais un jour je m'y mettrais...
C'est dur la reprise :\
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
#494 Le 25/09/2008, à 10:22
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Bonne nouvelle, je m'y met \o/
A vrai dire ça fait une petite demi heure que je suis dessus...
_j'ai réparé le PJP et le PJA, ainsi que la RDP (qui avait simplement un lien réservé plutot que dans encore + de rire)
_j'ai réparé la fonction alacarte qui ne pouvait vraiment pas marcher comme ça ><'
_je vais rajouter #EXTM3U en début de playlist de ce pas
_et la je vais me filer au problème de playlist, qui est lié au problème de non déplacement des fichiers en mode historiques.
- Je suggère que le script propose au démarrage d'utiliser la configuration précédente ou non smile Ça serait pratique pour ceux qui ne télécharge pas toujours les même émissions. M'enfin c'est comme tu veux bien sure...
C'est le principe de la fonction alacarte
En fait en mode "menu" le script coche la case "télécharger les émissions d'hier" par défaut, c'est à dire les émissions choisies dans .canal_config et pour la date d'hier.
Mais si tu coches "choisir exeptionnellement les émissions à télécharger" le script te propose de choisir la date ainsi que les émissions que tu veux
C'est une bonne idée mais quelqu'un l'à eu avant toi (oui c'est pas de moi...)
EDIT : ben le problème de playlist c'était facile, je fais les derniers tests et je publie la version, qui marche mais qui n'est pas parfaite (dans le sens ou y'a encore des émissions choisissables alors qu'elles sont plus diffusées etc, mais j'ai la flemme de vérifier qui est diffusé ou ne l'est plus, et ça change rien...)
Quand j'aurais le temps je reprendrais ce détail
Dernière modification par Ras' (Le 25/09/2008, à 10:29)
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
#495 Le 25/09/2008, à 12:18
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Bon j'ai encore un petit bug au niveau des PJ*, le script m'a mis 2 fois le PJP dans la playlist lors de l'essai, donc j'imagine qu'il l'a aussi dl en double...
je verrais ça plus tard, pour le moment j'ai une après midi "surchargée" (oui, ' " ' parce que le programme c'est sieste, crèpes, médiathèque 2h de cours et apéro/pendaison d'engrenage donc on s'en remet pas mal ^^)
Enfin ça avance pas mal, d'ailleurs si vous vous ennuyez je vous met la version beta du petit dernier, si quelqu'un veut chercher le problème
(je devrais lancer des jeux concours )
C'est surement un problème à la con... et y'a surement un rapport avec la ligne que j'ai inséré comme un sauvage ligne 634 ^^
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
#496 Le 25/09/2008, à 17:07
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Bon, il dit qu'il comprends rien...
En fait d'habitude je télécharge
"http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=608" pour le petit journal actu et
"http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613" pour le petit journal people...
Sauf que là quand je télécharge l'une ou l'autre, je regarde le code source et j'ai que les vidéos du PJP qui apparaissent...
Bon à vrai dire il se fout royalement du catID, donc soit celui du PJA a changé, ce que je vais vérifier de suite...
Bon donc c'est ça, faut croire qu'il se fout du catID, parce qu'ils sont faux, donc il télécharge la page du PJP parce que quand on se trompe il prend une des deux pages qui fait office de "page d'accueil" des petits journaux...
Donc la mission c'est de trouver le catID du PJA...
En attendant je publie une version qui n'est encore qu'une béta mais qui permet de dl le PJP, la revue de presse de Chris et de faire des tests pour ceux qui veulent m'aider.
Si vous voulez faire des tests pour le PJA n'oubliez pas de décommenter les lignes correspondantes
#!/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
{
rm -f "$parent_dir"/.alacarte
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 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)" >> "$parent_dir"/$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=225 --width=850 \
--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=370 --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
if ! ( [[ "$emission" == "PJA" ]] || [[ "$emission" == "PJP" ]] )
then
rm -f .menu_src_code
wget -q --load-cookies cookie.txt --keep-session-cookies $1 -O .menu_src_code
fi
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échargement 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 -f7 -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/index.php?pid=2681"
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=370 --width=540 \
--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 "#EXTM3U" > $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 "$parent_dir"/.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
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
Vous pouvez le mettre dans le même dossier que l'autre sous un autre nom, le nom de version étant le même que celui du serveur il ne se mettra pas à jour automatiquement
Sur ce, bonne soirée !
Dernière modification par Ras' (Le 25/09/2008, à 17:07)
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
#497 Le 25/09/2008, à 18:10
- Ferod
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Un grand merci Ras' !
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#498 Le 26/09/2008, à 10:15
- Bazoo
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
Effectivement, j'ai decouvert la fonction alacarte un peu en retard...
Merci bien pour cette version beta, je vais l'essayer de ce pas
A++
Hors ligne
#499 Le 26/09/2008, à 11:43
- beudbeud
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
j'ai testé la beta mais le groland ne fonctionne pas
Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project
Vostro 1510 Ubuntu 10.04
Hors ligne
#500 Le 26/09/2008, à 12:00
- Ras'
Re : [script/bash] Télécharger de nombreuses quotidiennes de canal+
ah je regarderais ça alors, j'ai testé sur un jour de semaine donc c'était normal qu'il n'y ai pas de groland
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