[Theoretisch]Youtube Download Klasse

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Theoretisch]Youtube Download Klasse

      Ich habs nie ausgetestet aber von der theorie her müssts klappen ausser ich hab nen dummen fehler gemacht

      habs gemacht weil mir langweilig war

      Download von youtube video im 3gp format
      Das mpeg4 format hätte etwas mehr arbeit gekostet (Den Mobile safari simulieren)

      Hier der code
      Have Fun

      Quellcode

      1. Public Class YoutubeDownload
      2. Private Function Decode(ByVal WebStream As IO.Stream) As String
      3. Dim reader As New IO.StreamReader(WebStream)
      4. Dim Link As String = ""
      5. Do Until reader.EndOfStream
      6. Dim Line As String = reader.ReadLine.TrimEnd.TrimStart
      7. If Line.StartsWith("<a href=" + Chr(34) + "rtsp://") Then
      8. For i As Integer = 10 To Line.Count
      9. If Mid(Line, i, 1) = Chr(34) Then
      10. Exit For
      11. Else
      12. Link += Mid(Line, i, 1)
      13. End If
      14. Next
      15. Exit Do
      16. End If
      17. Loop
      18. Return Link
      19. End Function
      20. Private Function GetMobileLink(ByVal YoutubeLink As String) As String
      21. Dim MobileLink As String = ""
      22. Dim VideoID As String = ""
      23. Dim a As Boolean = False
      24. For i As Integer = 1 To YoutubeLink.Count
      25. If a = False Then
      26. If Mid(YoutubeLink, i, 2) = "?v=" Or Mid(YoutubeLink, i, 2) = "&v=" Then
      27. a = True
      28. End If
      29. Else
      30. Try
      31. If Mid(YoutubeLink, i, 1) = "&" Then
      32. a = False
      33. Exit For
      34. Else
      35. VideoID += Mid(YoutubeLink, i, 1)
      36. End If
      37. Catch ex As Exception
      38. End Try
      39. End If
      40. Next
      41. MobileLink = "http://m.youtube.com/watch?v=" & VideoID
      42. Return MobileLink
      43. End Function
      44. Private Function DownloadVideo(ByVal Url As String) As Byte()
      45. Return New Net.WebClient().DownloadData(Url)
      46. End Function
      47. Public Sub DownloadYoutubeVideo(ByVal Url As String)
      48. Dim MobileLink As String = GetMobileLink(Url)
      49. Dim WebC As New Net.WebClient
      50. Dim IE As New Windows.Forms.WebBrowser
      51. IE.Navigate(New Uri(MobileLink))
      52. Dim HtmlStream As IO.MemoryStream = IE.DocumentStream
      53. IE.Dispose()
      54. Dim VideoUrl As String = Decode(HtmlStream)
      55. Dim buffer As Byte() = DownloadVideo(VideoUrl)
      56. Dim sfd As New Windows.Forms.SaveFileDialog
      57. sfd.Filter = "3GP Video File(*.3gp)|*.3gp"
      58. If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
      59. IO.File.WriteAllBytes(sfd.FileName, buffer)
      60. End If
      61. End Sub
      62. Public Sub DownloadYoutubeVideo(ByVal Url As String, ByVal Save As String)
      63. Dim MobileLink As String = GetMobileLink(Url)
      64. Dim WebC As New Net.WebClient
      65. Dim IE As New Windows.Forms.WebBrowser
      66. IE.Navigate(New Uri(MobileLink))
      67. Dim HtmlStream As IO.MemoryStream = IE.DocumentStream
      68. IE.Dispose()
      69. Dim VideoUrl As String = Decode(HtmlStream)
      70. Dim buffer As Byte() = DownloadVideo(VideoUrl)
      71. If Not Save.EndsWith(".3gp") Then
      72. Save += ".3gp"
      73. End If
      74. IO.File.WriteAllBytes(Save, buffer)
      75. End Sub
      76. End Class
      Alles anzeigen


      Ps wer meint einfach copy u Paste machen zu können wird Fehler bekommen

      Ich hab schon 2 Fehler gefunden
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • ich zeige mal ein paar fehler
      1. bei
      If Mid(YoutubeLink, i, 2) = "?v=" Or Mid(YoutubeLink, i, 2) = "&v=" Then
      a = True
      End If

      müsste euch auffallen das ich mit mid einen 2 stelligen string abfrage aber hinter dem komma ikst ein dreistelliger
      macht aus der 2 ne 3
      und wenn er mit dem mid abfragt ist er bei dem ? oder dem& also startet er bei dem v schon mit dem aufzeichen der video id also kommt als video id dann v=VIDEOID raus

      dann
      IE.Navigate(New Uri(MobileLink))
      Dim HtmlStream As IO.MemoryStream = IE.DocumentStream
      IE.Dispose()

      wenn ihr beim stream bleiben wollt müsst ihr anstadt nen webbrowser nen webclienten initialisieren, den hatml code laden und in eine datei schreiben und dann wieder in nen filestream laden

      oder ihr initialisiert ne richtextbox und függt rd als text hinzu und geht durch die einzelnen lines