#26 Le 06/04/2014, à 20:09
- cracolinux
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut,
Bravo pour ton script qui fonctionne impeccablement !
Comment faire pour télécharger disons, le numéro 5 de la liste des GDI ?
Hors ligne
#27 Le 07/04/2014, à 01:33
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
J'avais déjà ça en tête, j'ai mis à jour le script. Il accepte désormais l'option -x/--videos avec comme argument le numéro de la vidéo ou une plage de numéros (ex. 1,3-5,7).
cpdl gdi -x 5
cpdl gdi -x 1,3-5,7
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#28 Le 07/04/2014, à 20:53
- cracolinux
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Merci et encore bravo!
Hors ligne
#29 Le 11/04/2014, à 10:49
- GP974
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
hum il semble vraiment que le rpi soit tres juste avec le prog ça replante aujourd'hui voila le retour du script.
[i] Found 16 video(s) info for "gdi"
[i] 5 video(s) to download
[i] Downloading video "1052008" from show "gdi" as "Guignol:2014-04-10.mp4"
[i] Downloading "Guignol:2014-04-10.mp4" (rtmp://vod-fms.canalplus.fr/ondemand/videos/1404/LES_GUIGNOLS_QUOTIDIEN_140410_AUTO_24025_169_video_H.mp4)
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting download at: 0.000 kB
INFO: Metadata:
INFO: duration 490.43
INFO: moovPosition 32.00
INFO: width 640.00
INFO: height 360.00
INFO: videocodecid avc1
INFO: audiocodecid mp4a
INFO: avcprofile 100.00
INFO: avclevel 31.00
INFO: aacaot 2.00
INFO: videoframerate 25.00
INFO: audiosamplerate 44100.00
INFO: audiochannels 2.00
INFO: trackinfo:
INFO: length 12260000.00
INFO: timescale 25000.00
INFO: language eng
INFO: sampledescription:
INFO: sampletype avc1
INFO: length 21627904.00
INFO: timescale 44100.00
INFO: language eng
INFO: sampledescription:
INFO: sampletype mp4a
128.694 kB / 1.00 sec (0.2%)
ERROR: RTMP_ReadPacket, failed to read RTMP packet body. len: 11518649
130.187 kB / 1.00 sec (0.2%)
Apres ça niveau cpu on grimpe a 100% et rien ne bouge jusqu’à que j'envois un SIGKILL
y'a un moyen d'optimiser d’après toi ?
Edit : Bon j'ai essayer sur le 5 dernières vidéos des guignols 3 ont échoué vers le début (a moins d'1%) et les 2 autre ont réussis
C'est vraiment un beug a la con
Dernière modification par GP974 (Le 11/04/2014, à 11:07)
Hors ligne
#30 Le 12/04/2014, à 04:56
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Malheureusement, je ne peux pas faire grand chose sur ce point, le téléchargement en lui-même dépend de rtmpdump.
Mon script à une option -r qui permet à rtmpdump de relancer le téléchargement d'un fichier si celui-ci n'est pas complet. J'ai aussi corrigé un bug qui faisait qu'un fichier vide ayant le nom du fichier téléchargé empêchait de continuer.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#31 Le 14/04/2014, à 20:27
- GP974
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Dommage je dois me rabattre sur mon portable
Un attendent que tu nous fasse une gui intégré j'en ai fais une avec bash ca utilise zenity
pour l'utiliser il suffit juste de lancer le script
La seule contrainte est de donner le chemin (path) vers le script dans la variable Name (5 ieme ligne) Par default c'est "./cpdl"
Version 1.1
Ajout des qualités HDL et HLS (HLS par default)
Demande le chemin du script si la variable name est incorrect ou mal renseigné
Correction d'un beug (le code du petit journal)
Version 1.0
Permet de choisir une ou plusieurs émission, la qualité et le nombre de vidéo a télécharger.
Notification quand le script a terminé le téléchargement.
#!/bin/bash
#Gui pour le script python de Nesthib permettant de télécharger les vidéos de Canal+
#Version 1.1
#Plus d'information : https://forum.ubuntu-fr.org/viewtopic.php?id=1536991
Name="./cpdl"
if [ -f $Name ]
then
echo "Fichier $Name existant"
else
Chemin=`zenity --file-selection --title "Emplacement script"`
Verif=`file $Chemin`
echo $Verif | grep "python" >> /dev/null
if [ $? -eq 0 ]
then
Name=$Chemin
echo "Fichier correct emplacement:$Name"
else
echo "Fichier non reconnus"
exit 1
fi
fi
Emission=$(zenity --list --width=400 --height=300 --title "Telechargement emission" --text "Choix emision" --column "Telecharger?" --column "Code" --column "Emission" \
--checklist "FALSE" "gdi" "Guignols de l'info (les)" \
--checklist "FALSE" "gro" "Groland" \
--checklist "FALSE" "jdh" "Le journal du hard" \
--checklist "FALSE" "lgj" "Le grand journal" \
--checklist "FALSE" "lpj" "Petit journal (le)" \
--checklist "FALSE" "zap" "zap (Zapping (le)" )
if [ -z "$Emission" ]
then
echo "Pas de video/Annulation..."
exit 0
else
echo "Emission:$Emission"
fi
Qualite=$(zenity --list --width=400 --height=280 --title "Qualite" --text "Qualite Video" --column "Choix" --column "Code" --column "Qualite" \
--radiolist "FALSE" 1 "Qualité Mobile" \
--radiolist "FALSE" 2 "Qualité Bas Debit" \
--radiolist "FALSE" 3 "Qualité Haut Debit" \
--radiolist "FALSE" 4 "Qualité HD" \
--radiolist "FALSE" 5 'Qualité HDS' \
--radiolist "TRUE" 6 'Qualité HLS' )
if [ -z "$Qualite" ]
then
echo "Annulation..."
exit 0
else
echo "Qualité:$Qualite"
fi
Nb_Video=$(zenity --scale --width=400 --height=220 --title "Nombre Video" --text="Nombre de vidéo a télécharger" --value=1 --max-value=30 --min-value=1)
if [ -z "$Nb_Video" ]
then
echo "Annulation..."
exit 0
else
echo "Nombre vidéo:$Nb_Video"
fi
ListeEmission=$(echo $Emission | sed s/"|"/" "/g)
echo "Commande:python $Name $ListeEmission -l $Nb_Video -r -q $Qualite -v"
python $Name $ListeEmission -l $Nb_Video -r -q $Qualite -v
if [ $? -eq 0 ]
then
notify-send "Téléchargement terminé"
exit 0
else
notify-send "Erreur Téléchargement"
exit 1
fi
Voila si il y a un problème/beug signalez le ici merci
Dernière modification par GP974 (Le 24/04/2014, à 17:32)
Hors ligne
#32 Le 15/04/2014, à 06:46
- outcast
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Bonjour,
Il semble que canal+ bloque les téléchargements par script.
Quand je passe par le site internet, la vidéo est visible.
http://www.canalplus.fr/c-divertissemen … gnols.html
Il y a peut être un paramètre à passer à fvlstreamer ?
flvstreamer -V -r rtmp://vod-fms.canalplus.fr/ondemand/videos/1404/LES_GUIGNOLS_QUOTIDIEN_140414_AUTO_24080_169_video_H.mp4
FLVStreamer v2.1c1
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
DEBUG: Parsing...
DEBUG: Parsed protocol: 0
DEBUG: Parsed host : vod-fms.canalplus.fr
DEBUG: Parsed app : ondemand
WARNING: You haven't specified an output file (-o filename), using stdout
DEBUG: Protocol : RTMP
DEBUG: Hostname : vod-fms.canalplus.fr
DEBUG: Port : 1935
DEBUG: Playpath : mp4:videos/1404/LES_GUIGNOLS_QUOTIDIEN_140414_AUTO_24080_169_video_H
DEBUG: tcUrl : rtmp://vod-fms.canalplus.fr:1935/ondemand
DEBUG: swfUrl : (null)
DEBUG: pageUrl : (null)
DEBUG: app : ondemand
DEBUG: auth : (null)
DEBUG: subscribepath : (null)
DEBUG: flashVer : LNX 10,0,22,87
DEBUG: live : no
DEBUG: timeout : 120 sec
DEBUG: Setting buffer time to: 36000000ms
Connecting ...
DEBUG: RTMP_Connect1, ... connected, handshaking
DEBUG: HandShake: Type Answer : 03
DEBUG: HandShake: Server Uptime : 1376776703
DEBUG: HandShake: FMS Version : 4.5.2.1
DEBUG: RTMP_Connect1, handshaked
DEBUG: Invoking connect
INFO: Connected...
DEBUG: RTMP_ClientPacket, received: invoke 134 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object begin)
DEBUG: Property: <Name: level, STRING: error>
DEBUG: Property: <Name: code, STRING: NetConnection.Connect.Rejected>
DEBUG: Property: <Name: description, STRING: [ AccessManager.Reject ] : Access denied!>
DEBUG: (object end)
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <_error>
ERROR: rtmp server sent error
DEBUG: RTMP_ClientPacket, received: invoke 18 bytes
DEBUG: (object begin)
DEBUG: Property: NULL
DEBUG: (object end)
DEBUG: HandleInvoke, server invoking <close>
ERROR: rtmp server requested close
DEBUG: Closing connection.
Hors ligne
#33 Le 17/04/2014, à 09:44
- JackDanielZ
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut,
J'a le meme probleme avec mon script shell depuis quelques jours. Meme VLC s'en sort pas. C'est comme si les fichiers n'existaient pas (ou n'etaient plus accessibles).
J'ai vraiment l'impression que le probleme est dans leur serveur.
Daniel
Hors ligne
#34 Le 19/04/2014, à 02:22
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Il y a effectivement un filtrage côté serveur. J'ai mis à jour le script pour utiliser une autre méthode (qualité 6, par défaut). Il est désormais également possible de lancer directement les vidéos dans VLC.
Exemple :
cpdl -Pt lpj
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#35 Le 19/04/2014, à 11:07
- S00000
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Il y a effectivement un filtrage côté serveur. J'ai mis à jour le script pour utiliser une autre méthode
Qu'as tu changé pour que ça fonctionne ?
Par exemple,
>>> rtmpdump -r rtmp://vod-fms.canalplus.fr/ondemand/videos/1404/LES_GUIGNOLS_QUOTIDIEN_140401_AUTO_23903_169_video_L.mp4 -o test.mp4
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
ERROR: rtmp server sent error
ERROR: rtmp server requested close
Que faut-il faire ?
Merci.
Hors ligne
#36 Le 20/04/2014, à 09:02
- JackDanielZ
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut nesthib,
Merci pour l'idee d'utiliser les m3u8. Par contre, j'ai un leger probleme. Que ce soit avec ton script ou directement en ligne de commandes, avconv me telecharge que l'audio.
T'as une idee de ce que ca pourrait etre?
Merci.
Hors ligne
#37 Le 20/04/2014, à 11:37
- JackDanielZ
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Juste pour info. Pour telecharger sans utiliser avconv/ffmpeg..., il faut:
- wget le master.m3u8 qui contient des liens m3u8, chacun correspondant a une qualite.
- prendre un des liens (je prends le dernier)
- wget le fichier. Il contient des liens vers des .ts.
- wget tous les .ts
- les concatener avec 'cat' (cat *.ts > truc.mp4). Et la on obtient un fichier lisible par VLC.
Ca marche avec le petit journal, guignols et zapping. Le seul hic, c'est que CanalPlus n'est pas fichu de bien nommer ses fichiers .ts donc si on a plus de 10 .ts, la concatenation va pas se faire dans le bon ordre.
Vla mon script (juste celui qui recupere les .ts et les concatene), il est petit et simple. Ya a ameliorer mais ca marche:
#!/bin/bash
# $1: link to m3u8
#$2 output file
# Download the m3u8 file, search for ts files, wget and combine them
rm -f ts_1*
wget -T 30 -t 10 -q -O file.m3u8 "$1"
ts_files="`grep "\.ts" file.m3u8`"
index=0
for ts in $ts_files
do
ts_out="ts_"`expr 1000 + $index`
echo "`basename $ts` -> $ts_out"
wget -T 30 -t 10 -q -O $ts_out $ts
index=`expr $index + 1`
done
cat ts_1* > $2
rm -f ts_1*
Hors ligne
#38 Le 20/04/2014, à 15:21
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Tu peux utiliser directement VLC pour avoir la vidéo en streaming (voir message #34).
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#39 Le 20/04/2014, à 15:45
- JackDanielZ
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Je sais. C'est juste que j'aime bien les telecharger via crontab et ne pas avoir a dependre de ma connexion internet .
Hors ligne
#40 Le 24/04/2014, à 17:30
- GP974
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Mise a jour du script pour prendre en compte les derniers changements
Hors ligne
#41 Le 09/05/2014, à 20:10
- lg2009
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Bonsoir,
J'ai utilisé une autre technique suite aux difficultés rencontrées avec le protocole RTMP sur le site de canal plus. J'ai remarqué que l'application youtube-dl (http://rg3.github.io/youtube-dl/) permettait de télécharger les vidéos du site en haute qualité et j'ai donc adapté un script initialement écrit par La_Poigne pour automatiser l'opération. Je ne suis pas (du tout) à l'aise en Python et le script peut sans doute très facilement être amélioré. Pour ajouter une émission, il faut son numéro et l'adresse de base (dans la table de hachage), on peut s'inspirer des 3 exemples déjà dans le script. Il faut aussi adapter le répertoire de téléchargement (ici ~/canal) et de sauvegarde de l'historique (ici ~/canal aussi).
#!/usr/bin/env python
# -*- coding:Utf-8 -*-
###########################################################################
# Adaptation à partir d'un script Copyright (C) 2010 La_Poigne #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 2 of the License, or #
# any later version. #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
###########################################################################
#
#Script pour telecharger les emission du site canalplus.fr
#Fonctionne en theorie sur tous les OS
#
import os, urllib, subprocess, time, sys
from xml.dom import minidom
emissions=[
249, # PETIT JOURNAL
201, # ZAPPING
48, # GUIGNOLS
#252, # SAV
#254, # GROLAND
#104, # GRAND JOURNAL
#37, # ACTION DISCRETE
#39, # LA MATINALE
#47, # PEPITES DU NET
#62, # LE BOUCAN DU JOUR
#215, # LE MEILLEUR DU HIER
#1064 # Gaspard Proust
]
base = {}
base[48]="http://www.canalplus.fr/c-divertissement/pid1784-c-les-guignols.html?vid="
base[249]="http://www.canalplus.fr/c-divertissement/c-le-petit-journal/pid6515-l-emission.html?vid="
base[201]="http://www.canalplus.fr/c-infos-documentaires/pid1830-c-zapping.html?vid="
# Qualite de la video
#qualite = "BAS_DEBIT"
qualite = "HAUT_DEBIT"
#qualite = "HD"
# Repertoires (pensez a les creer avant)
homedir = os.path.expanduser('~')
HISTORIQUE = homedir + "/canal/.cplus_hist"
output_dir = homedir + "/canal"
# Ne rien modifier sous cette ligne
# Sauf pour ameliorer le fonctionnement ;)
urlXMLEmissions = "http://www.canalplus.fr/rest/bootstrap.php?/bigplayer/getMEAs/"
# Parse Mea file to get videos id
def ParseMeas(xmldoc):
ids = []
meas = xmldoc.getElementsByTagName('MEA')
for i in meas:
if i.getElementsByTagName('ID')[0].childNodes != []:
id = i.getElementsByTagName('ID')[0].childNodes[0].nodeValue
ids.append(id)
return ids
# Execute command and write stdout in file var
def execute(params):
p = subprocess.Popen(params)
p.wait()
return p.returncode
def addHistory(name):
file = open(HISTORIQUE, 'a')
file.write(name.encode('utf-8') + '\n')
file.close()
def checkHistory(name):
findvalue = 0
file = open(HISTORIQUE, 'r')
for line in file:
if line.decode('utf-8') == name + '\n':
findvalue = 1
file.close()
return findvalue
def downXml(url):
try:
xmlFile = urllib.urlopen(url).read()
except Exception, e:
return 1
try:
xmldoc = minidom.parseString(xmlFile)
except Exception, e:
xmldoc = 1
return xmldoc
if __name__ == "__main__":
if os.path.exists(HISTORIQUE) == False:
file = open(HISTORIQUE, 'w')
file.close()
for num in emissions:
url = urlXMLEmissions + str(num)
xmldoc = downXml(url)
if xmldoc == 1:
print "Erreur durant la recuperation de la liste " + str(num)
else:
id = ParseMeas(xmldoc)
for vid in id:
print vid
url2 = base[num]+ vid
check = checkHistory(url2)
if check == 0:
print url2
params=['youtube-dl', url2]
r = execute(params)
if r == 0:
addHistory(url2)
Laurent
Hors ligne
#42 Le 19/05/2014, à 13:53
- Smoky_fr
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Bonjour,
Je ne connais rien dans les script, mais apparemment j'arrive à le faire fonctionner !
Faut encore que j'apprenne à me servir des options ...
Du coup, je me demandais s'il y avait la possibilité de récupérer une émission de Canal qui ce nomme => INTERIEUR SPORT.
Merci
Smoky
Ps : il y a juste qqchose que je n'arrive pas à faire, c'est rendre le script executable.
Je faits :
- sudo chmod +x /home/user/bin/cpdl
- Puis ENTER
- Pas de Mess d'erreur, mais quand je lance le script il me dit que la commande cpdl est introuvable,
- par contre en utilisant la commande python cpdl, ça fontionne
Dernière modification par Smoky_fr (Le 19/05/2014, à 13:58)
Sur Linux depuis Janvier 2014.
Un Pc sous Xubuntu 12.04 et un portable sous Mint 17
Hors ligne
#43 Le 19/05/2014, à 14:17
- melixgaro
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut,
à Smoky_fr
Quand tu le rends exécutable, tu peux le lancer comme ceci
./cpdl
au lieu de
python cpdl
Quand tu tapes seulement cpdl, le shell cherche le programme dans le PATH. C'est une variable qui contient une série de dossiers, où se trouvent les différents programmes : firefox, gedit, emacs, trucmuche... Pour savoir quels sont ces dossiers, tape
echo ${PATH}
Si tu veux pouvoir lancer ton programme en tapant cpdl, alors il faut que l'exécutable soit dans un de ces dossiers OU que tu ajoutes à la variable PATH le dossier où se trouve cpdl. Par exemple, comme ceci (à adapter) :
export PATH=${PATH}:${HOME}/bin
Il faut ajouter cette ligne en fin de fichier .bashrc pour que ce soit permanent.
Édition : correction du PATH proposé. merci nesthib
Dernière modification par melixgaro (Le 19/05/2014, à 15:40)
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#44 Le 19/05/2014, à 14:38
- Smoky_fr
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Merci, pour l'astuce.
./cpdl
au lieu de
python cpdl
Je verrais pour le reste, quand j'aurais moins mal au crane ...
Sur Linux depuis Janvier 2014.
Un Pc sous Xubuntu 12.04 et un portable sous Mint 17
Hors ligne
#45 Le 19/05/2014, à 15:33
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
export PATH=${PATH}:/home/user/bin/cpdl
À mon avis c'est plutôt ${HOME}/bin
export PATH=${PATH}:${HOME}/bin
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#46 Le 19/05/2014, à 15:38
- melixgaro
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
à nesthib
oula quelle horreur, merci. oui un copié-collé rapide, je corrige mon message.
Dernière modification par melixgaro (Le 19/05/2014, à 15:39)
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#47 Le 20/05/2014, à 18:11
- Smoky_fr
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Quand je tape la commande suivante :
==> ./cpdl lpj -m 2014-05-19 -f '%S_%D_%t.%e'
Ça me donne bien un fichier en MP4 (du coup en q 1), mais la box (Freebox v6) voit ce fichier en fichier musical et j'ai que la bande son (pas de bonne qualité).
Ps : vous pensez que c'est possible pour l'émission Intérieur Sport ?
Edit :
Je viens d'essayer en utilisant l'option -q 2 et ça ne fonctionne pas
./cpdl lpj -q 2 -m 2014-05-19 -f '%S_%D_%t.%e'
[i] Found 107 video(s) info for "lpj"
[i] 1 video(s) to download
[i] Deleting empty file "LPJ_2014-05-19_Avec_Valérie_Trierweiler.mp4"
[i] Downloading video "1073228" from show "lpj" as "LPJ_2014-05-19_Avec_Valérie_Trierweiler.mp4"
[i] Downloading "LPJ_2014-05-19_Avec_Valérie_Trierweiler.mp4" (rtmp://vod-fms.canalplus.fr/ondemand/videos/1405/19/nip_NIP_15045_400k.mp4)
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
ERROR: rtmp server sent error
ERROR: rtmp server requested close
Dernière modification par Smoky_fr (Le 20/05/2014, à 18:24)
Sur Linux depuis Janvier 2014.
Un Pc sous Xubuntu 12.04 et un portable sous Mint 17
Hors ligne
#48 Le 26/05/2014, à 09:07
- Gaara
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut nesthib,
Je viens d'essayer ton script, et j'ai un petit soucis: les vidéos ne se téléchargent pas en entier.
J'ai essayé cette commande: (j'ai nommé mon fichier cplus.py)
python cplus.py -y gdi zap
J'obtiens bien deux vidéos, mais toutes les deux se coupent avant la fin. Je suis sous Kubuntu 14.04.
J'ai une autre question: est-t-il possible de télécharger d'autres émissions? (comme clique, le tube, la nouvelle édition)
En fait, avec ta permission, j'aimerais intégrer ton code dans mon logiciel, en ajoutant un onglet canal+. (en le renommant dPluzz+ )
ça donnerait quelque chose comme ça:
Pour le moment, l'onglet canal+ est vide, mais si ton script marche bien, j'adapterais mon interface pour le faire tourner !
Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid
<code>zenity --question --title "Alert" --text "Microsoft Windows has been found! Would you like to remove it?"</code>
Hors ligne
#49 Le 29/07/2014, à 20:47
- ziss
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
Salut a tous,
Suite aux changements sur canalplus.fr, les scripts precedents peinent un peu et flvstreamer, lui, n'arrive plus a recuperer correctement les videos (enfin, chez moi en tous cas).
Du coup, sur le conseil du post de lg2009 (voir plus haut), j'utilise youtoube-dl qui marche parfaitement!
De plus, j'en ai profité pour tout refaire avec beautifulsoup.
Je ne suis pas developpeur, donc allez-y molo sur les commentaires concernant le code
Qqs petites explications annexes: le code comportent des modifs pour optimiser l'utilisation avec Insync.
Insync me permet de pousser les videos vers mon google drive.
Ensuite, sur mon android, en tache de fond, Autosynch pro me recupere les videos depuis le google drive pour visionage dans le metro (hors connexion)
http://play.google.com/store/apps/detai … .drivesync
Voila! Maintenant a vous de jouer pour l'ameliorer
#!/usr/bin/python
# -*- coding: utf-8 -*-
###########################################################################
# Copyright (C) 2014 Ziss #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 2 of the License, or #
# any later version. #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
###########################################################################
#
#Changelog:
#V 0.4
#25-07-2014 : Creation
from bs4 import BeautifulSoup
import os, urllib2, subprocess, string, unicodedata, shlex, shutil
###########################################################################
# Options
# Directories and paths
output_dir = "/media/ziss/Data1TB/Insync/DL"
output_tmp_dir = "/media/ziss/Data1TB/.tmp/" #useful when doing cloud synch as it avoids uploading .frag from youtube-dl
HIST = os.path.join(output_dir , ".webDL_hist")
doNotDLList = ["Best Of", "Best-Of", "Best of", "Best-of", "La semaine", "Semaine du"]
want_sub_dirs = True #if you want sub directories and not everything under the same directory
###########################################################################
bad_chars = '(){}<>\\/\"%$*|~+!#'
def cleanStr(s): #Can be improved for sure...
s=' '.join(unicode(s).split())
s = str(unicodedata.normalize('NFKD', s).encode('ascii','ignore'))
s = s.replace("\'", " ")
return s.translate(string.maketrans("", "", ), bad_chars)
def parseLWT(soup):
#print (soup.prettify())
vids=[]
for row in soup.find_all('h3', "yt-lockup-title"):
vids.append(["www.youtube.com"+row.a['href'].split('&list')[0] , row.a['title'].split(': ')[1] ])
return vids
def parseCanalG(soup): #General. Should work for all Canal+ progs but 'Pepites sur le Net'
vids=[]
for row in soup.find_all('h4', 'h4noRedMea'):
vids.append([ row.a['href'] , row.a.contents[0]])
return vids
def parseCanalGClean(soup):
vids=[]
for row in soup.find_all('h4', 'h4noRedMea'):
if not any(word in row.a.contents[0] for word in doNotDLList):
vids.append([ row.a['href'] , row.a.contents[0]])
return vids
def parseCanalPSN(soup):
vids=[]
for row in soup.find_all('h4'):
if row.has_attr('title') and "pites sur le Net" in row['title']: #should be improved here
vids.append([ row.a['href'] , row.a.contents[0]])
return vids
"""
def parseCanalZap(soup):
vids=[]
for row in soup.find_all('h4'):
if row.has_attr('title') and "Zapping" in row['title'] and "Semaine" not in row.a.contents[0]: #I don't need the weekly best-of
vids.append([ row.a['href'] , row.a.contents[0]])
return vids
"""
# Base Urls
baseUrls=[
["LWT", "http://www.youtube.com/user/LastWeekTonight/videos", parseLWT], #Last Week Tonight
["PSN", "http://www.canalplus.fr/c-divertissement/pid1778-c-pepites-sur-le-net.html", parseCanalPSN], #Pepites sur le Net
["Zap", "http://www.canalplus.fr/c-infos-documentaires/pid1830-c-zapping.html", parseCanalGClean], #Zapping
["GPr", "http://www.canalplus.fr/c-divertissement/pid4801-c-gaspard-proust.html", parseCanalG], #Gaspard Proust
["LPJ", "http://www.canalplus.fr/c-divertissement/c-le-petit-journal/pid6515-l-emission.html", parseCanalGClean], #Le petit Journal
["LGI", "http://www.canalplus.fr/c-divertissement/pid1784-c-les-guignols.html", parseCanalGClean] #Les Guignols de l'Info
]
###########################################################################
# Execute command and write stdout in file var
def execute(params, file):
p = subprocess.Popen(params,stdout=file)
p.wait()
return p.returncode
def addHistory(name):
file = open(HIST, 'a')
file.write(name + '\n')
file.close()
def checkHistory(name):
findvalue = 0
file = open(HIST, 'r')
for line in file:
if line == name + '\n':
findvalue = 1
file.close()
return findvalue
# MAIN
if __name__ == "__main__":
if os.path.exists(HIST) == False:
file = open(HIST, 'w')
file.close()
if not os.path.exists(output_tmp_dir): #Check if directory exists, if not then create it
os.makedirs(output_tmp_dir)
for prog, url, parser in baseUrls:
vids = parser(BeautifulSoup(urllib2.urlopen(url).read()))
for vidUrl, title in vids:
if checkHistory(vidUrl) == 0:
if want_sub_dirs: #Sub directories or not
output_dir_prog = os.path.join(output_dir , prog)
else:
output_dir_prog = output_dir
if not os.path.exists(output_dir_prog): #Check if directory exists, if not then create it
os.makedirs(output_dir_prog)
filename = prog + "-%(upload_date)s-"+cleanStr(title)+".%(ext)s" #Format your files the way you want. See youtube-dl help for %(upload_date)s and %(ext)s
cmd = "youtube-dl "+ vidUrl +" -o \""+ os.path.join(output_tmp_dir, filename) +"\""
print (cmd)
args = shlex.split(cmd)
p = subprocess.Popen(args)
p.wait()
if (p.returncode) == 0:
#print ("youtube-dl success")
# move file after download. Not direct download to avoid synch issue with cloud
source = os.listdir(output_tmp_dir)
for files in source:
try:
shutil.move(os.path.join(output_tmp_dir, files), output_dir_prog) #shutil is compatible with diff drives and filesystems, not os.rename()
except IOError, e:
print "Unable to move file. %s" % e
exit(1)
#print ("Success")
addHistory(vidUrl) #store the url to avoid to dl again next time
else:
print ("FAILED!!! youtube-dl returncode: " + str(p.returncode))
#else:
#print (cleanStr(title) + " is already Downloaded")
Hors ligne
#50 Le 30/07/2014, à 01:26
- nesthib
Re : [script/python] Télécharger les émissions quotidiennes de Canal+
@Gaara : désolé, j'avais loupé ton message. Bien entendu, tu peux utiliser le code de mon script.
@ziss : j'ai survolé extrêmement rapidement ton script, le problème est que tu perds toute l'interactivité qu'il y avait dans le mien.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne