Page 1 sur 1

[RESOLU]Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 14:31
par troublestarter
telegram, voici le lien de DL : https://telegram.org/dl/desktop/win
Impossible que le scirpt télécharge l'exe.

voici le code concerné :

Code : Tout sélectionner

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: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 15:27
par agauvrit
Bonjour,

Il sera à mon avis plus simple de récuperer l'installeur à partir du dépot GitHub du projet et qui a cette forme :

Code : Tout sélectionner

https://github.com/telegramdesktop/tdesktop/releases/download/v1.4.0/tsetup.1.4.0.exe 
Pour récupérer le numéro de version avec BeautifulSoup ce ne doit pas être trop compliqué (et c'est un bon exercice pour apprendre)

Cordialement,

Alexandre

Re: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 15:45
par troublestarter
Le lien précédent me paraissait mieux car pas il récupère tout seul la dernière version...
C'est pour la partie de code "update" du package.

Si je fais un code avec le lien en fixe, quel conseil donner vous pour gérer les mises à jour de version ? Updater le code avec le nouveau lien ?

Re: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 17:51
par agauvrit
Oui le lien est facilement générable en récupérant le dernier numéro de version disponible dans cette meme page.
Pour référence le paquet Rocket.Chat dans lequel on effectue sensiblement la même chose : https://wapt.tranquil.it/package_detail ... 2_all.wapt

Code : Tout sélectionner

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")
Alexandre

Re: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 19:02
par troublestarter
Merci. A tester !

Re: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 19:09
par Floflobel
J'ajoute ma pierre à l'édifice, personnellement nous utilisons l'api de github ou nous parsons le lien de la dernière release. Je trouve ça beaucoup plus facile :)

https://api.github.com/repos/telegramde ... ses/latest

Re: Souci de téléchargement de package via script python

Publié : 04 oct. 2018 - 19:32
par sfonteneau
Floflobel a écrit : 04 oct. 2018 - 19:09 J'ajoute ma pierre à l'édifice, personnellement nous utilisons l'api de github ou nous parsons le lien de la dernière release. Je trouve ça beaucoup plus facile :)

https://api.github.com/repos/telegramde ... ses/latest
Très bonne pierre a l’édifice je n'avais pas connaissance de l’existence de l'api !

Re: Souci de téléchargement de package via script python

Publié : 05 oct. 2018 - 09:56
par agauvrit
Génial !

Re: Souci de téléchargement de package via script python

Publié : 05 oct. 2018 - 17:50
par troublestarter
Je confirme ...