Novità

Script aggiornamento 10elotto 5 min

druid

Super member
Sarà un'istruzione così ignorante che non riesco a trovarla.
Ho letto qualcosa sul wget e l'istruzione per rinominare un file è -O. Non comprendo perchè non la esegue così come indicato da Maurizio, ho posto anche le " che mancavano.
Ormai è una questione di tigna :mad::mad::mad::ROFLMAO:

Di solito per scaricare un file con wget si utilizza -O, ma in questo caso non abbiamo un file .txt, ma un link che cliccato genera un link, ecco perche' nel mio wget ho omesso il -O.
Le virgolette vanno messe come da mio esempio altrimenti nell' esecuzione del .bat la parte finale dopo la & viene staccata.
Ho provato lo script sia su win10 che su Vista, aggiornando i percorsi e funziona su tutti e due....ci vorrebbe qualcun'altro che abbia xp e che testi lo script, per vedere perche' non funziona.
 
abbiamo modificato il listato al messaggio 55
controlla i percorsi che siano esatti e corrispondenti con i tuoi
 

Allegati

  • Aggiorna da web mod,DRUID.txt
    2,5 KB · Visite: 25

mirapep

Advanced Member >PLATINUM<
Riepiloghiamo

lo script di messaggio 64 scarica la pagina web con le estrazioni della giornata. Chiede che venga indicato il file da rinominare e poi scrive le estrazioni, con la struttura archivio spaziometria, nel file Archivio10eLotto5M.txt.

Domanda: non controlla lo stato di aggiornamento del file e inserisce tutte le mancanti? Non si può evitare la richiesta di indicare il file da rinominare?
Ti rivolgo queste domande perchè devo provare un sistema speculativo realizzato con ArchiviRotanti e il tempo è ovviamente un fattore determinante e l'aggiornamento delle estrazioni avviene tramite archivio di spaziometria.

Grazie ancora e a buon rendere se il sistema dovesse avere sviluppi positivi
 
abbamo modificato il listato al messaggio 64 per evitare la scelta del file
il file , di quel listato , non viene aggiornato delle mancanti , ma viene ricostruito da zero ogni volta .
.per l' altra richiesta vedremo.
 

mirapep

Advanced Member >PLATINUM<
Ciao Maurizio,
al primo lancio mi ha dato errore, non rinominava il file. Poi ho provato un secondo lancio per copiare il messaggio di errore ed è andato tutto bene; anche l'ordine di scrittura
 

joe

Advanced Member >PLATINUM<
Di solito per scaricare un file con wget si utilizza -O, ma in questo caso non abbiamo un file .txt, ma un link che cliccato genera un link, ecco perche' nel mio wget ho omesso il -O.
Le virgolette vanno messe come da mio esempio altrimenti nell' esecuzione del .bat la parte finale dopo la & viene staccata.
Ho provato lo script sia su win10 che su Vista, aggiornando i percorsi e funziona su tutti e due....ci vorrebbe qualcun'altro che abbia xp e che testi lo script, per vedere perche' non funziona.

Ciao Druid.

Non sono in accordo con quanto hai scritto perché secondo me è

in contro-tendenza con quanto si è cercato di fare. Mi spiego:

Circa una anno, fa quando alcuni PC hanno perso la capacità di aggiornarsi,

Per risolverlo, LuigiB ha allegato Wget alle ultime versioni di Spaziometria,

ripristinando attraverso Wget la possibilità di connettere questi Pc ai siti Https. (Silop ecc. ecc.)

Nel mese di aprile maggio 2020, con un nuovo cambio dei protocolli di sicurezza, il problema si è ripresentato.

NELLO SPECIFICO DI CHI HA PROBLEMI DI AGGIORNAMENTO ...ANCHE CON WGET ...

il problema è nella versione di WGET non compatibile con i nuovi protocolli.

Si può verificare con qualsiasi sistema operativo da XP in poi

e con questo programma dello stesso LuigiB (che saluto).

Codice:
Option Explicit
Sub Main
   Dim sRetMsg,sFileZipLoc,sDirEspZip,sFileTxtEstr
   Dim sDataLastEstr,IdAnnuale,nEstrTot

   sFileZipLoc = GetDirectoryAppData & "temp\estrazioni.zip"
   sDirEspZip = GetDirectoryAppData & "temp\"
   sFileTxtEstr = sDirEspZip & "storico.txt"
   nEstrTot = EstrazioniArchivio

   Call EliminaFile(sFileZipLoc)
   Call EliminaFile(sFileTxtEstr)

   If DownloadFileWget("https://www.lottomatica.it/STORICO_ESTRAZIONI_LOTTO/storico.zip",sFileZipLoc,sRetMsg) Then
      If ScompattaFile(sFileZipLoc,sDirEspZip,sFileTxtEstr,sRetMsg) Then
         If FileEsistente(sFileTxtEstr)Then
            sDataLastEstr = DataEstrazione(nEstrTot,,,"/")
            IdAnnuale = IndiceAnnuale(nEstrTot)
            If AggiornaEstrazioni(sFileTxtEstr,sDataLastEstr,IdAnnuale) Then
               Scrivi "Fine aggiornamento lotto"
            End If
         Else
            MsgBox "Il file " & vbCrLf & sFileTxtEstr & vbCrLf & "non è stato trovato , verificare il file zip scaricato" & vbCrLf & sFileZipLoc
         End If
      Else
         MsgBox sRetMsg,vbCritical
      End If
   Else
      MsgBox sRetMsg,vbCritical
   End If
End Sub
Function AggiornaEstrazioni(sFileTxtEstr,sDataLastEstr,IdAnnuale)
   Dim k,i,e,sData,sDataLetta,sTmp,nEstrTrov,nEstrAgg,sLastDataEstr,idAnn,idRuota,sFileBd,nRigheTot
   Dim bErrore
   ReDim aRighe(0)

   sFileBd = GetDirectoryAppData & "BaseDati.dat"
   sLastDataEstr = sDataLastEstr
   idAnn = IdAnnuale
   Call LeggiRigheFileDiTesto(sFileTxtEstr,aRighe)
   nRigheTot = UBound(aRighe)
   For k = 0 To nRigheTot
      sDataLetta = Mid(aRighe(k),1,10)
      ReDim aNumeri(11,5)
      If ConvertiData(sDataLetta,sData) Then
         If FormattaStringa(sData,"yyyymmdd") > FormattaStringa(sDataLastEstr,"yyyymmdd") Then
            If Year(sData) = Year(sLastDataEstr) Then
               idAnn = idAnn + 1
            Else
               idAnn = 1
            End If
            sLastDataEstr = sData
            nEstrTrov = nEstrTrov + 1

            i = k
            sTmp = Left(aRighe(i),10)
            Do While sTmp = sDataLetta
               ReDim aValue(0)
               Call SplitByChar(aRighe(i),vbTab,aValue)
               If UBound(aValue) = 6 Then
                  idRuota = SiglaRuotatoIdRuota(aValue(1))
                  If idRuota > 0 And idRuota <= 11 Then
                     For e = 1 To 5
                        If IsNumeric(aValue(e + 1)) Then
                           aNumeri(idRuota,e) = Int(Trim(aValue(e + 1)))
                        Else
                           bErrore = True
                           Exit For
                        End If
                     Next
                  Else
                     bErrore = True
                     Exit Do
                  End If
               Else
                  bErrore = True
                  Exit Do
               End If
               If bErrore Then Exit Do
               i = i + 1
               If i <= nRigheTot Then
                  sTmp = Left(aRighe(i),10)
               Else
                  Exit Do
               End If
            Loop

            If bErrore Then
               MsgBox "Errore formato riga file storico.txt " & vbCrLf & "riga : " & i & vbCrLf & aRighe(i)
               Exit For
            End If
            If VerificaNumeri(aNumeri,sData) = False Then
               MsgBox "Errore i numeri dell'estrazione " & sData & " non sono conformi"
               Exit For

            End If
            k = i - 1
            If SalvaEstrazione(aNumeri,sData,idAnn,sFileBd) Then
               nEstrAgg = nEstrAgg + 1
            End If
         End If
      End If
      Call Messaggio("Righe lette :" & k & " Estr aggiornate : " & nEstrAgg)
      If ScriptInterrotto Then Exit For
      Call AvanzamentoElab(0,UBound(aRighe),k)
   Next

   If bErrore Then
      Call Scrivi("La procedura ha presentato errori nessuna estrazione dopo l'errore è stata aggiunta")
   End If

   Call Scrivi("Aggiornate : " & nEstrAgg )

   AggiornaEstrazioni = Not bErrore

End Function
Function VerificaNumeri(aNumeri,sData)
   Dim k,e,sDataNaz,nUpper

   sDataNaz = "20050504"
   If FormattaStringa(sData,"yyyymmdd") >= sDataNaz Then
      nUpper = 11
   Else
      nUpper = 10
   End If

   For k = 1 To nUpper
      For e = 1 To 5
         If aNumeri(k,e) <= 0 Or aNumeri(k,e) > 90 Then
            VerificaNumeri = False
            Exit Function
         End If
      Next
   Next

   VerificaNumeri = True
End Function
Function SiglaRuotatoIdRuota(s)
   Dim k
   Select Case UCase(s)
   Case "BA"
      SiglaRuotatoIdRuota = 1
   Case "CA"
      SiglaRuotatoIdRuota = 2
   Case "FI"
      SiglaRuotatoIdRuota = 3
   Case "GE"
      SiglaRuotatoIdRuota = 4
   Case "MI"
      SiglaRuotatoIdRuota = 5
   Case "NA"
      SiglaRuotatoIdRuota = 6
   Case "PA"
      SiglaRuotatoIdRuota = 7
   Case "RM"
      SiglaRuotatoIdRuota = 8
   Case "TO"
      SiglaRuotatoIdRuota = 9
   Case "VE"
      SiglaRuotatoIdRuota = 10
   Case "RN"
      SiglaRuotatoIdRuota = 11
   End Select

End Function
Function ConvertiData(sData,sRetData)
   ReDim aV(0)
   sRetData = ""
   Call SplitByChar(sData,"/",aV)
   If UBound(aV) = 2 Then
      If Len(aV(0)) = 4 Then
         sRetData = aV(2) & "/" & aV(1) & "/" & aV(0)
         ConvertiData = IsDate(sRetData)
      ElseIf Len(aV(2)) = 4 Then
         sRetData = aV(0) & "/" & aV(1) & "/" & aV(2)
         ConvertiData = IsDate(sData)
      End If
   End If
End Function
Function DownloadFileWget(sUrl,sFileLocale,sRetMsg)
   Dim sFileBat,sCommand,sPercorsoWget,nTimeoutSec,DataIni
   sPercorsoWget = GetDirectoryAppData & "wget.exe"
   sCommand = """" & sPercorsoWget & """" & " -O " & """" & sFileLocale & """" & " --no-check-certificate " & sUrl
   sFileBat = GetDirectoryAppData & "Download.bat"
   nTimeoutSec = 30
   sRetMsg = ""

   If FileEsistente(sPercorsoWget) Then
      Call Messaggio("Download file zip estrazioni")

      Call ScriviFile(sFileBat,sCommand,True,False)
      Call LanciaFile(sFileBat,True)
      DataIni = Now
      Do While FileEsistente(sFileLocale) = False
         If DateDiff("s",DataIni,Now) > nTimeoutSec Then Exit Do
      Loop
      If FileEsistente(sFileLocale) Then

         sRetMsg = "File scaricato"
         DownloadFileWget = True
      Else
         sRetMsg = "ERRORE ! Il file non è stato scaricato"
      End If
   Else
      sRetMsg = "Il file wget.exe versione 1.19.4  deve essere presente nel percorso  " & GetDirectoryAppData
   End If
End Function
Function ScompattaFile(sFileZip,sDirDest,sFileTxtEstr,sRetMsg)
   On Error Resume Next
   Dim FilesInZip,objShell,sDataIni
   sRetMsg = ""

   Call Messaggio("Scompatta file zip estrazioni")

   Set objShell = CreateObject("Shell.Application")
   sDataIni = Now
   Do While FileEsistente(sFileTxtEstr) = False
      If DateDiff("s",sDataIni,Now) > 30 Then Exit Do
      Set FilesInZip = objShell.NameSpace(sFileZip).items
      objShell.NameSpace(sDirDest).CopyHere(FilesInZip)
   Loop


   Set FilesInZip = Nothing
   Set objShell = Nothing

   If Err <> 0 Then
      sRetMsg = Err.Description
      Err.Clear
   Else
       ScompattaFile = True
   End If
End Function

Questo programma (di AGGIORNAMENTO) che diversamente FUNZIONA BENISSIMO

per chi non ha una versione di Wget funzionante

(quella a corredo dell'installazione è la 1.19.4 e non funziona più) ... non può utilizzarlo.

Anche se ha la più recente versione di Windows. Se non sostituisce Wget non funziona.

Da questo si deduce che il problema non può essere risolto cambiando la sintassi delle istruzioni.

Bisogna sostituire il Wget con una versione adatta ai nostri tempi ed ai nostri PC ... e funziona.

:)
 
Ultima modifica:

druid

Super member
Ciao Joe,
come ho scritto nel post #42 non avendo xp non ho potuto testare il comando .bat, ma dai sistemi operativi in mio possesso, se utilizzo il "-O", mi scarica la pagina web completa, se non lo utilizzo scarica la tabella (cliccando sull' url .TXT della pagina web crea la tabella in txt, se clicchi .pdf crea un pdf, ecc... - cmq in rete avevo letto qualcosa a riguardo in inglese).
Poi, tagliando ogni polemica, Mirapep - sotto XP - con la prima istruzione scarica la pagina completa, senza la "-O" scarica correttamente la tabella. What' else? ;)
 

joe

Advanced Member >PLATINUM<
Ciao Joe,
come ho scritto nel post #42 non avendo xp non ho potuto testare il comando .bat, ma dai sistemi operativi in mio possesso, se utilizzo il "-O", mi scarica la pagina web completa, se non lo utilizzo scarica la tabella (cliccando sull' url .TXT della pagina web crea la tabella in txt, se clicchi .pdf crea un pdf, ecc... - cmq in rete avevo letto qualcosa a riguardo in inglese).
Poi, tagliando ogni polemica, Mirapep - sotto XP - con la prima istruzione scarica la pagina completa, senza la "-O" scarica correttamente la tabella. What' else? ;)

Ciao Druid,

si, ma il problema non è quello.

Premetto che non sono esperto, ma ci ho lavorato "attorno" alcuni giorni.

Intesi come un 30/40 ore, di prove, modifiche ecc ... ecc.

"-o" e "-O" hanno risultati differenti a seconda del come si voglia

"rinominare" "o meno" il file scaricato.

Se ho inteso bene WGET spacchetta le istruzioni separandole in presenza degli spazi

e delle virgolette, necessarie alla corretta sintassi.

Avevo proposto il sito di Silop perchè è in https ed ha gli archivi predisposti all'aggiornamento.

Cioè perché è come il cacio sui maccheroni.

Perché la prima cosa da fare era verificare se la versione di Wget di Mirarep era efficiente.

E ... lo è, perché riesce a collegarsi e scaricare i file.

Dunque come hai giustamente evidenziato, il problema non è nel nome da

attribuire al file una volta scaricato ... ma nell'indirizzare correttamente il file da leggere.

L'errore è nel separare le parti nella linea di comando

e questo fa si che "&" e "As" vengano male interpretati.

La differenza tra la linea di comando funzionante e quella che non lo è ...

è che in quella sbagliata è scritto & mentre dovrebbe essere "&"

e questo permette che "as" diventi "As" prima che Wget lo esegua come comando.

Per questa ragione Wget si ritrova a gestire un indirizzo sbagliato e sbaglia.

Se si confronta il testo del comando generato dallo che lo script che ho pubblicato

(al messaggio #21) con quanto ho scritto adesso allo stesso messaggio

si trova evidenza di tutto questo.

Infatti lo script sbagliato produce:

"C:\Users\computer\AppData\Roaming\SpazioMetria\wget.exe" -O "C:\Users\computer\AppData\Roaming\SpazioMetria\temp\Archivio 10eLotto5M.txt" --no-check-certificate https://www.lottologia.com/10elotto5minuti/?do=past-draws-archive&as=TXT

Mentre Lo script giusto dovrebbe produrre questa linea di comando:

"C:\Users\computer\AppData\Roaming\SpazioMetria\wget.exe" -O "C:\Users\computer\AppData\Roaming\SpazioMetria\temp\Archivio 10eLotto5M.txt" --no-check-certificate https://www.lottologia.com/10elotto5minuti/?do=past-draws-archive"&"as=TXT

Per chi vuole provare ... ho corretto lo script presente al messaggio #21.

:)
 
Ultima modifica:

mirapep

Advanced Member >PLATINUM<
Ciao,
anche io non sono un esperto in materia.
Dalle verifiche che ho eseguito, da Spaziometria non aggiorno nessun archivio.
Con il programma ArchiviRotanti, invece, scarica correttamente gli aggiornamenti Lotto collegandosi al sito web Lottomatica tramite wget. Gli altri archivi non li aggiorna perchè Luigi, non so perchè, ha previsto di scaricarli da Spaziometria tramite uno script.
Tornando all'aggiornamento 10eLotto5M, Maurizio Bardelle ha risolto il problema per la lettura delle estrazioni giornaliere ma non aggiorna lo storico. Peraltro l'ho modificato per il salvataggio nel file di ArchiviRotanti. Non ho più dato notizie in merito per non essere petulante.
Allo stato attuale devo fare diverse operazioni per avere l'aggiornamento dell'archivio giornaliero ogni 5 minuti.
Lanciando lo script di messaggio 64 da spaziometria dà inizialmente errore perchè non riesce a trovare il file da rinominare. In pratica non scarica la pagina web.
La cosa strana, per me, è che se la stessa istruzione wget del file.bat, la lancio direttamente dal prompt dei comandi va bene e scarica il file. Dopo aver eseguito questa operazione rilancio lo script da spaziometria e va tutto a buon fine.
Per doverosa notizia
P.S. senza considerare che per avere le estrazioni aggiornate in ArchiviRotanti, ad ogni estrazione devo chiudere e riaprire il programma per la lettura del file aggiornato
 

joe

Advanced Member >PLATINUM<
Ciao, mirapep,

non è possibile rispondere a tutto senza scrivere uno zibaldone, ma proverò almeno per sommi capi.

Gli altri archivi non li aggiorna perchè Luigi, non so perchè, ha previsto di scaricarli da Spaziometria tramite uno script.

Per aggiornare utilizzando le funzioni di explorer è necessario che ve ne sia una versione recente.

Ma le versioni recenti di Explorer non sono più compatibili con i sistemi operativi più vecchi.

in pratica Xp, Seven, Vista e precedenti.

Cioè per "aggiornare" con Xp e Seven Vista ci vogliono script che utilizzino Wget o Curl.

Le versioni adatte di Wget e Curl sono state da noi trovate e provate e certificate (e adesso) sono funzionanti.

Tornando all'aggiornamento 10eLotto5M, Maurizio Bardelle ha risolto il problema per la lettura delle estrazioni giornaliere ma non aggiorna lo storico. Peraltro l'ho modificato per il salvataggio nel file di ArchiviRotanti. Non ho più dato notizie in merito per non essere petulante.

Ho descritto perché secondo me si doveva procedere diversamente.

Allo stato attuale devo fare diverse operazioni per avere l'aggiornamento dell'archivio giornaliero ogni 5 minuti.

Non conosco 10L5 e tantomeno archivi rotanti dunque, non saprei,

ma posso dire che le complicazioni da voi introdotte secondo me rendono molto più difficile

tornare indietro.

Lanciando lo script di messaggio 64 da spaziometria dà inizialmente errore perchè non riesce a trovare il file da rinominare. In pratica non scarica la pagina web.

Evidentemente in questo si dimostra che hai fatto molte prove anche tu.

Penso non sia del tutto giusto dire che non riesce a trovare ... non scarica.

E forse c'è (o meglio mi sono dato) una spiegazione ma mi è difficile descriverla.

La cosa strana, per me, è che se la stessa istruzione wget del file.bat, la lancio direttamente dal prompt dei comandi va bene e scarica il file.

Ho già spiegato perché che tra quanto scrive lo script (.bat), quanto legge il Command.com,

e quanto "arriva" di tutto questo a wget, ci sono cambiamenti cioè errori che derivano dalla sintassi sbagliata.

Un errore.

Inserendo i dati ... "a metà percorso" ... cioè nel "command,com" non si genera lo stesso errore.

"C:\DOCUME~1\Pippo\DATIAP~1\ARCHIV~1\wget.exe" -O "C:\Documents and Settings\Pippo\Dati applicazioni\ArchiviRotanti\temp\temp\estrazioni.zip" --no-check-certificatehttps://www.lottomatica.it/STORICO_ESTRAZIONI_LOTTO/storico.zip

Secondo logica di "economia", penso che LuigiB abbia usato le stesse routine

perché le sapeva funzionanti.

Dunque ti ho chiesto di provare, ma era nelle cose ... che avrebbe funzionato.

NON hai riferito se lo script al messaggio #21 adesso funziona bene.

Ma anche qui so che a te funziona.

Dunque aggiungo che poco fa ho provato personalmente in un PC con Xp.

In sintesi posso confermare che funziona bene sia con Vista anche che con XP.

:) Buona serata a tutte/i.
 
Ultima modifica:

mirapep

Advanced Member >PLATINUM<
Buongiorno,
devo scusarmi con joe per la disattenzione, lo script di messaggio 21 funziona bene sul mio pc con xp. Occorre inserire la seconda parte dello script di maurizio per la lettura dei dati della pagina web scaricata.
Grazie
 

joe

Advanced Member >PLATINUM<
Buona giornata a tutte/i.

Ringrazio mirarep per la conferma, perché pur prevedibile,

certifica l'esistenza di una procedura risolutiva di un problema.

Cioè esegue correttamente il download in macchine diverse con sistemi operativi diversi,

Senza bisogno di modifiche.

:)
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    Thursday 29 October 2020
    Bari
    26
    78
    70
    83
    51
    Cagliari
    62
    21
    12
    11
    44
    Firenze
    48
    38
    85
    90
    79
    Genova
    81
    57
    25
    32
    34
    Milano
    13
    49
    15
    82
    27
    Napoli
    31
    09
    27
    24
    33
    Palermo
    08
    25
    31
    86
    40
    Roma
    10
    06
    39
    57
    85
    Torino
    77
    39
    71
    74
    22
    Venezia
    67
    76
    29
    28
    56
    Nazionale
    30
    40
    42
    26
    16
    Estrazione Simbolotto
    08
    19
    11
    28
    37

Ultimi Messaggi

Alto