Bonjour
J'ai automatisé la récupération de proxy à passer à Captvty pour les fainéants comme moi.
Je vais chercher des proxys sur proxynova.com, et je prends ceux de la meilleure qualité en premier.
Par exemple le français à l'étranger fera
python script.py fr
Pour regarder la télévision suisse (RTS)
python script.py ch
pour la télé canadienne (tou.tv et vtele.ca) (à noter que tou.tv a changé et actuellement Captvty ne télécharge pas tou.tv)
python script.py ca
Ah désolé, je n'ai pas de proxy belge sur proxynova.com, ceux qui veulent regarder la RTBF devront trouver un proxy belge par eux-mêmes.
Les lecteurs attentifs auront noté la très grande similitude de ce script avec un script posté récemment dans la section
trucs, astuces et scripts utiles
:-)
Le script
#!/usr/bin/python
#-*- coding:utf-8 -*-
from urllib2 import urlopen
import sys
import subprocess
import shlex
import os
from BeautifulSoup import BeautifulSoup
__version__ = '0.1'
cat_elite = 0
cat_transp = 1
cat_anon = 2
cat_other = 3
def get_valid_countries():
res = set()
# Use any country to get the full countries list
html = urlopen('http://www.proxynova.com/proxy-server-list/country-gb/').rea
d()
soup = BeautifulSoup(html)
asel = soup.find('select', attrs={'name':'proxy_country'})
aopt = asel.findAll('option')
for opt in aopt:
if opt.has_key('value') and opt['value'] != u'' :
res.add(opt['value'])
return res
def get_proxy(country):
html = urlopen('http://www.proxynova.com/proxy-server-list/country-' + count
ry + '/').read()
soup = BeautifulSoup(html)
atr = soup.find('tbody').findAll('tr')
tbl = []
fl = True
for tr in atr:
atd = tr.findAll('td')
n = 0
for x in atd:
if x.has_key('colspan'):
continue
# ip, port, x, x, x, category
if n < 2:
if fl:
tmp = x
else:
port = x
fl = not fl
if n == 5:
category = x.span.string
cat = x.span.string
if cat == u'Elite':
cat = cat_elite
elif cat == u'Transparent':
cat = cat_transp
elif cat == u'Anonymous':
cat = cat_anon
else:
cat = cat_other
tbl.append([tmp, port, cat])
n+=1
lst = []
for addr, port, category in tbl:
try:
v = addr.span.script.string
v = v[v.find('(')+ 1:-2]
v = v.replace('"', '').replace(' ','').replace('+','')
if port.a is not None:
proxy = u"%s:%s" % (v, str(port.a.string))
else:
vv = port.contents[0].replace('\t','').replace('\n','').replace(
'\r', '')
proxy = u"%s:%s" % (v, vv)
lst.append((category, proxy))
#mettre la bonne exception
except:
pass
lst.sort()
return lst
if __name__ == '__main__':
if len(sys.argv) == 1:
print get_valid_countries()
else:
sys.argv[1] = sys.argv[1].lower()
lst = get_proxy(sys.argv[1])
if not lst:
print 'No proxy found'
else:
ip = lst[0][1]
cmds = """http_proxy='%s' ; export WINEPREFIX="/home/$USER/.wine_cap
tvty"; wine ~/Captvty/Captvty.exe""" % (ip,)
print cmds
# arguments = shlex.split( cmds )
# process = subprocess.Popen( arguments, stdout = subprocess.PIPE).c
ommunicate()[0]
os.system(cmds)