Contactez nous

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

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum

* Questions can be asked in English or in French. If the thread is started in English, stick to English, if it is started in French, stick to French.
* Vous pouvez poser vos questions en Français ou en Anglais. Si un sujet est commencé en français, merci de répondre en français. Si un sujet est commencé en anglais, merci de répondre en anglais.
* Please prefix of the title of the thread to [SOLVED] if it is solved.
* Merci de préfixer le titre du thread par [RESOLU] si il est résolu.

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()
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
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 ?
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
Merci. A tester !
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
Floflobel a écrit :
04 octobre 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 !
Génial !
Je confirme ...