Twitter-Feed

    • VB.NET

    Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Nikx.

      Twitter-Feed

      Hey :)

      Änderungen:
      Spoiler anzeigen
      07.05.2013 - Key ist nun das Datum, verhindert Fehler bei doppelten Posts. @hal2000:
      07.05.2013 - TweetQuantity muss nun <= 20 sein, da die TwitterAPI scheinbar nur die neusten 20 Tweets liefert


      Da ich es in meinem aktuellen Projekt brauche hab ich hier mal eine Klasse geschrieben um alle oder eine vorgegebene Anzahl an Tweets
      eines Users auszulesen. Zurückgegeben wird ein Dictionary(Of Date, String). String enthält dabei den Inhalt des Tweets, Date eben das
      Datum.

      Hier die entsprechende Klasse:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Option Strict On
      2. Imports System.Net
      3. Public Class TwitterFeed
      4. Private User As String = ""
      5. Private API As String = "http://api.twitter.com/1/statuses/user_timeline.rss?screen_name="
      6. Sub New(ByVal Name As String)
      7. User = Name
      8. API = API & User
      9. End Sub
      10. Public Function GetFeed(Optional ByVal TweetQuantity As Integer = 0) As Dictionary(Of Date, String)
      11. Dim TweetDir As New Dictionary(Of Date, String)
      12. Dim Web As New WebClient
      13. Dim XMLRead As New Xml.XmlDocument
      14. XMLRead.LoadXml(Web.DownloadString(New Uri(API)))
      15. Dim TweetList As New List(Of String)
      16. Dim DateList As New List(Of Date)
      17. Dim CountItemNodes As Integer = 0
      18. For Each Node As Xml.XmlNode In XMLRead.SelectNodes("rss/channel/item")
      19. CountItemNodes = CountItemNodes + 1
      20. Next
      21. If TweetQuantity > CountItemNodes Then
      22. Throw New Exception("More Tweets requested then available.")
      23. End If
      24. If Not TweetQuantity > 0 Then
      25. For Each Node As Xml.XmlNode In XMLRead.SelectNodes("rss/channel/item/description")
      26. TweetList.Add(Node.InnerText)
      27. Next
      28. For Each Node As Xml.XmlNode In XMLRead.SelectNodes("rss/channel/item/pubDate")
      29. DateList.Add(Date.Parse(Node.InnerText))
      30. Next
      31. ElseIf TweetQuantity > 0 AndAlso TweetQuantity <= 20 Then
      32. Dim CountTweets As Integer = 0
      33. Dim COuntDates As Integer = 0
      34. For Each Node As Xml.XmlNode In XMLRead.SelectNodes("rss/channel/item/description")
      35. If CountTweets = TweetQuantity Then Exit For
      36. TweetList.Add(Node.InnerText)
      37. CountTweets = CountTweets + 1
      38. Next
      39. For Each Node As Xml.XmlNode In XMLRead.SelectNodes("rss/channel/item/pubDate")
      40. If COuntDates = TweetQuantity Then Exit For
      41. DateList.Add(Date.Parse(Node.InnerText))
      42. COuntDates = COuntDates + 1
      43. Next
      44. End If
      45. If Not TweetList.Count = DateList.Count Then Throw New Exception("Error while getting requested tweets.") 'Kein besserer Fehler eingefallen :D
      46. For Counter As Integer = 0 To TweetList.Count - 1
      47. TweetDir.Add(DateList(Counter), TweetList(Counter))
      48. Next
      49. Return TweetDir
      50. End Function
      51. End Class


      Bei der Nutzung kann man das Dictionary einfach per For-Schleife
      durchlaufen und dabei Keys und Values auslesen :)

      Das ganze natürlich Option Strict On und hoffentlich etwas verständlich ;)

      Grüße,
      Nikx
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Nikx“ ()

      @hal2000:

      Danke für den Tipp :)
      Ich habe das ganze nun mal dementsprechend geändert.

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      @Samus Aran: Oh. Klingt ja nicht so gut.

      Gibts dafür ne neue API?
      Bzw: Gibts überhaupt noch nen RSS-Feed? Dann baue ich das gern um :)

      https://api.twitter.com/1.1/search/tweets.json bekomme ich im Moment nicht hin, ich versuch mich weiter dran :D

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      Dann lasse ich das mal so hier stehen. Bis Juni werd ich schon ne Lösung gefunden haben :)
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      @hal2000: Der ist schon seit 3.5 verfügbar ;)
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Wenn du dir die Facebook API runterladest, und dich mit dieser vertraut machst, bzw. dich einließt dann ja.
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Das kannst du dir auch gleich anschaun...
      microsoft.com/germany/msdn/akt…005dasentwicklerbuch.aspx
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Vorsicht, Unwissen folgt:

      Twitter verifiziert soweit ich weißt Anwendungen, die du dort registrieren musst.
      Der User meldet sich also an und erhält einen Code, den er der Anwendung mitteilt.
      Diese kann den Code nun nutzen um Zugriff zu erhalten. Vermutlich stimmt hiervon
      nur die Hälfte, aber ich denke das beschreibt den Vorgang ganz gut.

      Google: "Twitter oAuth .Net"

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      Wäre es eine akzeptable Alternative den Feed aus dem Source-Code in eine XML
      zu schreiben, die dem selben Schema entspricht, und die dann mit der Funktion hier zu
      parsen? @Samus Aran:

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!