Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#51 Le 26/07/2010, à 19:00

chaoswizard

Re : TVDownloader: télécharger les médias du net !

pascal92 a écrit :

Bonsoir,
Non ce n'est pas possible, RtmpDump (et je suppose Flvstreamer) n'arrive pas à parser l'URL si elle n'est pas découpée.
J'avais étudié ce problème en mettant au point Arte Live Web pour TVO.

Bon courage pour votre projet smile

Je viens pourtant de tester, ça marche.
Ça ne doit pas marcher qu'avec certaines URL.

RTMPDump v2.3
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
ERROR: You must specify a hostname (--host) or url (-r "rtmp://host[:port]/playpath") containing a hostname

Dernière modification par chaoswizard (Le 26/07/2010, à 19:03)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#52 Le 26/07/2010, à 19:06

BmD_Online

Re : TVDownloader: télécharger les médias du net !

chaoswizard a écrit :

Est-ce que tu ne peux pas aussi le faire avec :

import urllib
urllib.unquote( chaine )

Je viens justement de découvrir ça !

En fait, c'est mon premier programme en python et je ne connais pas toutes les fonctions utilisables. J'avance à tâtons.

Hors ligne

#53 Le 26/07/2010, à 19:07

chaoswizard

Re : TVDownloader: télécharger les médias du net !

BmD_Online a écrit :
chaoswizard a écrit :

Est-ce que tu ne peux pas aussi le faire avec :

import urllib
urllib.unquote( chaine )

Je viens justement de découvrir ça !

En fait, c'est mon premier programme en python et je ne connais pas toutes les fonctions utilisables. J'avance à tâtons.

Ce n'est pas un problème ; l'essentiel, c'est d'avoir des personnes de bonne volonté pour nous aider à faire les plugins.


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#54 Le 26/07/2010, à 23:11

BmD_Online

Re : TVDownloader: télécharger les médias du net !

Alors, voilà un premier jet pour le plugin arte. Il marche, dans le sens où il fournit la liste des émissions avec les liens qu'il faut.
Par contre, les téléchargements ne marchent pas, pour les raisons évoquées plus haut.

Pour Arte+7, c'est une autre erreur qu'on a :

Connecting ...
ERROR: HandleCtrl: Ignoring SWFVerification request, no CRYPTO support!
Starting download at: 0.000 kB
(...)
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
Download may be incomplete (downloaded about 2.20%), try resuming

Fichier plugins/Arte.py

#!/usr/bin/env python
# -*- coding:Utf-8 -*-

#########################################
# Licence : GPL2 ; voir fichier LICENSE #
#########################################

#~ Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
#~ Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
#~ Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.

###########
# Modules #
###########

import os

from Plugin import Plugin
from Fichier import Fichier
from Web import Web
from urllib import quote,unquote
import re,unicodedata
import time,rfc822 # for RFC822 datetime format (rss feed)
from htmlentitydefs import name2codepoint

##########
# Classe #
##########

class Arte( Plugin ):
	"""Classe abstraite Plugin dont doit heriter chacun des plugins"""
	
	##
	## Arte Live Web
	##
	
	#
	# A/ Recherche des émissions
	#
	# 1. On liste les catégories à partir de la page d'accueil.
	#    Chaque catégorie est une "émission" de la chaine Arte Live Web
	#
	# B/ Recherche des fichiers d'une émission
	#
	# 1. On recherche la page du flux RSS à partir de la page de la catégorie choisie.
	# 2. On extrait la liste des fichiers (les pages de chaque enregistrement proposé)
	# 3. On recherche le numéro eventID à partir de la page de l'enregistrement
	# 4. On recherche les détails de l'enregistrement dans la page xml associée à l'eventID
	#

	##
	## Arte+7
	##
	## Utilisation de la méthode de Pascal92
	## http://www.encodage.org/phpBB/viewtopic.php?f=26&t=90
	##
	
	#
	# A/ Recherche des émissions
	#
	# 1. On liste les chaines à partir de la page d'accueil.
	#    Chaque chaine est une "émission" de la chaine Arte+7
	#
	# B/ Recherche des fichiers d'une émission
	#
	# 1. On charge la page spéciale "videoArtePlusSeptChaineBaseUrl" contenant les fichiers de la chaine choisie
	# 2. On extrait la liste des fichiers (les pages ainsi que nom et date de chaque enregistrement proposé)
	# 3. On recherche le numéro de référence de la vidéo à partir de la page de l'enregistrement
	# 4. On recherche les détails de l'enregistrement dans la page xml associée à la référence
	#
	
	##
	## Arte Live Web
	##
	nomArteLiveWeb = "Arte Live Web"
    # Page permettant de lister les catégories
	listeArteLiveWebCategoriesUrl = "http://liveweb.arte.tv/"
	# Expression régulière pour extraire les catégories
	listeArteLiveWebCategoriesPattern = re.compile("<a href=\"http://liveweb.arte.tv/fr/cat/(.*?)\">(.*?)</a>", re.DOTALL)
	# Rang dans le résultat de l'expression régulière précédente
	categorieArteLiveWeb_LIEN = 0
	categorieArteLiveWeb_NOM = 1
	# Base de la page catégorie, permettant de retrouver le lien du flux RSS
	videoArteLiveWebCategorieBaseUrl = "http://liveweb.arte.tv/fr/cat/"
	# Expression régulière pour extraire le lien du flux RSS
	videoArteLiveWebRSSPattern = re.compile("<a href=\"(http://download.liveweb.arte.tv/o21/liveweb/rss/home.*?\.rss)\"", re.DOTALL)

	# Expression régulière pour extraire le lien vers la page de la video, ainsi que sa date
	videoArteLiveWebVideosPattern = re.compile("<link>(http://liveweb.arte.tv/fr/video/.*?)</link>.*?<pubDate>(.*?)</pubDate>", re.DOTALL)
	#~ videoArteLiveWebEventIDPattern = re.compile("eventID=(.*?)&")
	#~ videoArteLiveWebEventIDPattern = re.compile("new LwEvent('(.*?)', '');")
	videoArteLiveWebEventIDPattern = re.compile("/media/event/(.*?)/", re.DOTALL)
	videoArteLiveWebInfosBaseUrl = "http://arte.vo.llnwd.net/o21/liveweb/events/event-" # ".xml"
	
	videoArteLiveWebTitrePattern = re.compile("<nameFr>(.*?)</nameFr>", re.DOTALL)
	videoArteLiveWebLienPattern = re.compile("<urlHd>(.*?)</urlHd>", re.DOTALL)
	#~ videoArteLiveWebDatePattern = re.compile("<dateEvent>(.*?)</dateEvent>", re.DOTALL)
	
	##
	## Arte+7
	##
	nomArtePlusSept = "Arte+7"
    # Page permettant de lister les chaines
	listeArtePlusSeptChainesUrl = "http://videos.arte.tv/fr/videos/arte7"
	# Expression régulière pour extraire les chaines
	listeArtePlusSeptChainesPattern = re.compile("<a href=\"/fr/videos/chaines/(.*?)\".*?>(.*?)</a>", re.DOTALL)
	# Rang dans le résultat de l'expression régulière précédente
	categorieArtePlusSept_LIEN = 0
	categorieArtePlusSept_NOM = 1
	# Expression régulière pour extraire le channelID du lien de la chaine
	chaineArtePlusSeptChannelIDPattern = re.compile(".*?/index-(.*?)\.html", re.DOTALL)
	# Base de la page chaine, permettant de retrouver les fichiers (lien donné par "listViewUrl" dans la page principale)
	videoArtePlusSeptChaineBaseUrl = "http://videos.arte.tv/fr/do_delegate/videos/arte7/index-3211552,view,asList.html?hash=fr/list/date//1/250/channel-%channel%-program-"

	# Expression régulière pour extraire le lien vers la page de la video, son titre ainsi que sa date
	videoArtePlusSeptVideosPattern = re.compile("<a href=\"(/fr/videos/.*?\.html)\"><span class=\"teaserTitle\">(.*?)</span></a>.*?<td class=\"col2\"><em>(.*?)</em></td>", re.DOTALL)
	# Base de la page permettant de rechercher la référence de la video
	videoArtePlusSeptVideoBaseUrl = "http://videos.arte.tv"
	# Expression régulière pour extraire la référence de la vidéo à lire
	videoArtePlusSeptVideoRefPattern = re.compile("addToPlaylistOpen {ajaxUrl:'/fr/do_addToPlaylist/videos/.*?-(.*?)\.html'}", re.DOTALL)
	# Base de la page XML décrivant la vidéo, ses liens
	videoArtePlusSeptXMLBaseURL = "http://videos.arte.tv/fr/do_delegate/videos/360_geo-%video%,view,asPlayerXml.xml"
	videoArtePlusSeptLienPattern = re.compile("<url quality=\"hd\">(.*?)</url>", re.DOTALL)

	
	# Nombre maximum de fichiers à rechercher (0 = aucune limite)
	maxDepth = 0
	# Ordre des éléments dans le tuple "chaine"
	chaine_NOM = 1
	chaine_LIEN = 0
	
	nom = "Arte"
	url = "http://www.arte.tv/"
	
	def __init__( self ):
		Plugin.__init__(self)
		
		cache = self.chargerCache()
		if cache:
			self.listeChaines = cache
		else:
			self.listeChaines = {}
			self.rafraichir()
		self.listeFichiers = {}

	def htmlentitydecode(self, s):
		# http://wiki.python.org/moin/EscapingHtml
		return re.sub('&(%s);' % '|'.join(name2codepoint), 
				lambda m: unichr(name2codepoint[m.group(1)]), s)

	def rafraichir( self ):
		self.afficher("Création de la liste des chaines...")
		web = Web()

		##
		## Arte Live Web
		##
		self.afficher("Récupération de la liste des catégories "+self.nomArteLiveWeb+"...")
		# On crée la chaine
		self.listeChaines[self.nomArteLiveWeb] = []
		# On recherche toutes les catégories
		for item in re.findall(self.listeArteLiveWebCategoriesPattern, web.getPage(self.listeArteLiveWebCategoriesUrl)):
			lien = item[self.categorieArteLiveWeb_LIEN]
			nom = item[self.categorieArteLiveWeb_NOM]
			nom = unicode(nom, "iso-8859-1", "replace")
			itemLive = []
			itemLive.insert (self.chaine_LIEN, lien)
			itemLive.insert (self.chaine_NOM, nom)
			# On ajoute la catégorie trouvée si elle n'est pas déjà présente
			if (itemLive not in self.listeChaines[self.nomArteLiveWeb]):
				self.listeChaines[self.nomArteLiveWeb].append(itemLive)

		##
		## Arte+7
		##
		self.afficher("Récupération de la liste des chaines "+self.nomArtePlusSept+"...")
		# On crée la chaine
		self.listeChaines[self.nomArtePlusSept] = []
		# On recherche toutes les catégories
		for item in re.findall(self.listeArtePlusSeptChainesPattern, web.getPage(self.listeArtePlusSeptChainesUrl)):
			lien = item[self.categorieArtePlusSept_LIEN]
			nom = item[self.categorieArtePlusSept_NOM]
			nom = unicode(nom, "utf8", "replace")
			nom = self.htmlentitydecode(nom)
			#~ nom = unquote(nom)
			itemPlusSept = []
			itemPlusSept.insert (self.chaine_LIEN, lien)
			itemPlusSept.insert (self.chaine_NOM, nom)
			# On ajoute la catégorie trouvée si elle n'est pas déjà présente
			if (itemPlusSept not in self.listeChaines[self.nomArtePlusSept]):
				self.listeChaines[self.nomArtePlusSept].append(itemPlusSept)

		self.sauvegarderCache(self.listeChaines)
	
	def getLienEmission(self, emission):
		emission = unicode( emission, "utf8", "replace" )
		# Cherche dans quelle chaine se trouve l'émission
		#~ self.afficher("Recherche de : "+emission)
		#~ for chaine in self.listeChaines.keys():
		#~ 	#~ self.afficher("Chaine : "+chaine)
		chaine = self.derniereChaine
		for item in self.listeChaines[chaine]:
			s = item[self.chaine_NOM]
			#~ s = unicode( s, "utf8", "replace" )
			#~ self.afficher("Item : "+s)
			if (cmp(s, emission)==0):
				s = item[self.chaine_LIEN]
				if (s==""):
					return None
				else:
					#~ return self.videoArteLiveWebCategorieBaseUrl+quote(s.encode( 'ascii','ignore' ))
					return quote(s.encode( 'ascii','ignore' ))
	
	def listerChaines( self ):
		t = self.listeChaines.keys()
		t.sort()
		return t
	
	def listerEmissions( self, chaine ):
		t = []
		self.derniereChaine = chaine
		if self.listeChaines.has_key(chaine):
			for item in self.listeChaines[chaine]:
				s = item[self.chaine_NOM]
				#~ t.append(s.decode("iso-8859-1"))
				t.append(s)
			t.sort()
		return t

	def listerFichiersArteLiveWeb( self, emission ):
		"""Renvoi la liste des fichiers disponibles pour une emission donnnee"""
		# Renvoi la liste des fichiers (utilisation de la classe Fichier)
		#    [ Fichier ( nom, date, lien) , Fichier( ... ), ... ]
		if self.listeFichiers.has_key(emission):
			return self.listeFichiers[emission]
		web = Web()
		
		lien = self.getLienEmission(emission)
		
		if lien == None:
			self.afficher ("Erreur de recherche du lien pour \""+emission+"\"")
		else:
			self.afficher("Récupération de la liste des fichiers pour \""+emission+"\"...")
			# Reconstitution du lien complet
			lien = self.videoArteLiveWebCategorieBaseUrl+lien
			# On recherche l'adresse de la page RSS
			self.afficher ("Recherche du flux RSS \""+emission+"\" à l'adresse "+lien)
			feedURL = re.search(self.videoArteLiveWebRSSPattern, web.getPage(lien)).group(1)

			# On recherche toutes les émissions contenues dans le flux RSS
			self.afficher ("Recherche des émissions dans le flux : "+feedURL)
			videos = re.findall(self.videoArteLiveWebVideosPattern, web.getPage(feedURL))

			liste = []
			if videos == None:
				return liste

			# Pour chacune des vidéos trouvées
			curDepth = 0
			for fichier in videos:
				#~ curDepth = curDepth+1
				curDepth += 1
				if (self.maxDepth>0 and curDepth>self.maxDepth):
					break
				
				self.afficher ("Émission trouvée "+fichier[0])
				# Recherche de l'eventID dans la page de l'emission
				fichierInfosEventID_match = re.search (self.videoArteLiveWebEventIDPattern, web.getPage(fichier[0]))
				if fichierInfosEventID_match == None:
					continue
				self.afficher ("... eventID : "+fichierInfosEventID_match.group(1))
				
				# Chargement de la page XML de l'eventID trouvé
				fichierInfos = web.getPage(self.videoArteLiveWebInfosBaseUrl+fichierInfosEventID_match.group(1)+".xml")

				titre = re.search(self.videoArteLiveWebTitrePattern, fichierInfos)
				if titre != None:
					titre = titre.group(1)
				else:
					continue
				lien = re.search(self.videoArteLiveWebLienPattern, fichierInfos)
				if lien != None:
					lien = lien.group(1)
				else:
					continue
				#~ date =  re.search(self.videoDatePattern, fichierInfos)
				date =  fichier[1]
				if date != None:
					rfc_date = rfc822.parsedate(date)
					# Format année/mois/jour, mieux pour effectuer un tri
					date = str(rfc_date[0])+"/"+str(rfc_date[1]).zfill(2)+"/"+str(rfc_date[2]).zfill(2)
				else:
					continue
				
				if not(lien):
					continue
				
				self.afficher ("... Titre : "+titre)
				self.afficher ("... Date : "+date)
				self.afficher ("... Lien : "+lien)
				
				liste.append(Fichier(titre, date, lien))
			self.afficher(str(len(liste))+" fichiers trouvés.")
			self.listeFichiers[emission] = liste
			return liste

	def listerFichiersArtePlusSept( self, emission ):
		"""Renvoi la liste des fichiers disponibles pour une emission donnnee"""
		# Renvoi la liste des fichiers (utilisation de la classe Fichier)
		#    [ Fichier ( nom, date, lien) , Fichier( ... ), ... ]
		if self.listeFichiers.has_key(emission):
			return self.listeFichiers[emission]
		web = Web()
		
		# Code de la "chaine" Arte+7
		channel = re.search (self.chaineArtePlusSeptChannelIDPattern, self.getLienEmission(emission)).group(1)
		# Construction du lien contenant toutes les émissions de cette chaine
		lien = self.videoArtePlusSeptChaineBaseUrl.replace ("%channel%", channel)
		
		if lien == None:
			self.afficher ("Erreur de recherche du lien pour \""+emission+"\"")
		else:
			self.afficher("Récupération de la liste des fichiers pour \""+emission+"\"...")

			# On recherche toutes les émissions de la chaine
			self.afficher ("Recherche des émissions de la chaine \""+emission+"\" à l'adresse "+lien)
			videos = re.findall(self.videoArtePlusSeptVideosPattern, web.getPage(lien))

			liste = []
			if videos == None:
				return liste

			# Pour chacune des vidéos trouvées
			curDepth = 0
			for fichier in videos:
				#~ curDepth = curDepth+1
				curDepth += 1
				if (self.maxDepth>0 and curDepth>self.maxDepth):
					break
				
				self.afficher ("Émission trouvée "+fichier[0])
				# Recherche de la référence de la vidéo dans la page de l'emission
				fichierInfosVideoRef_match = re.search (self.videoArtePlusSeptVideoRefPattern, web.getPage(self.videoArtePlusSeptVideoBaseUrl+fichier[0]))
				if fichierInfosVideoRef_match == None:
					continue
				self.afficher ("... videoRef : "+fichierInfosVideoRef_match.group(1))
				
				#~ # Chargement de la page XML de la référence trouvée
				fichierInfos = web.getPage(self.videoArtePlusSeptXMLBaseURL.replace("%video%",fichierInfosVideoRef_match.group(1)))

				#~ file = open(self.fichierCache+"_web", "w")
				#~ file.write (fichierInfos)
				#~ file.close()

				titre = fichier[1]
				lien = re.search(self.videoArtePlusSeptLienPattern, fichierInfos)
				if lien != None:
					lien = lien.group(1)
				else:
					continue
				date =  fichier[2]
				
				if not(lien):
					continue
				
				self.afficher ("... Titre : "+titre)
				self.afficher ("... Date : "+date)
				self.afficher ("... Lien : "+lien)
				
				liste.append(Fichier(titre, date, lien))
			self.afficher(str(len(liste))+" fichiers trouvés.")
			self.listeFichiers[emission] = liste
			return liste

	
	def listerFichiers( self, emission ):
		if (self.derniereChaine == self.nomArteLiveWeb):
			return self.listerFichiersArteLiveWeb (emission)
		elif (self.derniereChaine == self.nomArtePlusSept):
			return self.listerFichiersArtePlusSept (emission)
		else:
			self.afficher("Chaine non prise en compte actuellement")

Hors ligne

#55 Le 27/07/2010, à 02:41

sonydesouza

Re : TVDownloader: télécharger les médias du net !

Génial,

Je m'abonne ! big_smile

Hors ligne

#56 Le 27/07/2010, à 06:23

pascal92

Re : TVDownloader: télécharger les médias du net !

BmD_Online a écrit :

Pour Arte+7, c'est une autre erreur qu'on a :

Connecting ...
ERROR: HandleCtrl: Ignoring SWFVerification request, no CRYPTO support!
Starting download at: 0.000 kB
(...)
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
Download may be incomplete (downloaded about 2.20%), try resuming

Pour Arte+7 il est nécessaire d'indiquer le player, le mieux est de le retrouver dans la page de l'émission mais celui-ci semble être toujours le même, actuellement :
-- swfVfy "http://videos.arte.tv/blob/web/i18n/view/player_8-3188338-data-4746614.swf"

@+

Hors ligne

#57 Le 27/07/2010, à 08:05

BmD_Online

Re : TVDownloader: télécharger les médias du net !

pascal92 a écrit :
BmD_Online a écrit :

Pour Arte+7, c'est une autre erreur qu'on a :

Connecting ...
ERROR: HandleCtrl: Ignoring SWFVerification request, no CRYPTO support!
Starting download at: 0.000 kB
(...)
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
Download may be incomplete (downloaded about 2.20%), try resuming

Pour Arte+7 il est nécessaire d'indiquer le player, le mieux est de le retrouver dans la page de l'émission mais celui-ci semble être toujours le même, actuellement :
-- swfVfy "http://videos.arte.tv/blob/web/i18n/view/player_8-3188338-data-4746614.swf"

@+

A voir comment intégrer ça à l'appli ? Comment le plugin peut-il transmettre cette information au programme principal ?
Il faudrait ajouter ça dans la classe Fichier. Genre une propriété player, vide par défaut.

Hors ligne

#58 Le 27/07/2010, à 08:15

chaoswizard

Re : TVDownloader: télécharger les médias du net !

BmD_Online a écrit :

A voir comment intégrer ça à l'appli ? Comment le plugin peut-il transmettre cette information au programme principal ?
Il faudrait ajouter ça dans la classe Fichier. Genre une propriété player, vide par défaut.

Pour l'instant, en rajoutant directement l'option au lien, ça doit passer.


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#59 Le 27/07/2010, à 09:23

S00000

Re : TVDownloader: télécharger les médias du net !

Amélioration: Choix du dossier de téléchargement.
Mon /home est plein smile

Hors ligne

#60 Le 27/07/2010, à 09:31

chaoswizard

Re : TVDownloader: télécharger les médias du net !

S00000 a écrit :

Amélioration: Choix du dossier de téléchargement.
Mon /home est plein smile

Oui, cette option de devrait pas tarder (pas dans la prochaine version mais bientôt !)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#61 Le 27/07/2010, à 11:34

Vermouth

Re : TVDownloader: télécharger les médias du net !

La version 0.2 est maintenant disponible !
Suivez le lien de la première page ou cliquer ici.

Pour les plugins que vous créez, me contacter pour que je les mettes sur le site. On créera une page de wiki dédié aux plugins.

PS: pour ceux qui veulent développer un plugin, lisez la très courte documentation disponible dans /usr/share/doc/tvdownloader après installation du paquet.

Dernière modification par Vermouth (Le 27/07/2010, à 11:48)


Android !
\_/°<

   coin coin...

Hors ligne

#62 Le 27/07/2010, à 12:01

Emralegna

Re : TVDownloader: télécharger les médias du net !

Bonjour,

Je le télécharge depuis le dépôt SVN mais il semble vouloir chercher dans [/i]/usr/share/tvdownloader alors qu'il est dans mon [i]/home, certe dans tvdownloader/usr/share/tvdownloader :

[~/tvdownloader/usr/share/tvdownloader]                                                                    10 07-27 12:55PM
% ./Main.py 
Traceback (most recent call last):
  File "./Main.py", line 27, in <module>
    os.chdir( "/usr/share/tvdownloader" )
OSError: [Errno 2] No such file or directory: '/usr/share/tvdownloader'

Il ne faudrait peut-être reprendre la même structure de répertoire pour plus de lisibilité. wink

Hors ligne

#63 Le 27/07/2010, à 12:04

ludovic889

Re : TVDownloader: télécharger les médias du net !

bonjour

j'ai tenté pluzz/france 2/jt 13 h/26-juillet
et j'obtiens

sh: msdl: Permission denied

Ce n'est pas grave de ne pas avoir l'heure si on a le temps.

Hors ligne

#64 Le 27/07/2010, à 12:12

chaoswizard

Re : TVDownloader: télécharger les médias du net !

Emralegna a écrit :

Bonjour,

Je le télécharge depuis le dépôt SVN mais il semble vouloir chercher dans [/i]/usr/share/tvdownloader alors qu'il est dans mon [i]/home, certe dans tvdownloader/usr/share/tvdownloader :

[~/tvdownloader/usr/share/tvdownloader]                                                                    10 07-27 12:55PM
% ./Main.py 
Traceback (most recent call last):
  File "./Main.py", line 27, in <module>
    os.chdir( "/usr/share/tvdownloader" )
OSError: [Errno 2] No such file or directory: '/usr/share/tvdownloader'

Il ne faudrait peut-être reprendre la même structure de répertoire pour plus de lisibilité. wink

Oulà oui mais non, n'utilisez pas la verison SVN ; prenez les paquets !

ludovic889 a écrit :

bonjour

j'ai tenté pluzz/france 2/jt 13 h/26-juillet
et j'obtiens

sh: msdl: Permission denied

Il manque sans doute un petit chmod dans le script post install du paquet, on rajoute ça !

Dernière modification par chaoswizard (Le 27/07/2010, à 12:16)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#65 Le 27/07/2010, à 12:25

Vermouth

Re : TVDownloader: télécharger les médias du net !

Problème avec msdl corrigé.


Android !
\_/°<

   coin coin...

Hors ligne

#66 Le 27/07/2010, à 12:30

ludovic889

Re : TVDownloader: télécharger les médias du net !

Vermouth a écrit :

Problème avec msdl corrigé.

merci !!
entre temps, j'y suis parvenu tout seul

je télécharge un peu pour voir ce que ça donne
big_smile


Ce n'est pas grave de ne pas avoir l'heure si on a le temps.

Hors ligne

#67 Le 27/07/2010, à 12:52

Emralegna

Re : TVDownloader: télécharger les médias du net !

chaoswizard a écrit :
Emralegna a écrit :

Bonjour,

Je le télécharge depuis le dépôt SVN mais il semble vouloir chercher dans [/i]/usr/share/tvdownloader alors qu'il est dans mon [i]/home, certe dans tvdownloader/usr/share/tvdownloader :

[~/tvdownloader/usr/share/tvdownloader]                                                                    10 07-27 12:55PM
% ./Main.py 
Traceback (most recent call last):
  File "./Main.py", line 27, in <module>
    os.chdir( "/usr/share/tvdownloader" )
OSError: [Errno 2] No such file or directory: '/usr/share/tvdownloader'

Il ne faudrait peut-être reprendre la même structure de répertoire pour plus de lisibilité. wink

Oulà oui mais non, n'utilisez pas la verison SVN ; prenez les paquets !

Oui mais non, il n'y a pas que des systèmes .deb compatibles. Ce qui n'a pas de dépôts je le compile à partir des sources, et ce qui ne se compile pas je le préserve dans un dossier fait pour ; c'est bien plus facile à gérer ainsi qu'à mettre à jour.

Puis avec tous les projets que je suis s'il fallait aller sur tous les sites (à la Windows) pour récupérer le .deb/.rmp/.jenesaisquoi, j'ai pas fini…


Ce n'est pas possible de rendre le dépôt de source fonctionnel ?

Dernière modification par Emralegna (Le 27/07/2010, à 21:35)

Hors ligne

#68 Le 27/07/2010, à 13:13

Vermouth

Re : TVDownloader: télécharger les médias du net !

Emralegna a écrit :

Ce n'est pas possible de rendre le dépôt de source fonctionnel ?

Si ça peut se faire avec un scipt (Make) d'installation mais je n'ai pas encore eu le temps de faire wink !
Si, en attendant, tu veut que ça marche, met en commentaire la ligne qui pose problème.
Par contre les icônes ne seront peut être pas afficher (because arborescence imposé par Qt Designer et qu'on ne garde pas la même pour le deb).


Android !
\_/°<

   coin coin...

Hors ligne

#69 Le 27/07/2010, à 21:41

Emralegna

Re : TVDownloader: télécharger les médias du net !

Pourquoi un script d'installation ? Je ne veux en rien l'installer car là ça devient aussi difficile à maintenir (en plus de te donner davantage de boulot à faire un script). wink C'est un programme python, on devrait juste pouvoir l'exécuter dans son propre répertoire non ?

(Ou j'ai râté quelque chose ? tongue)

Dernière modification par Emralegna (Le 27/07/2010, à 21:41)

Hors ligne

#70 Le 27/07/2010, à 22:49

BmD_Online

Re : TVDownloader: télécharger les médias du net !

BmD_Online a écrit :
chaoswizard a écrit :

Est-ce que tu ne peux pas aussi le faire avec :

import urllib
urllib.unquote( chaine )

Je viens justement de découvrir ça !

En fait, c'est mon premier programme en python et je ne connais pas toutes les fonctions utilisables. J'avance à tâtons.

Alors, finalement je viens de comprendre que unquote permet juste de "tansformer" une url, en remplaçant les caractères spéciaux.

Ce qu'il me faut, c'est un décodage des entités html (dans une page, pas une url). Genre &nbsp; pour l'espace, &amp; pour le &, etc...
Et ça, urllib ne sait pas le faire.
Je reste donc pour l'instant avec ma fonction qui va bien "htmlentitydecode".

A coté, j'ai remplacé les web.getPage par self.getPage.

Je vais maintenant voir pour passer le player pour les liens arte+7.

Hors ligne

#71 Le 27/07/2010, à 22:51

jajaX

Re : TVDownloader: télécharger les médias du net !

Vermouth a écrit :

La version 0.2 est maintenant disponible !
Suivez le lien de la première page ou cliquer ici.

Pour les plugins que vous créez, me contacter pour que je les mettes sur le site. On créera une page de wiki dédié aux plugins.

PS: pour ceux qui veulent développer un plugin, lisez la très courte documentation disponible dans /usr/share/doc/tvdownloader après installation du paquet.

salut

problème de dépendance sous lucid pour cette version (avec le deb) :

error : dépendance non satisfaite  : rtmpdump (>=2.3)


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#72 Le 27/07/2010, à 23:09

BmD_Online

Re : TVDownloader: télécharger les médias du net !

jajaX a écrit :
Vermouth a écrit :

La version 0.2 est maintenant disponible !
Suivez le lien de la première page ou cliquer ici.

Pour les plugins que vous créez, me contacter pour que je les mettes sur le site. On créera une page de wiki dédié aux plugins.

PS: pour ceux qui veulent développer un plugin, lisez la très courte documentation disponible dans /usr/share/doc/tvdownloader après installation du paquet.

salut

problème de dépendance sous lucid pour cette version (avec le deb) :

error : dépendance non satisfaite  : rtmpdump (>=2.3)

Il faut installer la dernière version, qui se trouve ici :
http://security.ubuntu.com/ubuntu/pool/universe/r/rtmpdump/

Il serait pas mal de mettre ce lien dans le premier post du topic.
A la limite, on pourrait également noter le lien de flvstreamer :
http://security.ubuntu.com/ubuntu/pool/universe/f/flvstreamer/

Hors ligne

#73 Le 28/07/2010, à 00:31

jajaX

Re : TVDownloader: télécharger les médias du net !

merci c'est tout bon wink


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#74 Le 28/07/2010, à 06:53

clapico

Re : TVDownloader: télécharger les médias du net !

abonnement wink


http://www.clapico.com/ : mon p'tit blog avec mes p'tits trucs et mes p'tites découvertes de p'tit Ubuntéro

Hors ligne

#75 Le 28/07/2010, à 10:09

Vermouth

Re : TVDownloader: télécharger les médias du net !

BmD_Online a écrit :

Il faut installer la dernière version, qui se trouve ici :
http://security.ubuntu.com/ubuntu/pool/universe/r/rtmpdump/

Il serait pas mal de mettre ce lien dans le premier post du topic.
A la limite, on pourrait également noter le lien de flvstreamer :
http://security.ubuntu.com/ubuntu/pool/universe/f/flvstreamer/

Autant pour moi j'ai oublier.
Je vais corriger.
Sinon flvstreamer on ne l'utilisera plus. (edit)

BmD_Online a écrit :

Ce qu'il me faut, c'est un décodage des entités html (dans une page, pas une url). Genre &nbsp; pour l'espace, &amp; pour le &, etc..

Ça c'est réglé. Ça arrive avec la prochaine version.

Dernière modification par Vermouth (Le 28/07/2010, à 11:09)


Android !
\_/°<

   coin coin...

Hors ligne