Professioneller Download von YouTube

    • Allgemein

    Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Myrax.

      Professioneller Download von YouTube

      Hi,

      Es gibt zwar schon Tutorials dazu, welche aber das alte YouTube-Design beschreiben und eins, dazu geb ich jetzt kein Kommentar ;)

      Als erstes kommt ein Theorie-Teil dann die Praxis ..

      Theorie

      Für alle die, die es interressiert habe ich hier noch einen kleinen Theorie-Teil geschrieben.
      Auf diese Art von Download bin ich gekommen, als ich eine sauberere Lösung zum Herausfinden des Downloadlinks für meinen Video Capturer (bald VGrabber) gesucht habe.
      Schließlich bin ich zum Cache gelangt und habe eine Datei gefunden :

      http://www.youtube.com/get_video_info?video_id=[ID]&fmt=[Auflösung]

      Info:
      Bei diesem Video handelt es sich um das Kool Savas – Rhythmus meines Lebens.
      Das Video kommt von dem YouTube-Kanal OptikRecordsTV.


      Diese sieht im Aufbau wie folgt aus :

      get_video_info
      fexp=901307,905602&creator=OptikRecordsTV&allow_embed=1&fmt_stream_map=37|http://v14.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass&fexp=901307%2C905602&itag=37&ipbits=8&sver=3&ratebypass=yes&expire=1289419200&key=yt1&signature=649556F936B27F5C7E8A109A8C8028130BFB638A.B82E0455011388ECA66D5FA4DF82A68DDB5351BE&id=9955523a95742e25||tc.v14.cache7.c.youtube.com,22|http://v1.lscache8.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass&fexp=901307%2C905602&itag=22&ipbits=8&sver=3&ratebypass=yes&expire=1289419200&key=yt1&signature=6724E24C597616477EBEB6AB4BB5866FE5A8C30B.2E1BC6F0189FD38DCBF53D4B1E5304F647051ED3&id=9955523a95742e25||tc.v1.cache8.c.youtube.com,35|http://v9.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=35&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=AB3370FB60F5C875E761F9689240B4C15E0F3084.7BB7C6B9870378669970B6C9B1E18601F277773B&factor=1.25&id=9955523a95742e25||tc.v9.cache7.c.youtube.com,34|http://v8.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=34&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=CDC2FAAE7C1ECFDAF4BCBC55B74B8296CE1C7832.9317AD3BCF61C2456F149DD46B4319011E0A3926&factor=1.25&id=9955523a95742e25||tc.v8.cache7.c.youtube.com,18|http://v22.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=18&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=C20F9DBC0AFF0132A3985D2AB2C864EDB781FBF9.81239F4D3F3C2707D1E44CD27FDB557E7CBA6423&factor=1.25&id=9955523a95742e25||tc.v22.cache7.c.youtube.com,5|http://v10.lscache3.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=D47DE47657A7FFC079597ED8A810A359AE2A9663.412704E8723A1FE0E5D4AA5D57F5C8D808456821&factor=1.25&id=9955523a95742e25||tc.v10.cache3.c.youtube.com&fmt_url_map=37|http://v14.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass&fexp=901307%2C905602&itag=37&ipbits=8&sver=3&ratebypass=yes&expire=1289419200&key=yt1&signature=649556F936B27F5C7E8A109A8C8028130BFB638A.B82E0455011388ECA66D5FA4DF82A68DDB5351BE&id=9955523a95742e25,22|http://v1.lscache8.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass&fexp=901307%2C905602&itag=22&ipbits=8&sver=3&ratebypass=yes&expire=1289419200&key=yt1&signature=6724E24C597616477EBEB6AB4BB5866FE5A8C30B.2E1BC6F0189FD38DCBF53D4B1E5304F647051ED3&id=9955523a95742e25,35|http://v9.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=35&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=AB3370FB60F5C875E761F9689240B4C15E0F3084.7BB7C6B9870378669970B6C9B1E18601F277773B&factor=1.25&id=9955523a95742e25,34|http://v8.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=34&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=CDC2FAAE7C1ECFDAF4BCBC55B74B8296CE1C7832.9317AD3BCF61C2456F149DD46B4319011E0A3926&factor=1.25&id=9955523a95742e25,18|http://v22.lscache7.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=18&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=C20F9DBC0AFF0132A3985D2AB2C864EDB781FBF9.81239F4D3F3C2707D1E44CD27FDB557E7CBA6423&factor=1.25&id=9955523a95742e25,5|http://v10.lscache3.c.youtube.com/videoplayback?ip=93.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=901307%2C905602&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1289419200&key=yt1&signature=D47DE47657A7FFC079597ED8A810A359AE2A9663.412704E8723A1FE0E5D4AA5D57F5C8D808456821&factor=1.25&id=9955523a95742e25&iv_enabled_features=S&allow_ratings=1&keywords=OptikRecordsTV,Kool Savas,Rhythmus meines Lebens,Lyrics,Text,Song,Essah Entertainment,John Bello Story 3,Original Video,HD,HQ,Live,Immer wenn ich rhyme,Techno Pilot,Rewind,!Bazz,Melbeatz,Azad,Monstershit,DJ Sir Jai,Moe Mitchell,Olli Banjo,Manny Marc,Tour,Splash! Festival,Hannover Capitol,Nürnberg Hirsch,München Backstage,Neu,New,2010,German Rap,Hip Hop,G-Shock&track_embed=0&iv3_module=http://s.ytimg.com/yt/swf/iv3_module-vflmF5Z7U.swf&fmt_list=37/1920x1080/9/0/115,22/1280x720/9/0/115,35/854x480/9/0/115,34/640x360/9/0/115,18/640x360/9/0/115,5/320x240/7/0/0&plid=AASUszTswk9r1NFM&iv_storage_server=http://www.google.com/reviews/y/&author=OptikRecordsTV&muted=0&length_seconds=209&has_cc=False&iv_module=http://s.ytimg.com/yt/swf/iv_module-vflLv-rG_.swf&ftoken=&status=ok&watermark=http://s.ytimg.com/yt/swf/logo-vfl_bP6ud.swf,http://s.ytimg.com/yt/swf/hdlogo-vfloR6wva.swf&timestamp=1289397314&iv_load_policy=1&fmt_map=37/1920x1080/9/0/115,22/1280x720/9/0/115,35/854x480/9/0/115,34/640x360/9/0/115,18/640x360/9/0/115,5/320x240/7/0/0&leanback_module=http://s.ytimg.com/yt/swf/leanback_module-vflDc64ZL.swf&hl=de_DE&iv_logging_level=3&endscreen_module=http://s.ytimg.com/yt/swf/endscreen-vflsIki_j.swf&vq=auto&avg_rating=4.90269106566&video_id=mVVSOpV0LiU&fslarge=1&token=vjVQa1PpcFPKnJJXLA0r51GC-eAOTbL8_lsDP1CPmB4=&thumbnail_url=http://i2.ytimg.com/vi/mVVSOpV0LiU/default.jpg&title=Kool Savas "Rhythmus meines Lebens" (Official HD Video) 2010


      Auf den ersten Blick erkennt man vielleicht den den Uploader, ab dann kann man die Dinge nur erkennen wen man sich bei dem alten YouTube ein bisschen gekümmert hat (kein C&P !).

      Danach habe ich die Datei 'sauber' auseinander genommen :

      Direkt in der ersten Zeile findet man den Uploader:

      Quellcode

      1. &creator=OptikRecordsTV


      Das ist wohl (hoffentlich) klar, dass der Uploader OptikRecordsTV ist.

      Der nächste wichtige Abschnitt ist die fmt_stream_map :

      Quellcode

      1. &fmt_url_map =


      Dort können wir die Downloadurls zu den Formaten auslesen.
      Die URLs sind durch ein Komma getrennt, deshalb kann man sie einfach splitten. Dann hat man aber noch nicht den fertigen Download-link, denn man muss die Zahl am Anfang wegmachen. Dies sollte aber kein Problem darstellen ;).

      Es gibt folgende Formate : en.wikipedia.org/wiki/YouTube#Quality_and_codecs

      Gefunden habe ich diese :
      37, 22, 35, 34, 18, 5

      Danach folgen die Keywords:

      Quellcode

      1. &keywords=

      Diese sind durch Kommas getrennt.

      Nach drei Übersprungenen URL-Parametern kommt der Parameter fmt_list :

      Quellcode

      1. &fmt_list=


      Durch diesen blicke ich nicht ganz durch, weil ich glaube, dass manche Werte sich je nach Bildschirmgröße sich ändern.
      Jedenfalls sieht man, welche Video-Qualität man zur Verfügung hat.

      Danach kommen glaub ich die URLs für die Auswahl nach dem Video (Video wiederholen, …)

      Als letztes kommen noch zwei mehr oder weniger wichtige Dinge, der Thumbnail-URL und der Titel:

      Ich denke es ist klar,

      dass das die thumbnail-url ist :D

      Quellcode

      1. thumbnail_url=


      und das der Titel :

      Quellcode

      1. &title=



      Nun ja das ist auch schon das Ende von der Theorie, für jeden der sich das durchgelesen hat und ein bisschen Visual Basic kann wird das kein Problem sein.

      Praxis

      Die Praxis ist in VB und vergleichsweise kurz gehalten, da ich nur den Download beschreiben werde.

      Nicht getestet !

      VB.NET-Quellcode

      1. Private WithEvents wc As WebClient
      2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      3. wc = New WebClient
      4. End Sub
      5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      6. Dim url As String = TextBox1.Text
      7. Dim id As String = url.Substring(url.IndexOf("v=") + 2) 'Id herausfiltern
      8. Dim downloadurl as String = http://www.youtube.com/get_video_info?video_id= & id & "&fmt=18"
      9. Dim content as string = ""
      10. Dim Request As HttpWebRequest = HttpWebRequest.Create(downloadurl)
      11. Dim Response As HttpWebResponse = Request.GetResponse()
      12. Dim reader As StreamReader = New StreamReader(Response.GetResponseStream)
      13. content = reader.ReadToEnd
      14. Dim content_splitted() as String = content.Split(“fmt_url_map”) 'Das geht auch sauberer mit RegEx
      15. Dim DownloadUrlRegEx as New Regex(“,18|(?<url>(.*)),”)
      16. Dim DownloadUrl = DownloadUrlRegEx.Match(content_splitted(1)).Groups("url").ToString
      17. '---Hier können alle anderen Infos auslesen werden.---
      18. '---Achtung : dann die Variable 'content' benutzen, nicht 'content_splitted'---
      19. wc.DownloadFileAsync(DownloadUrl, "vid.flv")
      20. End Sub


      Fragen bitte posten !

      gruß, Trudi

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trudi“ ()

      Hallo habe code getestet wenn ich einfüge usw dann kommen 3 fehler 2 hab ich gelöst siht dann so aus :

      VB.NET-Quellcode

      1. Imports System.Net
      2. Imports System.IO
      3. Imports System.Text.RegularExpressions
      4. Public Class Form1
      5. Private WithEvents wc As WebClient
      6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      7. Dim wc = New WebClient
      8. End Sub
      9. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      10. Dim url As String = TextBox1.Text
      11. Dim id As String = url.Substring(url.IndexOf("v=") + 2) 'Id herausfiltern
      12. Dim downloadurl As String = "http://www.youtube.com/get_video_info?video_id=" & id & "&fmt=18"
      13. Dim content As String = ""
      14. Dim Request As HttpWebRequest = HttpWebRequest.Create(downloadurl)
      15. Dim Response As HttpWebResponse = Request.GetResponse()
      16. Dim reader As StreamReader = New StreamReader(Response.GetResponseStream)
      17. content = reader.ReadToEnd
      18. Dim content_splitted() As String = content.Split("fmt_url_map") 'Das geht auch sauberer mit RegEx
      19. Dim DownloadUrlRegEx As New Regex(",18|(?<url>(.*)),")
      20. Dim DownloadUrl = DownloadUrlRegEx.Match(content_splitted(1)).Groups("url").ToString
      21. '---Hier können alle anderen Infos auslesen werden.---
      22. '---Achtung : dann die Variable 'content' benutzen, nicht 'content_splitted'---
      23. wc.DownloadFileAsync(downloadurl, "vid.flv")
      24. End Sub
      25. End Class


      aber dann bleibt noch bei Dim DownloadUrl ( Fehler 1 Die lokale Variable "DownloadUrl" ist bereits im aktuellen Block deklariert. )

      naja ka was ich machn soll help me :3

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

      Hi, benenne 'DownloadUrl' einfach um, z.B. in DownloadUrl2 ..
      du hast weiter oben schon die Variable downloadurl definiert, welche sich mit DownloadUrl nur in der Groß und Kleinschreibung unterscheidet..

      Gruß, Trudi