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
Floflobel escribió: 4 de octubre de 2018 - 19:09 Me gustaría añadir 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
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...