Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: ira83 - 09 Febbraio 2010, 16:46:46

Titolo: wget e progress bar
Inserito da: ira83 - 09 Febbraio 2010, 16:46:46
Ciao a tutti... a un certo punto del mio programma ho messo un

Codice: [Seleziona]
SHELL "wget link/file.zip; mv file.zip $HOME

nella veste grafica ho posizionato una progressbar.... volevo chiedere se c'e modo di far interagire il suo avanzamento con l'avanzamento di wget, o se esistono altri metodi\comandi per farlo..

grazie mille

ciao a tutti
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 09 Febbraio 2010, 19:24:31
se l' outpt di wget di da un valore percentuale che cambia con l' avanzamento o un tot numero di caratteri in aumento(esempio le frecce) si altrimenti no
se guardi il codice di tube2mp3 io ho letto il progresso di dl-download e lo ho riportato su una progressbar
Titolo: Re: wget e progress bar
Inserito da: ira83 - 09 Febbraio 2010, 21:29:28
output del wget è questo... (ho provato a scaricar l'index del forum eheh)

Codice: [Seleziona]
[massimo@localhost ~]$ wget http://www.gambas-it.org/smf/index.php
--2010-02-09 21:26:41--  http://www.gambas-it.org/smf/index.php
Risoluzione di www.gambas-it.org... 69.89.25.193
Connessione a www.gambas-it.org|69.89.25.193|:80... connesso.
HTTP richiesta inviata, in attesa di risposta... 200 OK
Lunghezza: non specificato [text/html]
Salvataggio in: "index.php"

    [    <=>                                                                 ] 39.763      53,8K/s   in 0,7s

2010-02-09 21:26:44 (53,8 KB/s) - "index.php" salvato [39763]

[massimo@localhost ~]$

dove

Codice: [Seleziona]
   [    <=>                                                                 ] 39.763      53,8K/s   in 0,7s

varia nel tempo

<=>   va avanti indietro poi si ha i k scaricati (mi pare) poi la velocità e infine il tempo restante
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 09 Febbraio 2010, 21:40:59
prima della barra di avanzamento wget ti da anche la percentuale di avanzamento , quindi ti basta leggere l' output e prelevare il valore percentuale e collegarlo alla prograssbar
Titolo: Re: wget e progress bar
Inserito da: ira83 - 09 Febbraio 2010, 21:59:59
ehm... non proprio.. percentuali non ne vedo :D
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 09 Febbraio 2010, 22:13:12
che strano a me le da a sx delle frecce di prograssione
Titolo: Re: wget e progress bar
Inserito da: ira83 - 09 Febbraio 2010, 22:17:19
che versione hai?

io:
Codice: [Seleziona]
 wget --version
GNU Wget 1.12 compilato su linux-gnu.

+digest +ipv6 +nls +ntlm +opie +md5/openssl +https -gnutls +openssl
-iri

Wgetrc:
    /etc/wgetrc (sistema)
Locale: /usr/share/locale
Compilazione: gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc"
    -DLOCALEDIR="/usr/share/locale" -I. -I../lib -O2 -g -pipe -Wformat
    -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
    -fstack-protector --param=ssp-buffer-size=4
Collegamento: gcc -O2 -g -pipe -Wformat -Werror=format-security
    -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
    --param=ssp-buffer-size=4 -Wl,--as-needed -Wl,--no-undefined
    -Wl,-z,relro /usr/lib64/libssl.so /usr/lib64/libcrypto.so -ldl -lrt
    ftp-opie.o openssl.o http-ntlm.o gen-md5.o ../lib/libgnu.a

Copyright (C) 2009 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versione 3 o successiva
<http://www.gnu.org/licenses/gpl.html>.
Questo è software libero: siete liberi di modificarlo e redistribuirlo.
Non c'è ALCUNA GARANZIA, negli estremi permessi dalla legge.

Scritto da Hrvoje Niksic <hniksic@xemacs.org>.
Attualmente mantenuto da Micah Cowan <micah@cowan.name>.
Inviare segnalazioni di bug e suggerimenti a <bug-wget@gnu.org>.
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 09 Febbraio 2010, 22:22:01
la percentuale non compare se come nel tuo esempio scarichi una pagina dinamicao cmq un file che wget non riesce a predeterminare la grandezza e di conseguenza il tempo che ci impiegerà a scaricare, prova a scaricare un file e vedrai che compare
Titolo: Re: wget e progress bar
Inserito da: ira83 - 09 Febbraio 2010, 22:37:45
solo su alcuni file... strana la cosa  :o
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 09 Febbraio 2010, 22:59:58
Codice: [Seleziona]
' Gambas class file
PUBLIC hProcess AS Process

PRIVATE comando AS String
PRIVATE stringa AS String



PUBLIC SUB Button1_Click()

  comando = "wget " & TextBox1.Text
  PRINT comando
  stringa = ""
  Label1.Text = "scaricamento in corso"
 hProcess = SHELL comando FOR READ AS "hProcess" 'creazione del processo

  
  Timer1.Start

END
PUBLIC SUB hProcess_read()
'lettura del processo
DIM sLine AS String
DIM p, p1 AS String
DIM valore AS Float

 DIM sBuf AS String


 
'
 
  IF Lof(hProcess) THEN
    READ #hProcess, sBuf, Lof(hProcess)
    sBuf
  END IF
  
p = InStr(sBuf, "%")
p1 = InStr(sBuf, "\n", p - 5)

IF p <> 0 AND p1 <> 0 THEN

   TRY valore = Val(Trim(Mid$(sBuf, p1, p - p1))) / 100
    
    ProgressBar1.Value = valore
    
ENDIF  
END

PUBLIC SUB Timer1_Timer()

DIM i AS Integer

 
      i = hProcess.State
  
  IF i = 0 THEN
    Timer1.Stop
    
    ProgressBar1.Value = 100
    Label1.Text = "finito"
  ELSE
  
    
  ENDIF
      
    
END
questo è un esempio di codice per lettura di uno stream lanciato con shell
wget sembra cmq non rispondere a questo tipo di codice, un alternativa e avviarlo con opzione -o per cui scrive l' output su un file, poi ad ogni evento timer vai a leggere il file e la percentuale di scaricamento

Citazione
solo su alcuni file... strana la cosa  Scioccato
wget scrive la percentuale solo dei file di cui riesce a saper ela dimensione e quindi il tempo di scaricamento, le pagine php sono dinamiche quindi non può sapere la loro dimensione
Titolo: Re: wget e progress bar
Inserito da: Ceskho - 10 Febbraio 2010, 00:38:12
Tempo addietro provai una cosa simile con meteomachine...come ha detto fsunfing se non conosci a priori la dimensione del file non ne cavi nulla...altrimenti qualcosa si muove...poi lasciai perdere... :P
Titolo: Re: wget e progress bar
Inserito da: leo72 - 10 Febbraio 2010, 01:20:18
Se hai accesso al server dove è locato il file da scaricare una soluzione potrebbe essere quella di mettere un piccolo file di testo con la dimensione del file da tirar giù. Prima leggi questo file e poi regoli la progress bar con i KB che ti dice wget ha scaricato rapportandoli a quelli totali.
Titolo: Re: wget e progress bar
Inserito da: mae89 - 10 Febbraio 2010, 10:34:02
ciao a tutti
Io e ira stiam facendo il programma insieme..  non abbiamo accesso al server ma il file è di 14,5 mega... Non varia dimensione è un archivio di dati di un programma statale...
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 10 Febbraio 2010, 12:42:34
e wget ne riconosce la dimensione e quindi ne indica la percentuale di scaricamento?
Titolo: Re: wget e progress bar
Inserito da: ira83 - 10 Febbraio 2010, 12:47:53
no wget non riconosce la dimensione... effettivamente scaricato possiamo notare  che occupa 13.5 MB... non 14.5  :P
però wget non ne riconosce dimensione e quindi non può fornire una percentuale...
Titolo: Re: wget e progress bar
Inserito da: Pixel - 10 Febbraio 2010, 13:55:14
Se con un browser qualsiasi andate sulla pagina in cui c'è il file da scaricare lo vedete?

tipo questo (http://ubuntu.saix.net/ubuntu-releases/9.10/) per intenderci..
Se sì è sufficiente scaricare l'html e leggere la dimensione del file.
Titolo: Re: wget e progress bar
Inserito da: ira83 - 10 Febbraio 2010, 17:47:15
si sono ftp...
uno dei vari esempi può esser questo...

ftp://ftp.finanze.it/pub/

Codice: [Seleziona]
wget ftp://ftp.finanze.it/pub/ct93.exe

wget non da la percentuale, ma so che occupa 274 KB...
Titolo: Re: wget e progress bar
Inserito da: Pixel - 10 Febbraio 2010, 18:01:29
Perfetto, dopo il nome del file/directory c'è la dimensione in byte.
2 soluzioni:

a) usi l'oggetto webbrowser ed usi la proprietà di mostrarti il sorgente della pagina, poi scansioni i dati ed appena individui il file che ti interessa ne leggi la dimensione, attribuendola come valore ad una progressbar

b) usi l'oggetto socket per leggere direttamente in testuale la pagina (guarda uno degli esempi di Gambas)
Titolo: Re: wget e progress bar
Inserito da: ira83 - 10 Febbraio 2010, 18:44:17
ok allora io da shell do:

Codice: [Seleziona]
wget link/$file.zip
cat index.html | grep $file.zip | cut -d'(' -f2 | cut -d' ' -f1
e come output ricevo la dimensione in byte
Codice: [Seleziona]
14147827

che in gambas è:
Codice: [Seleziona]
SHELL "rm -fr file.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/file/" WAIT
SHELL "echo $( cat index.html | grep file.zip | cut -d'(' -f2 | cut -d' ' -f1)" WAIT

e ora? come la collego alla progress bar?

[postedit]
ho partorito questo...
Codice: [Seleziona]
PUBLIC SUB Form_Open()

DIM stato AS Variant
DIM avanzamento AS Integer
DIM Valore AS Integer
DIM controllo AS Variant
DIM myprocess AS Process

 
WAIT
SHELL "ping -c 4 www.google.it" TO controllo
WAIT

    IF Len(controllo) = 0 THEN
        Message.Error("Non è presente la connessione", "exit")
        installdocfa.Close()
    END IF
   


    IF NOT Exist(user.home &/ "Docfa") THEN
        MKDIR (user.home &/ "Docfa")
    END IF
   


SHELL "rm -fr docfa4-1.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/docfa4/" WAIT
SHELL "echo $( cat index.html | grep docfa4-1.zip | cut -d'(' -f2 | cut -d' ' -f1)" TO avanzamento
SHELL "rm -fr index.html" WAIT

SHELL "wget ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip" WAIT

REPEAT
   SHELL "ls --size | grep docfa4-1.zip | cut -d' ' -f1" TO Valore
   stato = Valore / avanzamento
   ProgressBar1.Value = stato
UNTIL avanzamento = Valore


END


ovviamente non funge... sicuramente errori di sintassi, ma come procedimento potrebbe andare?

come mai non mi compare la finestrella grafica?
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 10 Febbraio 2010, 22:28:30
non ti compare la finestra perchè utilizzi un wait sulla stessa linea di codice in cui hai il comando shell, ovvero dici a gambas di aspettare a fare qualsiasi cosa(anche refrescare la gui) finchè wget non ha scaricato il file.

wget dalle prove che ho fatto non scrive nel processo i dati di output, quindi ti conviene procedere così:

1) cerchi di trovare la dimensione del file da scaricare

2)lanci wget tramite processo(vedi il mio esempio)con opzione -o (output di wget in un file)e avvii un timer

3)ad ogni ciclo del timer neggi nel file di output di wget la dimensione scaricata per cui progressbar.value= dimensione scaricata/dimensione finale

4)quando wget ha finito di scaricare (tramite il processo lo puoi sapere con if hprocess=0) fermi il timer è fai quello che devi fare con il file scaricato
Titolo: Re: wget e progress bar
Inserito da: ira83 - 10 Febbraio 2010, 22:31:50
ehm ok... ma "idealmente" il programma postato sopra potrebbe andare no? almeno a livello di logica mi pare di si...
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 20:09:32
così come è impossibile collegarci una progress bar, in alternativa puoi lanciare wget con

Codice: [Seleziona]
comando="wget ftp://ftp.finanze.it/pub/file/file.zip"
hProcess = SHELL comando FOR READ AS "hProcess"
timer1.start
così non si blocca la gui

poi con il timer controlli se wget ha finito oppure no, se non ha finito puoi fare uno stat del file scaricato, il risultato diviso la grandezza del file ti da il valore da applicare all aprogress

Codice: [Seleziona]
PUBLIC SUB Timer1_Timer()

DIM i AS Integer

 
      i = hProcess.State
 
  IF i = 0 THEN
    Timer1.Stop
   
    ProgressBar1.Value = 1
    Label1.Text = "finito"
  ELSE

        progressbar.value=   Stat(pat del file scaricato)/dimensione file da scaricare
   
  ENDIF
     
     
END
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 21:25:00
ok ho buttato giu questo.. mi da errori su
comando= "wget..........."

sicuramente sbaglio a fare i dim dei processi e variabili

Codice: [Seleziona]
' Gambas class file

PUBLIC SUB Form_Open()

DIM controllo AS Variant
DIM comando AS Process
DIM hProcess AS Process
DIM Valore AS Integer
 

SHELL "ping -c 4 www.google.it" TO controllo


    IF Len(controllo) = 0 THEN
        Message.Error("Non è presente la connessione", "exit")
        installdocfa.Close()
    END IF
   


    IF NOT Exist(user.home &/ "Docfa") THEN
        MKDIR (user.home &/ "Docfa")
    END IF

END



PUBLIC SUB Button1_Click()

DIM controllo AS Variant
DIM comando AS Process
DIM hProcess AS Process
DIM Valore AS Integer
     

SHELL "rm -fr docfa4-1.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/docfa4/" WAIT

SHELL "echo $(cat index.html | grep docfa4-1.zip | cut -d'(' -f2 | cut -d' ' -f1)" WAIT
SHELL "rm -fr index.html" WAIT



comando = "wget ftp://ftp.finanze.it/pub/Docfa4/docfa4-1.zip"
hProcess = SHELL comando FOR READ AS "hProcess"
timer1.start

END





PUBLIC SUB Timer1_Timer()

DIM controllo AS Variant
DIM comando AS Process
DIM hProcess AS Process
DIM Valore AS Integer


DIM i AS Integer

 
      i = hProcess.State
 
  IF i = 0 THEN
    Timer1.Stop
   
    ProgressBar1.Value = 1
 
  ELSE
Valore = Stat("docfa4-1.zip") / 13500
        ProgressBar1.value = Valore
   
  ENDIF
END
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 21:51:41
ma zchè wget mi dice che quella cartella non esiste?
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 21:58:41
esiste è una cartella cmq... ftp://ftp.finanze.it/pub/docfa4
il wget scarica l'index.html

cmq mi da errore "Type mismatch:wanted Process,got String instead"

e evidenzia la riga comando= "wget......"
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:01:54
il codice deve essere così:

Codice: [Seleziona]
' Gambas class file
PRIVATE hProcess AS Process

PUBLIC SUB Form_Open()

DIM controllo AS Variant



  

SHELL "ping -c 4 www.google.it" TO controllo


    IF Len(controllo) = 0 THEN
        Message.Error("Non è presente la connessione", "exit")
        'installdocfa.Close()
    END IF
    


    IF NOT Exist(user.home &/ "Docfa") THEN
        MKDIR (user.home &/ "Docfa")
    END IF

END



PUBLIC SUB Button1_Click()


DIM comando AS String


      

SHELL "rm -fr docfa4-1.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/docfa4/" WAIT

SHELL "echo $(cat index.html | grep docfa4-1.zip | cut -d'(' -f2 | cut -d' ' -f1)" WAIT
SHELL "rm -fr index.html" WAIT



comando = "wget ftp://ftp.finanze.it/pub/Docfa4/docfa4-1.zip"
hProcess = SHELL comando FOR READ AS "hProcess"
timer1.start

END





PUBLIC SUB Timer1_Timer()



DIM Valore AS Integer


DIM i AS Integer

 
      i = hProcess.State
  
  IF i = 0 THEN
    Timer1.Stop
    
    ProgressBar1.Value = 1
  
  ELSE
Valore = Stat("docfa4-1.zip") / 13500
        ProgressBar1.value = Valore
    
  ENDIF
END

hproces è una variabile globale
però a me da errore perche wget non scarica nulla
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:03:06
Valore = Stat("docfa4-1.zip") / 13500

dovrebbe forse essere:


Valore = Stat(percorso & "/docfa4-1.zip") / 13500

poi fai attenzione che sia il risultato di stat che il valore devono avere la stessa unità di misura
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 22:08:30
effettivamente
Codice: [Seleziona]
comando = "wget ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip" 
hProcess = SHELL comando FOR READ AS "hProcess"

non funge... ma il wget dato da terminale cosi parte senza problemi...
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:13:58
a me da errore anche lanciandolo d aterminale wget:
Codice: [Seleziona]
sergio@pc-sergio:~$ wget ftp://ftp.finanze.it/pub/Docfa4/docfa4-1.zip
--2010-02-11 22:13:21--  ftp://ftp.finanze.it/pub/Docfa4/docfa4-1.zip
           => `docfa4-1.zip'
Risoluzione di ftp.finanze.it... 217.175.53.111
Connessione a ftp.finanze.it|217.175.53.111|:21... connesso.
Accesso come utente anonymous ... Login eseguito!
==> SYST ... fatto.    ==> PWD ... fatto.
==> TYPE I ... fatto.  ==> CWD /pub/Docfa4 ...
La directory "pub/Docfa4" non esiste.

sergio@pc-sergio:~$
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 22:15:36
è sabgliato il link è tutto minuscolo :D l'ho corretto nelle ultime due cose che ho postato..

wget ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:23:02
non ci siamo ancora :
Codice: [Seleziona]
sergio@pc-sergio:~$ wget http://ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip
--2010-02-11 22:22:18--  http://ftp//ftp.finanze.it/pub/docfa4/docfa4-1.zip
Risoluzione di ftp... fallito: Nome o servizio sconosciuto.
wget: impossibile risolvere l'indirizzo dell'host "ftp"
sergio@pc-sergio:~$
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 22:28:46
non ci siamo ancora :
Codice: [Seleziona]
sergio@pc-sergio:~$ wget [b]http://ftp://[/b]ftp.finanze.it/pub/docfa4/docfa4-1.zip
--2010-02-11 22:22:18--  http://ftp//ftp.finanze.it/pub/docfa4/docfa4-1.zip
Risoluzione di ftp... fallito: Nome o servizio sconosciuto.
wget: impossibile risolvere l'indirizzo dell'host "ftp"
sergio@pc-sergio:~$

è qui http://ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip

quello corretto è solo ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip senza l'http.. che purtroppo l'editor del forum mette in automatico
eheh :D

grazie mille cmq per la grande mano che mi stai dando
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:35:37
ok così funge perfettamente  8)
Codice: [Seleziona]
' Gambas class file
PRIVATE hProcess AS Process

PUBLIC SUB Form_Open()

DIM controllo AS Variant



  

SHELL "ping -c 4 www.google.it" TO controllo


    IF Len(controllo) = 0 THEN
        Message.Error("Non è presente la connessione", "exit")
        'installdocfa.Close()
    END IF
    


    IF NOT Exist(user.home &/ "Docfa") THEN
        MKDIR (user.home &/ "Docfa")
    END IF

END



PUBLIC SUB Button1_Click()


DIM comando AS String


      

SHELL "rm -fr docfa4-1.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/docfa4/" WAIT

SHELL "echo $(cat index.html | grep docfa4-1.zip | cut -d'(' -f2 | cut -d' ' -f1)" WAIT
SHELL "rm -fr index.html" WAIT



comando = "wget ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip"
'comando = "wget http://www.finanze.it/pub/Docfa4/docfa4-1.zip"
hProcess = SHELL comando FOR READ AS "hProcess"
WAIT 5
timer1.start

END





PUBLIC SUB Timer1_Timer()



DIM Valore AS Float


DIM i AS Integer

 
      i = hProcess.State
  
  IF i = 0 THEN
    Timer1.Stop
    
    ProgressBar1.Value = 1
  
  ELSE
Valore = Stat(user.Home & "/docfa4-1.zip").Size / 13500000
        ProgressBar1.value = Valore

  ENDIF
END

Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:37:20
devi solamente sostituire a 13500000 il valore letto tramite il primo wget (ricordati che sono byte)


Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:44:04
per impostare automaticamente il valore dela dimensione del file fai così:

Codice: [Seleziona]
' Gambas class file
PRIVATE hProcess AS Process
PRIVATE peso AS Integer

PUBLIC SUB Form_Open()

DIM controllo AS Variant



 

SHELL "ping -c 4 www.google.it" TO controllo


    IF Len(controllo) = 0 THEN
        Message.Error("Non è presente la connessione", "exit")
        'installdocfa.Close()
    END IF
   


    IF NOT Exist(user.home &/ "Docfa") THEN
        MKDIR (user.home &/ "Docfa")
    END IF

END



PUBLIC SUB Button1_Click()


DIM comando AS String
DIM stringa AS String

     

SHELL "rm -fr docfa4-1.zip index.html" WAIT
SHELL "wget ftp://ftp.finanze.it/pub/docfa4/" WAIT

SHELL "echo $(cat index.html | grep docfa4-1.zip | cut -d'(' -f2 | cut -d' ' -f1)" WAIT TO stringa

TRY peso = Val(stringa)
SHELL "rm -fr index.html" WAIT



comando = "wget ftp://ftp.finanze.it/pub/docfa4/docfa4-1.zip"
'comando = "wget http://www.finanze.it/pub/Docfa4/docfa4-1.zip"
hProcess = SHELL comando FOR READ AS "hProcess"
'WAIT 5
timer1.start

END





PUBLIC SUB Timer1_Timer()



DIM Valore AS Float


DIM i AS Integer

 
      i = hProcess.State
 
  IF i = 0 THEN
    Timer1.Stop
   
    ProgressBar1.Value = 1
 
  ELSE
TRY Valore = Stat(user.Home & "/docfa4-1.zip").Size / peso
        ProgressBar1.value = Valore

  ENDIF
END


Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 22:47:41
Innanzi tutto un GRAZIE MILLE di dimensioni bibbliche...

ho messo 14147827 (che la dimensione esatta) ma si inceppa al 4 %... ora ci provo un po e vedo di risolvere..

grazie mille ancora sono debitore...
Titolo: Re: wget e progress bar
Inserito da: fsurfing - 11 Febbraio 2010, 22:51:35
quarda il post sotto ti ho scritto il codice che mette il valore estratto dal CAT, a me funziona perfettamente senza errori fino a scaricamento completato.
Citazione
grazie mille ancora sono debitore...
per quello basta un bonifico  :)
Titolo: Re: wget e progress bar
Inserito da: ira83 - 11 Febbraio 2010, 23:28:49
Funziona alla stra grande!!!!!!!!!!!! grazie mille!!!!
Titolo: Re: wget e progress bar
Inserito da: ira83 - 27 Settembre 2010, 13:53:17
ciao a tutti... ora che ho ripristinato una postazione linux (con opensuse) ho ripreso a giocherellare con gambas...

solo che ora non riesco piu a far andare la progressbar... per assurdo non mi va nemmeno il codice sopra postato, che poco tempo fa invece andava a dovere...

sapete darmi qualche dritta? devo attivare qualcosa?

sono su gambas 2.21 su un pc x86_64....

ringrazio in anticipo
Titolo: Re: wget e progress bar
Inserito da: Ceskho - 27 Settembre 2010, 15:18:57
ciao a tutti... ora che ho ripristinato una postazione linux (con opensuse) ho ripreso a giocherellare con gambas...

solo che ora non riesco piu a far andare la progressbar... per assurdo non mi va nemmeno il codice sopra postato, che poco tempo fa invece andava a dovere...

sapete darmi qualche dritta? devo attivare qualcosa?

sono su gambas 2.21 su un pc x86_64....

ringrazio in anticipo


Ma la progressbar è diversa o è la stessa di cui parli sopra?
Titolo: Re: wget e progress bar
Inserito da: ira83 - 27 Settembre 2010, 17:08:10
ciao!

diversa.... ho copiato il codice, e a ogni elemento ho messo ovviamente il nome corrispondente....

Titolo: Re: wget e progress bar
Inserito da: ira83 - 29 Settembre 2010, 11:53:35
Allora, ho provato a ignorare la cosa, e a riscrivere un pezzo di programma con appunto una funzione che mi serve: il download da kernel.org dei vari kernel (con relativa progress bar)

il mio codice è:
Codice: [Seleziona]
'download
PUBLIC SUB Button4_Click()
DIM comando AS String
DIM stringa AS String
IF ListBox1.Text = "" THEN
Message.Error("Nessun kernel selezionato")
ELSE
SHELL "rm -fr $HOME/lmx/kernel/*.html" WAIT
SHELL "cd $HOME/lmx/kernel/; wget http://kernel.org" WAIT
SHELL "echo $(cat $HOME/lmx/kernel/index.html.dimensioni | grep " & ListBox1.Text & ".tar.bz2 | cut -d'(' -f2 | cut -d' ' -f1)" WAIT TO stringa
TRY peso = Val(stringa)
comando = "cd $HOME/lmx/kernel/; wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-" & ListBox1.Text & ".tar.bz2"
hProcess = SHELL comando FOR READ AS "hProcess"
WAIT 5
timer1.start
ENDIF
END
'
'
'timer downlaod
PUBLIC SUB Timer1_Timer()
DIM Valore AS Float
DIM i AS Integer
i = hProcess.State
IF i = 0 THEN
Timer1.Stop
ProgressBar1.Value = 1
ELSE
TRY Valore = Stat(user.Home & "/lmx/kernel/linux-" & ListBox1.Text & ".tar.bz2 ").Size / peso
ProgressBar1.value = Valore
ENDIF
END

uno screenshot è:
(http://fendermx.altervista.org/dlkernel.png)

premessa: ho scritto uno script che scarica l'elenco dei kernel e le relative dimensioni (appurato ce funziona in modo corretto)

1- se non vengono selezionati da un errore
2- se è selezionato ricava dimensioni/nome
3- le dimensioni (in byte) finiscono in Peso
4- viene assegnato a comando la funzione shell da eseguire
5- parte lo start per il timer 1


ma purtroppo non funge, o meglio, se premo download lo scarica e mi resta 0% fino a che non lo conclude e allora passa a 100%...

come posso risolvere?
ringrazio per eventuali risposte
Titolo: Re: wget e progress bar
Inserito da: Ceskho - 29 Settembre 2010, 14:54:24
C'è un WAIT 5 che attende 5 secondi...perchè lo hai inserito?
Titolo: Re: wget e progress bar
Inserito da: ira83 - 29 Settembre 2010, 17:04:17
ciao...
mi era stato consigliato su questo forum in un'altro progetto... ad ogni modo anche commentandolo non funziona mica..

avete consigli su come poter risolvere?

postedit:

penso che l'errore sia nella riga

TRY Valore = Stat("$HOME/lmx/kernel/linux-" & ListBox1.Text & ".tar.bz2").Size / peso

in quanto se faccio un message.info(stat................) mi dice che il file non esiste... invece lo sta scaricando senza problemi...
Titolo: Re: wget e progress bar
Inserito da: md9327 - 29 Settembre 2010, 17:54:47
WGet si comporta in modo diverso da quanto si possa immaginare.

A volte, controllando con un terminale, il file viene creato all'avvio dello scaricamento, ma le dimensioni restano sempre a zero, fino a quando lo scarico non è stato completato.
Altre volte, invece, vengono riportate le dimensioni finali, anche se il file è ancora sotto scarico.
Altre volte ancora il file non esiste nemmeno, perchè viene creato a mò di pipe sulla temp, e lo vedi solo quando terminato.

Da quanto notato, i comportamenti sono diversi, a seconda della versione, della distribuzione Linux, e via dicendo...
Titolo: Re: wget e progress bar
Inserito da: ira83 - 29 Settembre 2010, 18:10:47
ciao..

io da dolphin vedo nella colonnina "dimensione" che il file aumenta le sue dimensioni durante lo scaricamento..
Titolo: Re: wget e progress bar
Inserito da: ira83 - 04 Ottobre 2010, 00:01:16
per sfizio mi sono scaricato una live di di mandriva (sistema che utilizzavo a quel tempo) ma cmq sia non ne vengo fuori... passa da 0 a 100... Avete idea di cosa può esser?
Titolo: Re: wget e progress bar
Inserito da: Ceskho - 04 Ottobre 2010, 00:42:20
per sfizio mi sono scaricato una live di di mandriva (sistema che utilizzavo a quel tempo) ma cmq sia non ne vengo fuori... passa da 0 a 100... Avete idea di cosa può esser?

Non saprei cosa dirti..pare molto strano...