Technobase.fm modpic auslesen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von X-Zat.

    Technobase.fm modpic auslesen

    Hey ich wollte euch mal fragen wie ich denn von den DJ Das bild auslesen kann?

    mein code:

    VB.NET-Quellcode

    1. Imports System.IO ' Wegen StreamReader
    2. Imports System.Net ' Wegen WebRquest, WebResponse
    3. Imports System.Text.RegularExpressions ' Wegen RegEx
    4. Imports System.Text
    5. Public Class Form1
    6. Private Sub TechnoBase()
    7. 'Die Deklaration der Informationen
    8. Dim radioname, radiomoderator, radioshow, radiostyle, showstarttime, _
    9. showendtime, moderatorlink, titleartist, title, radiorelease, _
    10. radiolistener, radiourl, modpic As String
    11. 'Die XML downloaden
    12. Dim a As New WebClient
    13. a.DownloadFile(New Uri("http://tray.technobase.fm/radio.xml"), "radio.xml")
    14. a.Dispose()
    15. 'Das XML Document Laden
    16. Dim xml As XDocument = XDocument.Load("radio.xml")
    17. 'Den Namen des Radiosenders auslesen
    18. radioname = xml.<weareone>.<radio>(0).<name>.Value
    19. 'Den Moderator auslesen
    20. radiomoderator = xml.<weareone>.<radio>(0).<moderator>.Value
    21. 'Den Shownamen auslesen
    22. radioshow = xml.<weareone>.<radio>(0).<show>.Value
    23. 'Den Style auslesen
    24. radiostyle = xml.<weareone>.<radio>(0).<style>.Value
    25. 'Die Startzeit auslesen
    26. showstarttime = xml.<weareone>.<radio>(0).<starttime>.Value
    27. 'Die Endzet auslesen
    28. showendtime = xml.<weareone>.<radio>(0).<endtime>.Value
    29. 'Den Link zum Moderator auslesen
    30. moderatorlink = xml.<weareone>.<radio>(0).<link>.Value
    31. 'Den Artist auslesen
    32. titleartist = xml.<weareone>.<radio>(0).<artist>.Value
    33. 'Den Song auslesen
    34. title = xml.<weareone>.<radio>(0).<song>.Value
    35. 'Das Release auslesen
    36. radiorelease = xml.<weareone>.<radio>(0).<release>.Value
    37. 'Die Listener auslesen
    38. radiolistener = xml.<weareone>.<radio>(0).<listener>.Value
    39. 'Die Url auslesen
    40. radiourl = xml.<weareone>.<radio>(0).<url>.Value
    41. 'Das Moderator Bild Downloaden und anzeigen
    42. Dim b As New WebClient()
    43. b.DownloadFile(New Uri(xml.<weareone>.<radio>(0).<picture>.Value), My.Computer.FileSystem.SpecialDirectories.Temp & "\tmod.jpg")
    44. b.Dispose()
    45. modpic = My.Computer.FileSystem.SpecialDirectories.Temp & "\tmod.jpg"
    46. 'Informationen in ein Array packen, muss man eigentlich nicht aber ich finde es so besser
    47. Dim technobase(12) As String
    48. technobase(0) = radioname
    49. technobase(1) = radiomoderator
    50. technobase(2) = radioshow
    51. technobase(3) = radiostyle
    52. technobase(4) = showstarttime
    53. technobase(5) = showendtime
    54. technobase(6) = moderatorlink
    55. technobase(7) = titleartist
    56. technobase(8) = title
    57. technobase(9) = radiorelease
    58. technobase(10) = radiolistener
    59. technobase(11) = radiourl
    60. technobase(12) = modpic
    61. 'Informationen auslesen
    62. 'z.b. Label1.Text = "Jetzt auf TechnoBase.FM: " & technobase(7) & " - " & technobase(8)
    63. 'Dabei ist technobase(7) der Titleartist und technobase(8) der Title
    64. Label4.Text = "Zuhörer:" & " " & technobase(10)
    65. Label3.Text = "Mod Link:" & " " & technobase(6)
    66. Label1.Text = GetOnAir() & " " & "mit" & ": " & technobase(7) & " - " & technobase(8)
    67. 'Wenn man den Array weglassen würde so müsste man das so schreiben
    68. 'Label1.Text = "Jetzt auf TechnoBase.FM: " & titleartist & " - " & title
    69. End Sub


    Danke wenn ihr mir helfen könntet.. :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kevios12“ ()

    Erstmal: Warum benutzt du nicht direkt XML.load(URI)?
    Damit kannst du direkt online die XML auslesen (bzw. der String wird heruntergeladen und als XML verarbeitet)...

    Ansonsten: Du hast doch den Link zum Moderator - Warum nicht einfach per HTTP(Web?)Request die HTML ziehen und per RegEx den Bild-Link auslesen? Dann nur noch per WebClient das Bild via Bild-Link ziehen.

    Schließlich (optional): Kuchen backen.

    MfG,
    X-Zat / Momo
    Also, das ist der relevante Teil der XML (das hast du bereits erkannt):

    XML-Quellcode

    1. <radio>
    2. <name>TechnoBase</name>
    3. <moderator>Keenax</moderator>
    4. <show>Reversed Reality</show>
    5. <style>HandsUp</style>
    6. <starttime>20</starttime>
    7. <endtime>22</endtime>
    8. <link>http://www.TechnoBase.FM/member/245013</link>
    9. <picture>
    10. http://profil.technobase.eu/profil_small245013-5-700919c9035223df98782346ed581a4d.jpg
    11. </picture>
    12. <artist>Darius & Finlay feat. Nicco</artist>
    13. <song>Till Morning</song>
    14. <release>http://www.TechnoBase.FM/release/9259</release>
    15. <listener>10793</listener>
    16. <url>http://www.TechnoBase.FM</url>
    17. </radio>


    Du hast auch schon in der Node "link" den Link zum Moderator ("http://www.TechnoBase.FM/member/245013").

    Nun downloade einfach den HTML-Text der Seite per WebClient:

    VB.NET-Quellcode

    1. Dim Pic As Bitmap = GetModeratorBitmap(link)
    2. Public Function GetModeratorBitmap(ByVal Link As String) As Bitmap
    3. Try
    4. Dim WebC As New System.Net.Webclient 'WebClient zum herunterladen aller benötigten Infos
    5. Dim Source As String = WebC.DownloadString(Link) 'HTML-Text der Seite herunterladen
    6. Dim Pattern As String = "<div\sid\=\""rc_profile_picture_bg"">.*<.*src\=\""(?<PicLink>.*)\"".*>.*<\/div>" 'Regex-Pattern festlegen
    7. Dim Match As System.Text.RegularExpressions.Math = System.Text.RegularExpressions.Regex.Match(Source, Pattern, IgnoreCase) 'Regex den Text nach Matches (Treffern) durchsuchen lassen
    8. Dim ReturnPic As Bitmap 'Bitmap, die zurückgegeben werden soll erstellen
    9. Dim PicStream As New System.IO.MemoryStream(WebC.DownloadData(Match.Groups("PicLink").Value)) 'Stream, der das Bild herunterlädt
    10. ReturnPic = Image.FromStream(PicStream) 'Inhalt des Streams an Bild übergeben
    11. Catch ex As Exception 'Ausnahme tritt auf
    12. MessageBox.Show("Es ist ein Fehler aufgetreten!")
    13. WebC.Dispose
    14. PicStream.Dispose 'Oder .Close?
    15. Return Nothing 'Nichts zurückgeben
    16. End Try
    17. WebC.Dispose
    18. PicStream.Dispose 'Oder .Close?
    19. Return ReturnPic 'Bild zurückgeben
    20. End Function


    Ich denke, das ist ausreichend kommentiert und sollte funktionieren. Das ist jetzt alles aus dem Kopf, keine Ahnung, ob es auch fehlerfrei ist :).

    MfG,
    X-Zat / Momo