Hallo ,
Als Ich gesehen habe, dass Youtube wieder was geändert hat ...
dann dachte Ich mir Ich schreibe mal ein tutorial wie man alle verfügbaren Download Links aus einem
Video rausfiltert . Im Tutorial wird es erstmal darum gehen wie der Link zusammengesetzt ist und dann
Kommen wir zum Code :
Also Früher war es so dass man die Videos mit diesen Link herunterladen konnte:
Nun aber hat Youtube diesen Link entfernt sodass man den Download Link es aus dem Quelltext rausfiltern muss . Den Download Link den ihr dann rausfiltert könnt dann nur Ihr verwenden und kein Anderer !!!
Der Download Link Jetzt besteht aus genau 3 Abschnitten .
Undzwar :
Nun hat Youtube in Ihrem Quellcode nicht einfach so Den Download Link des Videos eingespeichert sondern nur Teile die man später zusammen setzen muss. Im Quellcode eines Videos gibt es nun ein Abschnitt
der auf den ersten Blick verwirrend aussieht aber eigentlich ganz einfach zu verstehen ist , undzwar den Abschnitt Nach
in diesen Abschnitt befinden sich alle Download Links die wir suchen.
Ich hoffe Ihr konntet nun verstehen wie der Download Link eines Videos von Youtube aufgebaut ist. Und nun kommen wir zum Code :
Also in diesen Beispiel benötigen wir ein Button und eine Textbox.
Fangen wir erstmal an die Funktion zu schreiben mit der wir die Download Links als eine Liste von Strings wiedergeben.
Nun als aller erstes Deklarrieren wir :
Den Webclient benötigen wir für das herunterladen des Quelltextes und die Liste ist unsere return Variable.
Nun deklarrieren wir eine neue Variable in der wir den Quelltext heruntergeladen und den Abschnitt nach "url_encoded_fmt_stream_map" rausfischen
Als nächstes benötigen wir eine "While Schleife" um jeden Download Link rauszufischen
Nun kommen wir zu den 1. teil den wir rausfischen wollen. Undzwar der URL Wichtig im Code kommt 3 mal ein Wort namens Backslash hier im Forum wird dass Backlash als leerer String angezeigt, deshalb ersetzt das Wort durch ein echtes backlash:
Als nächstes brauchen wir den fallback_host :
Und anschließen noch die Signature des Videos :
Nun müssen wir noch unsere Teile zusammensetzen :
Wichtig --> Jetzt müsst ihr noch einen Verweis auf die "System.Web.dll" hinzufügen und dann wird Die zusammengesetzte url noch Decodiert :
Jetzt wird dieser Link zur Return Variable noch hinzugefügt und löschen diesen Link aus der Variable Stream damit While Schleife auch mal Endet, sonst würde sie ewig lang weiter gehen :
Anschließend noch die Return Anweisung und dass Wars mit der Funktion :
So nun Fügen wir im Click Event vom Button noch diesen Code hinzu :
In der Liste t sind nun alle verfügbaren DownloadLinks drin
Hier noch einmal die ganze Funktion :
Ich Hoffe Ihr konntet alles verstehen und falls Es euch geholfen hatt ,
auf den Hilfreich Button Drücken
M.F.G Tibiamicus
Als Ich gesehen habe, dass Youtube wieder was geändert hat ...
dann dachte Ich mir Ich schreibe mal ein tutorial wie man alle verfügbaren Download Links aus einem
Video rausfiltert . Im Tutorial wird es erstmal darum gehen wie der Link zusammengesetzt ist und dann
Kommen wir zum Code :
Also Früher war es so dass man die Videos mit diesen Link herunterladen konnte:
Nun aber hat Youtube diesen Link entfernt sodass man den Download Link es aus dem Quelltext rausfiltern muss . Den Download Link den ihr dann rausfiltert könnt dann nur Ihr verwenden und kein Anderer !!!
Der Download Link Jetzt besteht aus genau 3 Abschnitten .
Undzwar :
Nun hat Youtube in Ihrem Quellcode nicht einfach so Den Download Link des Videos eingespeichert sondern nur Teile die man später zusammen setzen muss. Im Quellcode eines Videos gibt es nun ein Abschnitt
der auf den ersten Blick verwirrend aussieht aber eigentlich ganz einfach zu verstehen ist , undzwar den Abschnitt Nach
in diesen Abschnitt befinden sich alle Download Links die wir suchen.
Ich hoffe Ihr konntet nun verstehen wie der Download Link eines Videos von Youtube aufgebaut ist. Und nun kommen wir zum Code :
Also in diesen Beispiel benötigen wir ein Button und eine Textbox.
Fangen wir erstmal an die Funktion zu schreiben mit der wir die Download Links als eine Liste von Strings wiedergeben.
Nun als aller erstes Deklarrieren wir :
Den Webclient benötigen wir für das herunterladen des Quelltextes und die Liste ist unsere return Variable.
Nun deklarrieren wir eine neue Variable in der wir den Quelltext heruntergeladen und den Abschnitt nach "url_encoded_fmt_stream_map" rausfischen
Als nächstes benötigen wir eine "While Schleife" um jeden Download Link rauszufischen
Nun kommen wir zu den 1. teil den wir rausfischen wollen. Undzwar der URL Wichtig im Code kommt 3 mal ein Wort namens Backslash hier im Forum wird dass Backlash als leerer String angezeigt, deshalb ersetzt das Wort durch ein echtes backlash:
Als nächstes brauchen wir den fallback_host :
Und anschließen noch die Signature des Videos :
Nun müssen wir noch unsere Teile zusammensetzen :
Wichtig --> Jetzt müsst ihr noch einen Verweis auf die "System.Web.dll" hinzufügen und dann wird Die zusammengesetzte url noch Decodiert :
Jetzt wird dieser Link zur Return Variable noch hinzugefügt und löschen diesen Link aus der Variable Stream damit While Schleife auch mal Endet, sonst würde sie ewig lang weiter gehen :
Anschließend noch die Return Anweisung und dass Wars mit der Funktion :
So nun Fügen wir im Click Event vom Button noch diesen Code hinzu :
In der Liste t sind nun alle verfügbaren DownloadLinks drin
Hier noch einmal die ganze Funktion :
VB.NET-Quellcode
- Public Function GetAvailableYoutubeDownloadLinks(ByVal _url As String) As List(Of String)
- Dim Downloader As New Net.WebClient
- Dim arrayURL As New List(Of String)
- Dim Stream As String = Downloader.DownloadString(_url)
- Stream = Stream.Substring(Stream.IndexOf("url_encoded_fmt_stream_map"))
- While Stream.Contains("fallback_host=")
- Dim part1 As String = Stream.Substring(Stream.IndexOf("url=") + 4)
- part1 = part1.Remove(part1.IndexOf(Backslash)) '<----- backslash ersetzten durch ein normales backslash
- If part1.Contains(",") Then
- part1 = part1.Remove(part1.IndexOf(","))
- End If
- Dim part2 As String = Stream.Substring(Stream.IndexOf("fallback_host=") + 14)
- part2 = part2.Remove(part2.IndexOf(Backslash)) '<----- backslash ersetzten durch ein normales backslash
- If part2.Contains(",") Then
- part2 = part2.Remove(part2.IndexOf(","))
- End If
- Dim part3 As String = Stream.Substring(Stream.IndexOf("sig=") + 4)
- part3 = part3.Remove(part3.IndexOf(Backslash)) '<----- backslash ersetzten durch ein normales backslash
- If part3.Contains(",") Then
- part3 = part3.Remove(part3.IndexOf(","))
- End If
- Dim PatternURL As String = String.Format("{0}&fallback_host={1}&signature={2}", part1, part2, part3)
- Dim FinalURL As String = Web.HttpUtility.UrlDecode(PatternURL)
- If FinalURL.StartsWith("http://") Then
- arrayURL.Add(FinalURL)
- End If
- Stream = Stream.Replace("url=" & part1, "").Replace("fallback_host=" & part2, "").Replace("sig=" & part3, "")
- End While
- Return arrayURL
- End Function
Ich Hoffe Ihr konntet alles verstehen und falls Es euch geholfen hatt ,
auf den Hilfreich Button Drücken
M.F.G Tibiamicus
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Tibiamicus“ ()