[RISOLTO] Problema durante il download del pacchetto tramite script Python

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
iniziatore di guai
Messaggi: 15
Registrazione: 5 settembre 2018 - 10:30
Località: Villeneuve d'Ascq

4 ottobre 2018 - 14:31

Telegram, ecco il link per il download: https://telegram.org/dl/desktop/win
Lo script non riesce a scaricare il file eseguibile.

Ecco il codice pertinente:

Codice: Seleziona tutto

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()
Avatar utente
agauvrit
Esperto WAPT
Messaggi: 238
Registrazione: 17 nov 2016 - 10:25
Posizione: Nantes
Contatto:

4 ottobre 2018 - 15:27

Buongiorno,

A mio parere, sarà più semplice recuperare il programma di installazione dal repository GitHub del progetto, che ha questo formato:

Codice: Seleziona tutto

https://github.com/telegramdesktop/tdesktop/releases/download/v1.4.0/tsetup.1.4.0.exe 
Recuperare il numero di versione con BeautifulSoup non dovrebbe essere troppo complicato (ed è un buon esercizio per imparare)

Sinceramente,

Alessandro
iniziatore di guai
Messaggi: 15
Registrazione: 5 settembre 2018 - 10:30
Località: Villeneuve d'Ascq

4 ottobre 2018 - 15:45

Il link precedente mi sembrava migliore perché recupera automaticamente l'ultima versione...
Questo riguarda la parte di "aggiornamento" del codice del pacchetto.

Se scrivo del codice con un link fisso, che consiglio mi dareste per gestire gli aggiornamenti di versione? Dovrei aggiornare il codice con il nuovo link?
Avatar utente
agauvrit
Esperto WAPT
Messaggi: 238
Registrazione: 17 nov 2016 - 10:25
Posizione: Nantes
Contatto:

4 ottobre 2018 - 17:51

Sì, il collegamento può essere generato facilmente recuperando il numero dell'ultima versione disponibile su questa stessa pagina.
Per riferimento, il pacchetto Rocket.Chat fa essenzialmente la stessa cosa: https://wapt.tranquil.it/package_detail ... 2_all.wapt

Codice: Seleziona tutto

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")
Alessandro
iniziatore di guai
Messaggi: 15
Registrazione: 5 settembre 2018 - 10:30
Località: Villeneuve d'Ascq

4 ottobre 2018 - 19:02

Grazie. Devo provarlo!
Floflobel
Messaggi: 135
Registrazione: 15 ottobre 2015 - 17:32

4 ottobre 2018 - 19:09

Vorrei aggiungere il mio parere; personalmente, utilizziamo l'API di GitHub o analizziamo il link all'ultima versione. Lo trovo molto più semplice: :)

https://api.github.com/repos/telegramde ... ses/latest
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

4 ottobre 2018 - 19:32

Floflobel ha scritto: 4 ott 2018 - 19:09 Vorrei aggiungere il mio parere; personalmente, usiamo l'API di GitHub o analizziamo il link all'ultima versione. Lo trovo molto più semplice. :)

https://api.github.com/repos/telegramde ... ses/latest
Un ottimo contributo, non sapevo dell'esistenza dell'API!
Avatar utente
agauvrit
Esperto WAPT
Messaggi: 238
Registrazione: 17 nov 2016 - 10:25
Posizione: Nantes
Contatto:

5 ottobre 2018 - 9:56

Eccezionale !
iniziatore di guai
Messaggi: 15
Registrazione: 5 settembre 2018 - 10:30
Località: Villeneuve d'Ascq

5 ottobre 2018 - 17:50

Confermo...
Bloccato