Twitter – actualizar IP e receber alerta por SMS
Lembrei-me de andar a brincar um bocadinho com a API do Twitter e nada melhor que um exemplo prático para testar 🙂
O que o código abaixo faz é o seguinte:
1º – Usa o site http://checkip.dyndns.org/ para extrair o IP público actual.
2º – Saca o arquivo de estados da conta do Twitter e vai buscar o último IP (ultimo estado)
3º – Actualiza o estado da conta do Twitter com o novo IP no caso de ser diferente do devolvido no ponto 2.
'###############################################
' update your ip address to a twitter account
'###############################################
Dim c As CredentialCache = New CredentialCache
Dim w As WebClient = New WebClient
Dim newIP As String = ""
Dim oldIP As String = ""
Try
' get external ip address
newIP = w.DownloadString("http://checkip.dyndns.org/")
Dim regex As New Regex("<[^>]*>")
newIP = regex.Replace(newIP, "")
newIP = newIP.Substring(newIP.IndexOf(":") + 1).Trim
'carrega as credenciais
c.Add(New Uri("http://twitter.com"), "Basic",
New NetworkCredential("NomeUtilizador", "Password"))
w.Credentials = c
' load archive to get last ip address
Dim archive As String =
w.DownloadString("http://twitter.com/account/archive.xml")
Dim _archive As New XmlDocument
_archive.LoadXml(archive)
'get ip address from first childnode (last update node)
oldIP = _archive.SelectSingleNode("statuses").
FirstChild("text").InnerText.Trim
' compare new and old ip address and update if <>
If Not String.Equals(newIP, oldIP) Then
' prepare postvar
Dim pd As String = "status=" + newIP.ToString
Dim pdArray As Byte() = Encoding.ASCII.GetBytes(pd)
Dim responseArray As Byte() =
w.UploadData("http://twitter.com/statuses/update.xml", "POST", pdArray)
Dim _status As New XmlDocument
'load into xmldocument the http response
_status.LoadXml(Encoding.ASCII.GetString(responseArray))
'update successful ?
If String.Equals(_status.SelectSingleNode("status/text").
InnerText.Trim, newIP) Then
' yeah o/ i've done it !!!
End If
Else
' no update necessary ...
End If
Catch ex As Exception
Debug.Print(ex.ToString)
End Try
Para isto funcionar, cria uma conta no Twitter só para ter os IPs actualizados e depois na conta principal vai a esta conta e faz o Follow ( activar a opção “Device Updates” e associar o nº de telemovel à conta ).
Podem fazer o download da solução com este código na página de projectos.