02/02/23 23:01
Giacos71
Postato originariamente da Carlo:
Purtroppo non so perché da .Net anche con il protocollo Tls12 il certificato per scaricare igt.it/STORICO_ESTRAZIONI_LOTTO/… non è valido, speriamo che qualcuno ce lo spieghi.
Personalmente non ho problemi da .Net a scaricare files da altri siti o dai miei con il protocollo Tls12
Non capisco nemmeno io ed internet sembra ci siano poche informazioni a riguardo, non capisco se l certificato dipenda da me o dal server. Comunque ho scoperto che una volta immesso il link in questo caso igt.it/ e facendo clck sul lucchetto nella barra degli indirizzi compare un men dal quale si può esportare il certificato (igt.cert). Però non so se si può passare questo certificato al programma per poter dialogare in modo corretto e sicuro col server. Se fosse che si può si potrebbe creare una procedura che verifica se chiede un certificato x e lo usa nell'applicazione, anche perchè penso che il certificato non sia uguale per tutti. Almeno questa è l'idea.
Ho scritto due righe che ti potrebbero tornare utili.
Alla faccia delle due righe! E ben molto di più, di questo te ne sono grato anche se io volevo fare funzionare il mio e il fatto che non ci sia riuscito mi fa rabbia. Da quanto ho capito il codice che mi hai messo scarica le estrazioni dal link che mi hai messo tu e le accoda nel file scaricato (a mano e unzippato) dal sito che voglio io giusto? Certo che hai fatto un lavoraccio (nel senso) grande, e tutto questo per scaricare un file. Non voglio sembrare un chiede codice come almercato (giàavuto esperienza in un post precedente), difatti il mio obbiettivo era quello di riuscire a scaricare il file zip. Comunque grazie.
Metti nella caretella C:\Downloads\ il file Storico.txt scaricato da igt e dezippato a mano.
Lancia il programma DownloadArchivio.exe dopo averlo estratto dallo zip allegato qui sotto.
Il programma cerca nel file Storico.txt l'ultima data presente e ne usa l'anno per scaricare da lottologia il file ArchivioAAAA.txt corrispondente.
Scaricato il file ArchivioAAAA.txt, le date non presenti in Storico.txt verranno aggiunte con la giusta formattazione.
Il programma è anche capace di scaricare più anni, puoi provare cancellando alcune estrazioni da Storico.txt
ATTENZIONE Non controlla se nella data ci sono tutte le estrazioni, se cancelli delle estrazioni da "Storico.txt" lo devi fare sempre dall'estrazione di BA in poi, Il file Storico.txt deve sempre terminare con l'estrazione di VE e suoi estratti, non deve contenere righe vuote alla fine.
Il programma in una listbox annota tutte le fasi, utile per capire il progresso e il contenuto delle variabili, il punto esclamativo indica che si può procedere, il punto interrogativo indica un errore e il programma termina.
Aggiungo il codice completo, la listbox viene aggiunta in runtime
Sulle estrazioni aggiunte i numeri minori di 10 contengono lo zero davanti (non ti dovrebbe cambiare nulla)
Il file Storico.txt quando risalvato contiene CrLf a fine riga (non ti dovrebbe cambiare nulla)
Ho cercato di prevedere i possibili scenari, ma sicuramente mi è sfuggito qualcosa, sta a te verificare.
Spero che ti sia utile.
EDIT: Ho corretto un errore
PS. meno parole che non riguardano il codice ci sono e meglio è...
Se ti riferisci che ho scritto troppe parole e poco codice chiedo scusa ma mi dovevo pure spiegare, se invece ti riferisci a nessuno che si permette di giudicarmi mi spiace ma non mi sta bene. Io dico solo se non condividi le mie idee o non ti va di aiutarmi semplicemente ignorami, se invece semplicimente entri per farmi le tue osservazioni personali mi spiace ma proprio no. Anche perchè se io voglio creare un piccola applicazione per il gioco del lotto non voglio proprio obbligare nessuno a seguirmi o credere alle mie ideologie. Io voglio semplicemte risolve un mio problema di programmazione e ho chiesto aiuto. Poi se vuole uno mi aiuta oppure no, di certo non mi offendo. Anche perchè questa sarebbe la seconda volta, non sarebbe più semplice ignorarmi? Dicerto non sono arrivato alla tenera eta di 52 anni per farmi mancare di rispetto da nessuno, e io non ha dato fastidio a nessuno!
Bene ora chiudo qua il discorso e se ho frainteso ho offeso qualcuno chiedo scusa.
Purtroppo non so perché da .Net anche con il protocollo Tls12 il certificato per scaricare igt.it/STORICO_ESTRAZIONI_LOTTO/… non è valido, speriamo che qualcuno ce lo spieghi.
Personalmente non ho problemi da .Net a scaricare files da altri siti o dai miei con il protocollo Tls12
Non capisco nemmeno io ed internet sembra ci siano poche informazioni a riguardo, non capisco se l certificato dipenda da me o dal server. Comunque ho scoperto che una volta immesso il link in questo caso igt.it/ e facendo clck sul lucchetto nella barra degli indirizzi compare un men dal quale si può esportare il certificato (igt.cert). Però non so se si può passare questo certificato al programma per poter dialogare in modo corretto e sicuro col server. Se fosse che si può si potrebbe creare una procedura che verifica se chiede un certificato x e lo usa nell'applicazione, anche perchè penso che il certificato non sia uguale per tutti. Almeno questa è l'idea.
Ho scritto due righe che ti potrebbero tornare utili.
Alla faccia delle due righe! E ben molto di più, di questo te ne sono grato anche se io volevo fare funzionare il mio e il fatto che non ci sia riuscito mi fa rabbia. Da quanto ho capito il codice che mi hai messo scarica le estrazioni dal link che mi hai messo tu e le accoda nel file scaricato (a mano e unzippato) dal sito che voglio io giusto? Certo che hai fatto un lavoraccio (nel senso) grande, e tutto questo per scaricare un file. Non voglio sembrare un chiede codice come almercato (giàavuto esperienza in un post precedente), difatti il mio obbiettivo era quello di riuscire a scaricare il file zip. Comunque grazie.
Metti nella caretella C:\Downloads\ il file Storico.txt scaricato da igt e dezippato a mano.
Lancia il programma DownloadArchivio.exe dopo averlo estratto dallo zip allegato qui sotto.
Il programma cerca nel file Storico.txt l'ultima data presente e ne usa l'anno per scaricare da lottologia il file ArchivioAAAA.txt corrispondente.
Scaricato il file ArchivioAAAA.txt, le date non presenti in Storico.txt verranno aggiunte con la giusta formattazione.
Il programma è anche capace di scaricare più anni, puoi provare cancellando alcune estrazioni da Storico.txt
ATTENZIONE Non controlla se nella data ci sono tutte le estrazioni, se cancelli delle estrazioni da "Storico.txt" lo devi fare sempre dall'estrazione di BA in poi, Il file Storico.txt deve sempre terminare con l'estrazione di VE e suoi estratti, non deve contenere righe vuote alla fine.
Il programma in una listbox annota tutte le fasi, utile per capire il progresso e il contenuto delle variabili, il punto esclamativo indica che si può procedere, il punto interrogativo indica un errore e il programma termina.
Aggiungo il codice completo, la listbox viene aggiunta in runtime
Imports System.Net Imports System.IO Public Class Form1 Dim lB As New ListBox Dim storico As List(Of String) Dim percorsoStorico As String = "C:\Downloads\Storico.txt" Dim diffAnno As Integer Dim ultimaData As Date Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown lB.Dock = DockStyle.Fill Me.Controls.Add(lB) If File.Exists(percorsoStorico) Then lB.Items.Add("! trovato " & percorsoStorico) storico = File.ReadAllLines(percorsoStorico).ToList lB.Items.Add("! caricato in lista storico: " & percorsoStorico) Dim indiceUltimaData As Integer Do ' accoda un anno o più indiceUltimaData = storico.Count - 1 If storico.Last.Length > 10 AndAlso Date.TryParse(storico.Last.Substring(0, 10), ultimaData) Then lB.Items.Add("! ultima data in Storico.txt = " & ultimaData.ToShortDateString & " Riga: " & indiceUltimaData) : lB.Refresh() Else lB.Items.Add("? L'ULTIMA RIGA E' VUOTA E/O NON CONTIENE UNA DATA") Exit Sub End If aggiungi() diffAnno = 1 ' passa al prossimo anno ' visualizzo le estrazioni accodate, utile per controlli For i = indiceUltimaData + 1 To storico.Count - 1 lB.Items.Add("! Add " & storico(i)) Next Loop While Today.Year > ultimaData.Year ' esce per eccesso di anno senza incremento Else lB.Items.Add("? " & percorsoStorico & " NON ESISTE") Exit Sub End If File.WriteAllLines(percorsoStorico, storico) lB.Items.Add("! Storico aggiornato " & percorsoStorico & " con " & storico.Count & " righe") lB.TopIndex = lB.Items.Count - 1 ' rende visibile l'ultima riga End Sub Sub aggiungi() If Today.Year < ultimaData.Year + diffAnno Then Exit Sub ' esce per eccesso di anno con incremento Dim archivio As List(Of String) Dim source As String = "https://www.lottologia.com/lotto/archivio-estrazioni/?as=TXT&year=" & (ultimaData.Year + diffAnno).ToString Dim destinazione As String = Path.Combine(Path.GetDirectoryName(percorsoStorico), "Archivio" & (ultimaData.Year + diffAnno).ToString & ".txt") lB.Items.Add("! carico archivio: " & source) : lB.Refresh() Me.Cursor = Cursors.WaitCursor Using client As New WebClient() Try ServicePointManager.Expect100Continue = True ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Ssl3 client.DownloadFile(source, destinazione) lB.Items.Add("! " & destinazione & " ***SALVATO***") : lB.Refresh() Catch er As Exception lB.Items.Add("? " & er.Message) Exit Sub End Try End Using Me.Cursor = Cursors.Default archivio = File.ReadAllLines(destinazione).ToList Dim indice As Integer ' conterrà la posizione della prima estrazione su archivio da accodare su storico If diffAnno = 0 Then ' primo anno accodato anche parziale lB.Items.Add("! caricato in lista archivio: " & destinazione) lB.Items.Add("! cerco la data " & ultimaData & " in " & destinazione) : lB.Refresh() Dim dataArchivio As Date ' cerca la data For indice = 2 To archivio.Count - 1 If archivio(indice).Length > 10 AndAlso Date.TryParse(archivio(indice).Substring(0, 10), dataArchivio) Then If dataArchivio = ultimaData Then lB.Items.Add("= SI : " & dataArchivio.ToShortDateString) Exit For ' data trovata Else lB.Items.Add("= NO: " & dataArchivio.ToShortDateString) : lB.Refresh() End If End If Next indice If dataArchivio <> ultimaData Then lB.Items.Add("? la data: " & ultimaData.ToShortDateString & " in " & destinazione & " NON ESISTE") Exit Sub End If Else ' anni successivi accodati su storico sempre dall'inizio indice = archivio.Count - 1 lB.Items.Add("! aggiungo anno: " & (ultimaData.Year + diffAnno).ToString) lB.TopIndex = lB.Items.Count - 1 ' rende visibile l'ultima riga lB.Refresh() End If ' aggiungo le estrazioni con la formattazione di www.igt.it For i = indice - 1 To 0 Step -1 Dim diviso() As String = archivio(i).Split(vbTab) Dim dataDivisa As Date If Date.TryParse(diviso(0), dataDivisa) Then storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "BA" & vbTab & diviso(1) & vbTab & diviso(2) & vbTab & diviso(3) & vbTab & diviso(4) & vbTab & diviso(5)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "CA" & vbTab & diviso(6) & vbTab & diviso(7) & vbTab & diviso(8) & vbTab & diviso(9) & vbTab & diviso(10)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "FI" & vbTab & diviso(11) & vbTab & diviso(12) & vbTab & diviso(13) & vbTab & diviso(14) & vbTab & diviso(15)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "GE" & vbTab & diviso(16) & vbTab & diviso(17) & vbTab & diviso(18) & vbTab & diviso(19) & vbTab & diviso(20)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "MI" & vbTab & diviso(21) & vbTab & diviso(22) & vbTab & diviso(23) & vbTab & diviso(24) & vbTab & diviso(25)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "NA" & vbTab & diviso(26) & vbTab & diviso(27) & vbTab & diviso(28) & vbTab & diviso(29) & vbTab & diviso(30)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "PA" & vbTab & diviso(31) & vbTab & diviso(32) & vbTab & diviso(33) & vbTab & diviso(34) & vbTab & diviso(35)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "RM" & vbTab & diviso(36) & vbTab & diviso(37) & vbTab & diviso(38) & vbTab & diviso(39) & vbTab & diviso(40)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "RN" & vbTab & diviso(51) & vbTab & diviso(52) & vbTab & diviso(53) & vbTab & diviso(54) & vbTab & diviso(55)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "TO" & vbTab & diviso(41) & vbTab & diviso(42) & vbTab & diviso(43) & vbTab & diviso(44) & vbTab & diviso(45)) storico.Add(dataDivisa.Year & "/" & dataDivisa.Month.ToString("00") & "/" & dataDivisa.Day.ToString("00") & vbTab & "VE" & vbTab & diviso(46) & vbTab & diviso(47) & vbTab & diviso(48) & vbTab & diviso(49) & vbTab & diviso(50)) End If Next i End Sub End Class
Sulle estrazioni aggiunte i numeri minori di 10 contengono lo zero davanti (non ti dovrebbe cambiare nulla)
Il file Storico.txt quando risalvato contiene CrLf a fine riga (non ti dovrebbe cambiare nulla)
Ho cercato di prevedere i possibili scenari, ma sicuramente mi è sfuggito qualcosa, sta a te verificare.
Spero che ti sia utile.
EDIT: Ho corretto un errore
PS. meno parole che non riguardano il codice ci sono e meglio è...
Se ti riferisci che ho scritto troppe parole e poco codice chiedo scusa ma mi dovevo pure spiegare, se invece ti riferisci a nessuno che si permette di giudicarmi mi spiace ma non mi sta bene. Io dico solo se non condividi le mie idee o non ti va di aiutarmi semplicemente ignorami, se invece semplicimente entri per farmi le tue osservazioni personali mi spiace ma proprio no. Anche perchè se io voglio creare un piccola applicazione per il gioco del lotto non voglio proprio obbligare nessuno a seguirmi o credere alle mie ideologie. Io voglio semplicemte risolve un mio problema di programmazione e ho chiesto aiuto. Poi se vuole uno mi aiuta oppure no, di certo non mi offendo. Anche perchè questa sarebbe la seconda volta, non sarebbe più semplice ignorarmi? Dicerto non sono arrivato alla tenera eta di 52 anni per farmi mancare di rispetto da nessuno, e io non ha dato fastidio a nessuno!
Bene ora chiudo qua il discorso e se ho frainteso ho offeso qualcuno chiedo scusa.
aaa