Ich hatte etwas Langeweile und da mich schon immer interessiert hat wie Youtube seine Videos verwaltet und wie man deren API Zugriffe nutzen kann
habe ich mich an die Arbeit gemacht und eine kleine API Klasse dafür geschrieben, dazu hab ich noch ein Beispiel beigefügt, die Informationen lassen sich leicht über die
Variablen abrufen.
habe ich mich an die Arbeit gemacht und eine kleine API Klasse dafür geschrieben, dazu hab ich noch ein Beispiel beigefügt, die Informationen lassen sich leicht über die
Variablen abrufen.
VB.NET-Quellcode
- Public Class youtubeAPI
- Public Username As String
- Public Likes As String
- Public Dislikes As String
- Public Description As String
- Public Title As String
- Public CacheLink As String
- Public tCacheLink As String
- Public VideoStream As String
- Public Rating As Single
- Public Tumbnail As String
- Public VideoID As String
- Public Tags() As String
- Public Länge As String ' HH:MM:SS
- Public Tumbnail_client As Net.WebClient
- Public RatingAllowed As Boolean
- Public Sub New(ByVal youtubelink As String)
- Dim parseText As String = DownloadWebpage(youtubelink)
- Likes = getContent(parseText, "class=""likes"">", "<")
- If Not IsNumeric(Likes) Then Likes = "0"
- If Not IsNumeric(Dislikes) Or Dislikes = "" Then Dislikes = "0"
- Dislikes = getContent(parseText, "class=""dislikes"">", "<")
- Description = getContent(parseText, "<p id=""eow-description"" >", "</p>")
- Description = Replace(Description, "<br />", vbNewLine)
- Dim sls() As String
- Dim ID_LINK As String
- If InStr(youtubelink, "&") Then
- sls = Split(youtubelink, "&")
- ID_LINK = sls(0).Substring(sls(0).LastIndexOf("=") + 1)
- Else
- ID_LINK = youtubelink.Substring(youtubelink.LastIndexOf("=") + 1)
- End If
- VideoID = ID_LINK
- Dim rqt As System.Net.WebRequest _
- = System.Net.WebRequest.Create("http://www.youtube.com/get_video_info?video_id=" & ID_LINK)
- Dim streamread As IO.StreamReader
- Dim io_streamer As IO.Stream
- io_streamer = rqt.GetResponse.GetResponseStream
- streamread = New IO.StreamReader(io_streamer)
- tCacheLink = URLDecode(streamread.ReadToEnd)
- tCacheLink = tCacheLink & "&"
- Title = getContent(tCacheLink, "&title=", "&")
- Username = getContent(tCacheLink, "&author=", "&")
- RatingAllowed = CBool(CInt(getContent(tCacheLink, "&allow_ratings=", "&")))
- Tumbnail = getContent(tCacheLink, "&thumbnail_url=", "&")
- CacheLink = getContent(tCacheLink, "&fmt_stream_map=", "||")
- Tags = getContent(tCacheLink, "&keywords=", "&").Split(",")
- Dim secLen As Integer = CInt(getContent(tCacheLink, "&length_seconds=", "&"))
- Dim Minuten As Integer = 0, Stunden As Integer = 0
- Do While (secLen - 60) > -1
- secLen -= 60
- Minuten += 1
- If Minuten = 60 Then
- Minuten -= 60
- Stunden += 1
- End If
- Loop
- Dim skstring(2) As String
- If secLen < 10 Then skstring(0) = "0" & secLen Else skstring(0) = skstring(0) & secLen
- If Minuten < 10 Then skstring(1) = "0" & Minuten Else skstring(1) = skstring(1) & Minuten
- If Stunden < 10 Then skstring(2) = "0" & Stunden Else skstring(2) = skstring(2) & Stunden
- Länge = skstring(2) & ":" & skstring(1) & ":" & skstring(0)
- Dim srs() As String = Split(CacheLink, "|")
- CacheLink = srs(1)
- VideoStream = srs(0)
- Rating = CDbl(Replace(Mid(getContent(tCacheLink, "avg_rating=", "&"), 1, 3), ".", ","))
- End Sub
- Public Function DownloadTumbnail(ByVal Destinationpath As String) As Boolean
- Try
- Tumbnail_client = New Net.WebClient
- Tumbnail_client.DownloadFileAsync(New Uri(Tumbnail), Destinationpath)
- Return True
- Catch ex As Exception
- Tumbnail_client = Nothing
- Return False
- End Try
- End Function
- Private Function URLDecode(ByVal StringToDecode As String) As String
- Dim TempAns As String = ""
- Dim CurChr As Integer
- CurChr = 1
- Do Until CurChr - 1 = Len(StringToDecode)
- Select Case Mid$(StringToDecode, CurChr, 1)
- Case "+"
- TempAns = TempAns & " "
- Case "%"
- TempAns = TempAns & Chr(Val("&h" & _
- Mid$(StringToDecode, CurChr + 1, 2)))
- CurChr = CurChr + 2
- Case Else
- TempAns = TempAns & Mid$(StringToDecode, CurChr, 1)
- End Select
- CurChr = CurChr + 1
- Loop
- URLDecode = TempAns
- End Function
- Private Function getContent(ByVal gettext As String, ByVal getit As String, _
- Optional ByVal xchar As String = Chr(34)) As String
- Dim retval As String = ""
- Dim tit_le As Integer = gettext.IndexOf(getit)
- tit_le += Len(getit) + 1
- Do While Not Mid(gettext, tit_le, Len(xchar)) = xchar
- retval = retval & Mid(gettext, tit_le, 1)
- tit_le += 1
- Loop
- Return retval
- End Function
- Private Function DownloadWebpage(ByVal URL As String) As String
- Dim IoStream As System.IO.Stream = Nothing
- Dim StrRead As System.IO.StreamReader = Nothing
- Try
- Dim Request As System.Net.WebRequest _
- = System.Net.WebRequest.Create(URL)
- IoStream = Request.GetResponse.GetResponseStream
- StrRead = New System.IO.StreamReader(IoStream)
- Return StrRead.ReadToEnd
- Catch ex As Exception
- Return vbNullString
- Finally
- StrRead.Close()
- IoStream.Close()
- End Try
- End Function
- End Class