Télécharger les nombreuses vidéos quotidiennes de canal+ Guignols, Zap

Bonjour à tous voici comment télécharger les vidéos quotidiennes de Canal+

1- Installez ZEnity, si ce n’est déjà fait:
sudo apt-get install zenity
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
zenity est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 2 non mis à jour.

2- ouvrir un fichier nommer canal :slight_smile:

sudo gedit canal

y copier:

#!/bin/bash

But: Telecharger des videos de canalplus.fr et les mettre dans une playlist

Auteur : Ras’

TODO :

Téléchargement des émissions de plusieurs jours simultanément ( en cas d’absence prolongée ^^ )

Ne pas télécharger des émissions déja présentes

Rajouter un mode de gestion des émissions hebdomadaires

Ajouter la possibilité de télécharger les vidéos en Low Quality

Si l’option d’appel est ‘config’ le script est lancé uniquement pour la création/modification du fichier canal_config

if [[ $1 == “config” ]]
then
{
rm -f .canal_config
echo “Configuration en cours…”

Choix du répertoire de téléchargement

zenity --info --title=“Choix du répertoire” --text=“Choisir un répertoire pour le téléchargement des émissions
(un sous répertoire \“Canal+/\” 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 logiciel de lecture des vidéos

zenity --entry --text “Entrez le nom de votre logiciel de lecture vidéo
[ vlc / mplayer / totem ]” --title “Lecteur vidéo” >> .canal_config

Choix du mode de fonctionnement

zenity --list --checklist --height=200 --width=750 \
–title=“Mode de fonctionnement” \
–text=“Choix du mode de fonctionnement”\
–column="" --column="" --column=“mode” \
–hide-column=2 \
–separator=" " \
FALSE QUO “Quotidien : les anciennes vidéos sont supprimées et remplacées par les nouvelles”\
FALSE HIS “Historique : un dossier est créé pour chaque jour, les anciennes vidéos ne sont pas supprimées” >> .canal_config

Choix des émissions à télécharger

zenity --list --checklist --height=510 --width=400\
–title=“Quotidiennes (ou presque)” \
–text=“Choix des émissions à télécharger”\
–column="" --column="" --column=“Emissions” \
–hide-column=2 \
–separator=" " \
FALSE ZAP “Le zapping”\
FALSE PJA “Le petit journal actu de Yann Barthès”\
FALSE GUI “Les guignols de l’info”\
FALSE MET “La météo de Louise Bourguoin”\
FALSE PJP “Le petit journal people de Yann Barthès”\
FALSE TOP “Le top 5 de Thomas Ngijol”\
FALSE SAV “Le service après vente d’Omar et Fred”\
FALSE BAQ “La boite à questions”\
FALSE RDP “La revue de presse de Chris Esquerre”\
FALSE STO “La chronique de Sebastien Tohen”\
FALSE ADM “L’avis de Mouloud”\
FALSE DSH “Le daily show”\
FALSE GRO “Le Groland”\
FALSE TAC “Les têtes à claques”\
FALSE PEP “Les Pépites du net” >> .canal_config

}
echo “Configuration terminée”
exit
fi
#Fin de la configuration, le script est arreté

touch .canal_log
parent_dir=$(pwd)
REP=$(head -1 .canal_config)
mkdir -p $REP/Canal+
cd $REP/Canal+

Vérification de la date de téléchargement choisie

Si le script est lancé avec l’option “date”

if [[ $1 == “date” ]]
then
date=$( zenity --calendar --date-format=%d/%m/%y --text=“Choix de la date” )
if [[ “$date” == “date +%d/%m/%y” ]]
then date=$( date +%d/%m/%y --date ‘1 days ago’ )
fi

Sinon

else
if [[ -z $1 ]]
then d=“1”
else d=$1
fi
date=$( date +%d/%m/%y --date ‘’$d’ days ago’ )
fi
echo "Téléchargement des émissions du $date en cours…
"

Définition du mode de fonctionnement

if ( grep -q QUO $parent_dir/.canal_config )
then
rm -f *.flv
rm -f playlist.m3u
else
folder=$( date +%Y-%d-%m -d $date )
mkdir -p $folder
cd $folder
fi

création de la playlist

echo "# http://vod-flash.canalplus.fr/\" > playlist.m3u

Fonction qui vérifie dans le fichier de config si la vidéo doit être téléchargée ou non, puis lance le téléchargement si nécessaire

function download
{
if ( grep -q $1 $parent_dir/.canal_config )
then
get_http “$2”
get_video “$3”
fi
}

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 .menu_src_code
wget -q --load-cookies cookie.txt --keep-session-cookies $1 -O .menu_src_code
rm cookie.txt
}

Fonction qui récupère le nom de la page de téléchargement de la vidéo dans le fichier “.video_src_code”, récupère ensuite l’url direct de la vidéo, puis la télécharge

function get_video
{
aVideos=$( cat .menu_src_code | grep “$date” | grep “aVideos” | cut -f2 -d [ | cut -f1 -d ] )
if [[ -z $aVideos ]]
then echo “L’émission ‘$1’ n’a pu être téléchargée”
echo “_$1” >> $parent_dir/.canal_log
else
{
video_id=$( cat .menu_src_code | grep “aVideos\[$aVideos\]” | grep “CONTENT_ID” | cut -f2 -d ‘"’ )
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://[^ ]*H.flv” )
wget -q $url
echo “Fin du téléchargement de l’émission : $1”
VIDEO=$( echo $url | cut -c 31- )
echo $VIDEO >> playlist.m3u
rm .menu_src_code
rm .video_src_code
}
fi
}

#Téléchargement des émissions :

Zapping

nom=“le zapping”
url=“http://www.canalplus.fr/index.php?pid=1830
download ZAP “$url” “$nom”

Petit Journal Actu

nom=“le petit journal actu”
url=“http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=608
download PJA “$url” “$nom”

Guignols

nom=“les guignols de l’info”
url=“http://www.canalplus.fr/index.php?pid=1784
download GUI “$url” “$nom”

Météo

nom=“la météo de Louise Bourguoin”
url=“http://www.canalplus.fr/index.php?pid=2028
download MET “$url” “$nom”

Petit Journal People

nom=“le petit journal people”
url=“http://www.canalplus.fr/c-humour/pid2397-c-le-petit-journal.html?catId=613
download PJP “$url” “$nom”

Top 5

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

SAV des emissions

nom=“le Service Après Vente des émissions”
url=“http://www.canalplus.fr/index.php?pid=1782
download SAV “$url” “$nom”

Boite à questions

nom=“la boite à questions”
url=“http://www.canalplus.fr/index.php?pid=1786
download BAQ “$url” “$nom”

Revue de presse

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

Sebastien Tohen

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

L’avis de Mouloud

nom=“l’avis de Mouloud”
url=“http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=622
download ADM “$url” “$nom”

Le daily show

nom=“le daily show”
url=“http://www.canalplus.fr/c-humour/pid2053-c-encore-de-rire.html?catId=722
download DSH “$url” “$nom”

Groland

nom=“le Groland”
url=“http://www.canalplus.fr/index.php?pid=1787
download GRO “$url” “$nom”

Tetes à claques

nom=“les têtes à claques”
url=“http://www.canalplus.fr/index.php?pid=2170
download TAC “$url” “$nom”

Pépites sur le net

nom=“les pépites du net”
url=“http://www.canalplus.fr/index.php?pid=1778
download PEP “$url” “$nom”

Fin des téléchargement, affichage des logs, diffusion dans lecteur vidéo si demande exprimée par l’utilisateur (via fenetre Zenity)

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
lecteur_video=$( cat $parent_dir/.canal_config | head -2 | tail -1 )
zenity --question --title=“Fin du script” --text="Les vidéos du $date ont été téléchargées
$erreur
$log

Voulez vous lancer la lecture dans $lecteur_video ?"

if [[ $? == “0” ]]
then
if [[ $lecteur_video == mplayer ]]
then $lecteur_video -playlist playlist.m3u
fi
$lecteur_video playlist.m3u
fi

rm -f $parent_dir/.canal_log

3-Enregistrer et quitter :slight_smile:

4- Dans le terminal:

$$$$$$$$$./canal config

une boite de dialogue s’ouvre pour sélectionner l’endroit ou sauver les vidéos télécharger (on peu éventuellement les sauver dans le /tmp) :smiley:

D’autres boites de dialog s’ouvrent, selectionnez et cliquez vos parametres.

5- Quand dans le terminals dit que s’est terminée, toujours dans le terminal tapez :stuck_out_tongue:
$canal pour les vidéos de la veille :stuck_out_tongue:
$canal 2 pour les vidéos d’ils y a 2 jours :stuck_out_tongue:
etc

sources: http://forum.ubuntu-fr.org/viewtopic.php?pid=1607922#p1607922

merci sebman, j’essayerais un de ces 4.

NB: le zapping et d’autres émissions de Canal+ sont aussi disponibles en podcast, via Miro, par exemple:
https://www.miroguide.com/search?query=%22canal%2B%22:

  • le Zapping
  • SAV des émissions par Omar et Fred
  • Les Guignols

Marci!