Página 1 de 1
[RESUELTO] Problema al descargar un paquete mediante un script de Python
Publicado: 4 de octubre de 2018 - 14:31
por troublestarter
Telegram, aquí está el enlace de descarga:
https://telegram.org/dl/desktop/win
El script no puede descargar el archivo ejecutable.
Aquí está el código relevante:
Código: Seleccionar todo
def update_package():
""" You can do a CTRL F9 in pyscripter to update the package """
import re,requests,urlparse,glob
url = requests.head('https://telegram.org/dl/desktop/win',proxies={}).headers['Location']
filename = urlparse.unquote(url.rsplit('/',1)[1])
if not isfile(filename):
print('Downloading %s from %s'%(filename,url))
wget(url,filename)
exes = glob.glob('*.exe')
for fn in exes:
if fn != filename:
remove_file(fn)
# updates control version from filename, increment package version.
control = PackageEntry().load_control_from_wapt ('.')
control.version = '%s-0'%(re.findall('tsetup(.*)\.exe',filename)[0])
control.save_control_to_wapt('.')
if __name__ == '__main__':
update_package()
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 15:27
por agauvrit
Buen día,
En mi opinión, será más sencillo recuperar el instalador del repositorio de GitHub del proyecto, que tiene este formato:
Código: Seleccionar todo
https://github.com/telegramdesktop/tdesktop/releases/download/v1.4.0/tsetup.1.4.0.exe
Recuperar el número de versión con BeautifulSoup no debería ser demasiado complicado (y es un buen ejercicio para aprender)
Atentamente,
Alejandro
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 15:45
por troublestarter
El enlace anterior me parecía mejor porque recupera automáticamente la última versión...
Esto es para la parte de "actualización" del código del paquete.
Si escribo código con un enlace fijo, ¿qué me aconsejarías para gestionar las actualizaciones de versión? ¿Debería actualizar el código con el nuevo enlace?
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 17:51
por agauvrit
Sí, el enlace se puede generar fácilmente recuperando el último número de versión disponible en esta misma página.
Como referencia, el paquete Rocket.Chat hace esencialmente lo mismo:
https://wapt.tranquil.it/paquete_detalle ... 2_all.wapt
Código: Seleccionar todo
def update_package():
proxy={'http':'http://srvproxy:3128','https':'http://srvproxy:3128'}
import requests,BeautifulSoup
import re
verify=True
pe = PackageEntry()
pe.load_control_from_wapt(os.getcwd())
current_version = pe['version'].split('-',1)[0]
software_name = "Rocket.Chat"
version_software_url = "https://github.com/RocketChat/Rocket.Chat.Electron/releases/latest"
pattern=re.compile(r'version (.*)')
page = wgets(version_software_url,user_agent='Mozilla/5.0 (Windows NT 6.1; Win64; x64)',proxies=proxy)
bs = BeautifulSoup.BeautifulSoup(page)
software_version = str(bs.find('title')).split(' ')[1]
print "Current %s WAPT package version is : %s" % (software_name,current_version)
print "Latest %s version available is : %s" % (software_name,software_version)
if Version(current_version) < Version(software_version):
print "%s package is not up-to-date, updating" % software_name
print "Cleanup current exe files"
for exe in glob.glob('*.exe'):
remove_file(exe)
print("Downloading latest version")
wget('https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/' + software_version + '/rocketchat-setup-' + software_version + '.exe' , 'rocketchat-setup' + software_version + '.exe',proxies=proxy)
pe.version = software_version + '-0'
pe.save_control_to_wapt(os.getcwd())
else:
print("No update needed, package already up to date")
Alejandro
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 19:02
por troublestarter
¡Gracias! ¡Lo tendré que probar!
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 19:09
por Floflobel
Me gustaría dar mi opinión; personalmente, usamos la API de GitHub o analizamos el enlace a la última versión. Me resulta mucho más fácil:
https://api.github.com/repos/telegramde ... ses/latest
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 4 de octubre de 2018 - 19:32
por sfonteneau
Muy buen aporte, no sabía de la existencia de la API!
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 5 de octubre de 2018 - 9:56 a. m.
por agauvrit
Impresionante !
Re: Problema al descargar paquetes mediante un script de Python
Publicado: 5 de octubre de 2018 - 17:50
por troublestarter
Confirmo...