'Palinsesto TV was developed by Simone Cassin
Public Class PalinsestoTv
'Dichiarazione di: WebBrowser, variabile di tipo String contenente la data come la vogliamo noi...:) e il nome del canale...sempre come lo vogliamo noi...:)
WithEvents HiddenBrowser As New WebBrowser
Dim DateNotFormatted As String
Dim ChannelName As String
Private Sub Avvio(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Aggiungo alla lista delle date la data di oggi e di domani
ModDate.Items.Add(DateTime.Now.Date)
ModDate.Items.Add(DateTime.Now.AddDays(1).Date)
'La data predefinita è quella di oggi
ModDate.Text = DateTime.Now.Date
'Il canale predefinito è Rai Uno
SelectChannel.Text = "Rai Uno"
End Sub
Private Sub ChangeChannel(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectChannel.SelectedIndexChanged
'Quale canale è stato selezionato? Un controllo a base di if ed elseif trova la corrispondenza esatta e ne ricava il nome del canale
If (SelectChannel.Text = "Rai Uno") Then
ChannelName = "rai uno"
ElseIf (SelectChannel.Text = "Rai Due") Then
ChannelName = "rai due"
ElseIf (SelectChannel.Text = "Rai Tre") Then
ChannelName = "rai tre"
ElseIf (SelectChannel.Text = "Rete Quattro") Then
ChannelName = "rete 4"
ElseIf (SelectChannel.Text = "Canale Cinque") Then
ChannelName = "canale 5"
ElseIf (SelectChannel.Text = "Italia Uno") Then
ChannelName = "italia 1"
ElseIf (SelectChannel.Text = "La7") Then
ChannelName = "la 7"
ElseIf (SelectChannel.Text = "Mtv") Then
ChannelName = "mtv"
End If
'Ora il browser viene indirizzato sulla pagina corretta...
HiddenBrowser.Navigate("http://www.miniportale.it/miniportale/tvoggi/programmi.asp?palinsesto=" & ChannelName & "&data=" & DateNotFormatted)
End Sub
Private Sub ChangeDate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModDate.SelectedIndexChanged
'Azzero il valore di DateNotFormatted
DateNotFormatted = ""
'Dichiaro alcune variabili come la data scelta e l'array della stringa splittata
Dim DateFormatted As String = ModDate.Text
Dim DateFormattedArray As Array = Split(DateFormatted, "/")
'Il contatore inizia al contrario sta volta :P
Dim Conta As Integer = DateFormattedArray.Length - 1
While (Conta <> -1)
DateNotFormatted = DateNotFormatted + DateFormattedArray(Conta)
Conta = Conta - 1
End While
'Ora il browser viene indirizzato sulla pagina corretta...
HiddenBrowser.Navigate("http://www.miniportale.it/miniportale/tvoggi/programmi.asp?palinsesto=" & ChannelName & "&data=" & DateNotFormatted)
HiddenBrowser.ScriptErrorsSuppressed = True
End Sub
Public Sub HiddenBrowser_Complete() Handles HiddenBrowser.DocumentCompleted
'Ricavo dalla pagina HTML tutto ciò che mi serve...
Dim Data As HtmlElementCollection = HiddenBrowser.Document.GetElementsByTagName("tr")
'Un contatore che inizia dal valore 2 (saltiamo quindi nel ciclo while due righe (una contenente il canale scelto e la data, l'altra è vuota quindi inutile))
Dim Conta As Integer = 2
'Dichiarazione di alcune variabili utili...;)
Dim ElaboratedText As String = ""
Dim NotElaboratedText As String = Data(2).InnerText
'Split split...:)
Dim ArrayData As Array = Split(NotElaboratedText, Environment.NewLine)
'Ciclo while che analizza il testo ottenuto dal parsing della pagina html e lo elabora
While (Conta <> ArrayData.Length)
Dim ArrayRow As Array
ArrayRow = Split(ArrayData(Conta).ToString, " ")
Dim IConta As Integer = 2
If (ArrayData(Conta).ToString <> "") Then
If ArrayRow(ArrayRow.Length - 1) <> "" Then
While (IConta <> ArrayRow.Length - 1)
ElaboratedText = ElaboratedText & ArrayRow(IConta) & " "
IConta = IConta + 1
End While
Else
While (IConta <> ArrayRow.Length - 2)
ElaboratedText = ElaboratedText & ArrayRow(IConta) & " "
IConta = IConta + 1
End While
End If
End If
ElaboratedText = ElaboratedText & Environment.NewLine
Conta = Conta + 1
End While
TextBox1.Text = ElaboratedText
End Sub
End Class