Nach mehreren Experimentierversuchen mit der verschollenen ICQ-API und der mysteriösen Oscarlib, die mich nicht wirklich weitergebracht haben, fand ich doch endlich einen Weg, auszulesen, ob eine UIN on- oder offline ist.
Es gibt nämlich eine mehr oder weniger geheime API-Seite, die ein paar Informationen über den jeweiligen User bereitstellt. Diese lautet
icq.com/js/pcc.php?Uin=123456789 (sorry für denjenigen, der diese Nummer hat :().
Wenn wir einmal auf diese Seite gehen, sehen wir einen Wall-Of-Text, aber wenn wir (bei FF Rechtsklick ► Seitenquelltext anzeigen) uns den Seitenquelltext angucken, sieht es schon etwas geordnet aus. Dort finden wir in der 8ten Zeile gl_status = gl_pcc_info\[6\] = "0";. Wie man vermuten kann, stellt die Zahl hinten den Status dar. Wenn wir also diese Zahl auslesen würden, erhielten wir den aktuellen Online-Status.
(Ich erstelle keine Klasse, sondern ein Modul, weil ein nicht-statischer Status-Check für mich – für diesen Zweck– sinnfrei wäre)
Zuerst erstellen wir uns einen WebClienten, mit dem wir den Seitenquelltext downloaden und direkt als String in str speichern.
Dann finden wir gl_status = gl_pcc_info\[6\] = (ohne die Zahl, da der Status ja variabel ist). Zu dieser Position rechnen wir noch 32 dazu, weil wir als Ergebnis ja nicht gl_status = gl_pcc_info\[6\] = bekommen wollen, sondern die Zahl, welche den Status repräsentiert.
Dieses Ergebnis fangen wir dann in einem Case-Block ab und überprüfen, ob der User jetzt Off- oder Online ist.
[Away, N/A & Occupied binde ich hier nicht ein, weil bei mir bei Usern, die Away, N/A oder Occupied sind immer etwas Anderes herauskommt …]
Wenn wir jetzt bei einem Projekt ein Modul hinzufügen und uns obigen Code copy-&-pasten, brauchen wir für den Aufruf nur noch
schreiben, und uns flattert ein lustiges „Offline“ (bzw. „Online“) entgegen.
Wenn noch Fragen oder Fehler auftauchen sollten …
Es gibt nämlich eine mehr oder weniger geheime API-Seite, die ein paar Informationen über den jeweiligen User bereitstellt. Diese lautet
icq.com/js/pcc.php?Uin=123456789 (sorry für denjenigen, der diese Nummer hat :().
Wenn wir einmal auf diese Seite gehen, sehen wir einen Wall-Of-Text, aber wenn wir (bei FF Rechtsklick ► Seitenquelltext anzeigen) uns den Seitenquelltext angucken, sieht es schon etwas geordnet aus. Dort finden wir in der 8ten Zeile gl_status = gl_pcc_info\[6\] = "0";. Wie man vermuten kann, stellt die Zahl hinten den Status dar. Wenn wir also diese Zahl auslesen würden, erhielten wir den aktuellen Online-Status.
VB.NET-Quellcode
- Module IcqOnlineCheck
- Public Function checkState(ByVal uin As String) As String
- Dim str As String = (New Net.WebClient()).DownloadString("http://www.icq.com/js/pcc.php?Uin=" & uin)
- Dim start As Short = Str.IndexOf("gl_status = gl_pcc_info\[6\] = ") + 32 '32 = Stringlänge
- Dim status As String = Str.Substring(start, 1) 'Der momentane ICQ-Status
- Select Case status
- Case 0
- status = "Offline"
- Case Else
- status = "Online"
- End Select
- Return status
- End Function
- End Module
(Ich erstelle keine Klasse, sondern ein Modul, weil ein nicht-statischer Status-Check für mich – für diesen Zweck– sinnfrei wäre)
Zuerst erstellen wir uns einen WebClienten, mit dem wir den Seitenquelltext downloaden und direkt als String in str speichern.
Dann finden wir gl_status = gl_pcc_info\[6\] = (ohne die Zahl, da der Status ja variabel ist). Zu dieser Position rechnen wir noch 32 dazu, weil wir als Ergebnis ja nicht gl_status = gl_pcc_info\[6\] = bekommen wollen, sondern die Zahl, welche den Status repräsentiert.
Dieses Ergebnis fangen wir dann in einem Case-Block ab und überprüfen, ob der User jetzt Off- oder Online ist.
[Away, N/A & Occupied binde ich hier nicht ein, weil bei mir bei Usern, die Away, N/A oder Occupied sind immer etwas Anderes herauskommt …]
Wenn wir jetzt bei einem Projekt ein Modul hinzufügen und uns obigen Code copy-&-pasten, brauchen wir für den Aufruf nur noch
schreiben, und uns flattert ein lustiges „Offline“ (bzw. „Online“) entgegen.
Wenn noch Fragen oder Fehler auftauchen sollten …
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()