#51 Le 17/05/2015, à 11:24
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Autre bug de get_iplayer, il ne télécharge pas les vidéos ne comprenant que des chiffres dans le titre, par exemple la série 1864
http://www.bbc.co.uk/iplayer/episode/b0 … -episode-1
youtube-dl n'a pas ce problème
Debian 12 sur Thinkpad reconditionné
Hors ligne
#52 Le 19/05/2015, à 14:07
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Jái mis une nouvelle version de BBCrecord et BBCproxy sur gitlab,
les noms sont:
BBCrecordv1.py et BBCproxyv1.py
Je ne pense pas que ca sera une solution pour les problemes signales par k3c masi il y a quand meme quelques modifications.importantes.
Dernière modification par BobW (Le 19/05/2015, à 14:08)
Hors ligne
#53 Le 19/05/2015, à 14:38
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
@k3c
je viens de telecharger les 2 episode 1864 avec BBCrecordv1
SEARCH sans arguments resultant la liste complete
les 2 premieres lignes sont les 2 episodes 1864
Philby n-est plus lá
certains programmes ne restent que 7 jours dans la catalogue de iplayer...
Hors ligne
#54 Le 19/05/2015, à 14:59
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
J'ai téléchargé Philby si ça t'intéresse :-)
Je vais tester ta dernière version, merci
Debian 12 sur Thinkpad reconditionné
Hors ligne
#55 Le 19/05/2015, à 15:17
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
tu les installes où tes scripts ? Tu dis python directory, mais plus précisément ?
Debian 12 sur Thinkpad reconditionné
Hors ligne
#56 Le 20/05/2015, à 18:07
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
@k3c
si je n'ai pas fait des erreurs on peut trouver les 2 scripts sur le site de Gitlab sous BobW
mais peut etre je dois encore faciliter la possible recherche, mais je ne sais pas encore comment je dois
faire cela,
Bonne Chance!
Hors ligne
#57 Le 20/05/2015, à 19:14
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
oui je les ai trouvés, mais tu les copies où ?
dans ~, dans /usr/bin/python3/xxx, autrepart ?
Debian 12 sur Thinkpad reconditionné
Hors ligne
#58 Le 20/05/2015, à 20:42
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
chaque installation peut etre different
je dirais lá ou il ya les autres scripts de python 3 et lá ou etaient les anciennes versions (noms sans v1)
sur mon PC les 2 scripts se trouvent dans /home/bob/Desktop
je suis déja content que tu les a trouvés
Dernière modification par BobW (Le 20/05/2015, à 20:45)
Hors ligne
#59 Le 02/06/2015, à 22:20
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
La BBC a changé des choses, donc pour que ça récupère la liste des vidéos, là où on faisait avant, pour trouver une vidéo contenant
remain
dans le titre
get_iplayer remain
il faut maintenant faire
get_iplayer --refresh-feeds-tv=schedule remain
source https://github.com/get-iplayer/get_iplayer/issues/159
Dernière modification par k3c (Le 03/06/2015, à 04:47)
Debian 12 sur Thinkpad reconditionné
Hors ligne
#60 Le 04/06/2015, à 11:25
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Plus important encore: il y a des nouvelles versions de get_iplayer. Les anciennes versions ne fonctionnent plus
depuis le 3 juin a cause des modifications de la part du BBC. J'a i testé les versions 2.93 por Linux et 2.94 pour
Windows avec BBCrecordv1.py et tout marche..
Hors ligne
#61 Le 20/10/2015, à 08:48
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Bon mon script ne fonctionne plus car le site de proxys que j'utilise a changé, et donc je ne renvoie plus un seul proxy.
Je crois que je vais juste enregistrer la BBC live avec le script wilmaa que j'ai posté, à moins que je ne retrouve le courage et le temps de recommencer le parsing du site de proxys...
Debian 12 sur Thinkpad reconditionné
Hors ligne
#62 Le 01/11/2015, à 21:12
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Un fix pour la bbc, mon bbc33.py
j'utilise un autre site de proxys
/usr/bin/env python
# -*- coding:utf-8 -*-
# bbc_proxy version 0.3 par k3c, sortie quand deja telecharge
# passage de proxy en 2 ème parametre
import subprocess, sys, shlex
import random
import urllib2
import requests
import bs4 as BeautifulSoup
import socket
from threading import Thread
ON_POSIX = 'posix' in sys.builtin_module_names
Finished = False
listeUserAgents = [ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1',
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1',
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\
',
'Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori',
'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1',
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8' ]
allTimeouts = (3, 10, 15, 20)
class FlushFile(object):
"""Write-only flushing wrapper for file-type objects."""
def __init__(self, f):
self.f = f
def write(self, x):
self.f.write(x)
self.f.flush()
def start_thread(func, *args):
t = Thread(target=func, args=args)
t.daemon = True
t.start()
return t
def consume(infile):
global Finished
for line in iter(infile.readline, ''):
if 'Finished writing to temp file.' in line:
Finished = True
if 'Already in history' in line:
Finished = True
print line,
infile.close()
def getProxy():
import re
import requests
import bs4 as BeautifulSoup
html = requests.get('http://www.gatherproxy.com/proxylist/country/?c=United%20Kingdom')
soup = BeautifulSoup.BeautifulSoup(html.text)
mastr = soup.find_all('script')
lst = []
for x in mastr:
slst = []
if "gp.insertPrx" in x.text:
m = re.search('"PROXY_IP":"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',x.text)
if m:
slst.append(m.group(1))
mport = re.search('"PROXY_PORT":"(\w*[0-9]*)',x.text)
if mport:
slst.append(int(mport.group(1),16))
mportype = re.search('"PROXY_TYPE":"(\w*)',x.text)
if mportype:
slst.append(mportype.group(1))
lst.append(slst)
for href in lst:
yield href
def getValidProxy():
for timeout in allTimeouts:
print 'Timeout =', timeout
socket.setdefaulttimeout(timeout)
for host, port, typeproxy in getProxy():
try:
print 'Trying %s:%s' % (host, port)
print host, type(host), port, type(port)
params = (host, port)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(params)
s.close()
yield host, port, typeproxy
# except urllib2.URLError:
# pass
except socket.timeout:
pass
except socket.error:
pass
def main():
global Finished
# Replace stdout with an automatically flushing version
sys.stdout = FlushFile(sys.__stdout__)
sys.stderr = FlushFile(sys.__stderr__)
idvideo = sys.argv[1]
for host, port, typeproxy in getValidProxy():
print host, port, typeproxy
if len(sys.argv) > 1 and sys.argv[2] == '1':
cmds = "get_iplayer --get "+idvideo + " --nopurge --modes=best --subtitles --force -p 'http://"+host+":"+str(port)+"'"
else:
cmds = "get_iplayer --get "+idvideo + " --nopurge --modes=best --subtitles -p 'http://"+host+":"+str(port)+"'"
print cmds
arguments = shlex.split(cmds)
Finished = False
process = subprocess.Popen(arguments, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pid = process.pid
thread1 = start_thread(consume, process.stdout)
thread2 = start_thread(consume, process.stderr)
thread1.join() # wait for IO completion
thread2.join() # wait for IO completion
retcode = process.wait()
print retcode
if Finished:
break
if __name__ == "__main__":
main()
Dernière modification par k3c (Le 01/11/2015, à 21:47)
Debian 12 sur Thinkpad reconditionné
Hors ligne
#63 Le 03/11/2015, à 17:44
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
petites modifs, et essai des proxys de catégorie elite en premier
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# bbc_proxy version 0.3 par k3c, sortie quand deja telecharge
# passage de proxy en 2 ème parametre
# essai des proxys de catégorie elite en premier
import subprocess, sys, shlex
import random
import urllib2
import requests
import bs4 as BeautifulSoup
import re
import socket
from threading import Thread
ON_POSIX = 'posix' in sys.builtin_module_names
Finished = False
listeUserAgents = [ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1',
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1',
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13\
',
'Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) midori',
'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1',
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8' ]
allTimeouts = (3, 10, 15, 20)
class FlushFile(object):
"""Write-only flushing wrapper for file-type objects."""
def __init__(self, f):
self.f = f
def write(self, x):
self.f.write(x)
self.f.flush()
def start_thread(func, *args):
t = Thread(target=func, args=args)
t.daemon = True
t.start()
return t
def consume(infile):
global Finished
for line in iter(infile.readline, ''):
if 'Finished writing to temp file.' in line:
Finished = True
if 'Already in history' in line:
Finished = True
print line,
infile.close()
def getProxyInfo(text):
slst = []
if "gp.insertPrx" in text:
m = re.search('"PROXY_IP":"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',text)
if m:
slst.append(m.group(1))
mport = re.search('"PROXY_PORT":"(\w*[0-9]*)', text)
if mport:
slst.append(int(mport.group(1),16))
mportype = re.search('"PROXY_TYPE":"(\w*)', text)
if mportype:
slst.append(mportype.group(1))
return slst
def getProxy():
html = requests.get('http://www.gatherproxy.com/proxylist/country/?c=United%20Kingdom')
soup = BeautifulSoup.BeautifulSoup(html.text)
mastr = soup.find_all('script')
lst = []
for x in mastr:
slst = getProxyInfo(x.text)
if len(slst) > 2 and slst[2] == u'Elite':
print slst
yield slst
for x in mastr:
slst = getProxyInfo(x.text)
if len(slst) > 2 and slst[2] != u'Elite':
print slst
yield slst
def getValidProxy():
for timeout in allTimeouts:
print 'Timeout =', timeout
socket.setdefaulttimeout(timeout)
for host, port, typeproxy in getProxy():
try:
print 'Trying %s:%s' % (host, port)
print host, type(host), port, type(port)
params = (host, port)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(params)
s.close()
yield host, port, typeproxy
except socket.timeout:
pass
except socket.error:
pass
def main():
global Finished
sys.stdout = FlushFile(sys.__stdout__)
sys.stderr = FlushFile(sys.__stderr__)
idvideo = sys.argv[1]
for host, port, typeproxy in getValidProxy():
print host, port, typeproxy
if len(sys.argv) > 1 and sys.argv[2] == '1':
cmds = "get_iplayer --get "+idvideo + " --nopurge --modes=best --subtitles --force -p 'http://"+host+":"+str(port)+"'"
else:
cmds = "get_iplayer --get "+idvideo + " --nopurge --modes=best --subtitles -p 'http://"+host+":"+str(port)+"'"
print cmds
arguments = shlex.split(cmds)
Finished = False
process = subprocess.Popen(arguments, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pid = process.pid
thread1 = start_thread(consume, process.stdout)
thread2 = start_thread(consume, process.stderr)
thread1.join() # wait for IO completion
thread2.join() # wait for IO completion
retcode = process.wait()
print retcode
if Finished:
break
if __name__ == "__main__":
main()
Dernière modification par k3c (Le 03/11/2015, à 17:44)
Debian 12 sur Thinkpad reconditionné
Hors ligne
#64 Le 23/11/2015, à 22:20
- BobW
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Mes versions BBrecordv2.py avec BCproxyv2,py fonctionnent encore toujours.
Et les principes utilises sont les memes que l'ancienne version de votre BBC33
Mais certainement je vais etudier vos modifications et eventuellement adapter une prochaine version
de BBCrecord et BBCProxy, mais pur l'instant je ne vois pas encore la necessité.
Hors ligne
#65 Le 29/12/2015, à 17:47
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Bon, comme le site gatherproxy.com a été en carafe 24 h, j'ai noté que je dois tester son accessibilité...
Je vais essayer d'utiliser plusieurs sites de proxys, ça serait mieux :-)
Debian 12 sur Thinkpad reconditionné
Hors ligne
#66 Le 04/08/2016, à 15:10
- k3c
Re : [script Python] Récupérer les vidéos de la BBC avec get_iplayer
Bon la BBC sur Internet, c'est fini au 1 er septembre, ils faudra montrer qu'on a payé la redevance à la BBC...
https://www.theguardian.com/media/2016/ … r-loophole
Bien dommage
Debian 12 sur Thinkpad reconditionné
Hors ligne