Youtube Video Download URL Problem

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von OneWorld.

    Youtube Video Download URL Problem

    Hey Leute,

    Ich arbeite gerade an einem Youtube-Downloader :D
    Und ich habe die Download-URL aus der Video-URL erstellt, jedoch sagt der WebClient zum Download, dass die Webseite bzw. die URL ungültig sei :/

    Quellcode

    1. Original-URL: "https://www.youtube.com/watch?v=xHRkHFxD-xY"
    2. Video-URL: "http://www.youtube.com/v/xHRkHFxD-xY"
    3. Download-URL: "http://www.youtube.com/get_video?fmt=22&video_id=xHRkHFxD-xY"
    Habe ich vlt. die ganzen tutorials falsch verstanden oder hat Youtube das Prinzip vom Video-Download geändert?
    Vielen Dank für eure Hilfe,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Es scheint, eine neue Seite zu laden,

    Quellcode

    1. https://youtube.googleapis.com/v/xHRkHFxD-xY?ytsession=77nl9w0XEPMVMCfd_7SFjI1g_YVlumOpSLnPXppbJ7KOeWYvET2klvESxDzR5clMZABmHWbka7zTitHs1mVdgaSJJwd6ZvLAADuV6hk4JVh0lRA9c42uEHPy-1XgwMpdq1oneGkOsrgVNKQ0dNJZww


    Versuchs mal mit der ...

    Mfg.eniking1998
    Aber wie genau kommst du auf die neue Adresse?
    bzw. wie soll mein Programm auf die neue Adresse kommen?

    Vielen Dank,
    wincrash

    Edit: WMP meint es seien probleme mit dem codec vorhanden :(
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Der WebClient konnte die URL erfolgreich herunterladen - nur weiß ich nicht in welchem Dateiformat ich es speichern soll
    Ich habe es jetzt mit *.3gp, *.mp4, *.flv versucht - jeweils heißt es, dass der Codec nicht unterstützt sei....

    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Versuchs mal damit:

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient
    2. Dim t As String = wc .DownloadString("Der Youtube Link")
    3. Dim Link As String = t.Substring(t.IndexOf("26url=") + 6)
    4. Link = Link.Remove(Link.IndexOf("\")) 'Erstmal den Link rausuchen
    5. Dim Sig As String = t.Substring(t.IndexOf("sig=") + 4)
    6. Sig = Sig.Remove(Sig.IndexOf("\")) 'Und nun bracht man noch die Signature des Videos
    7. Dim Finalt As String = Web.HttpUtility.UrlDecode(Link) & "&signature=" & Sig 'Finalt ist deine fertige URL
    8. MsgBox(Finalt)


    Dank an Tibiamicus ;)
    [EDIT]: Da wird dann immer die Beste Qualität runtergeladen. Convertieren musst du es aber selber machen ;) . Das geht mit FFMPEG
    Youtube Info Library 2013 jetzt im Showroom.

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

    Sorry, dass ich erst so spät antworte :)

    Ich wollte gerade den Codeabschnitt von OneWorld testen;
    jedoch heißt es, dass "HttpUtility" kein Member von "web" sei...
    Habe ich da irgendwas falsch verstanden?

    Grüße,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Ok - jetzt kommt der fehler hier:
    Spoiler anzeigen

    Quellcode

    1. System.Net.WebException wurde nicht behandelt.
    2. Message=Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig.
    3. Source=System
    4. StackTrace:
    5. bei System.Net.WebClient.DownloadFile(Uri address, String fileName)
    6. bei System.Net.WebClient.DownloadFile(String address, String fileName)
    7. bei Youtube_Downloader.Form1.no2() in I:\Projects\Youtube Downloader\New Youtube Downloader\New Youtube Downloader\Form1.vb:Zeile 215.
    8. bei Youtube_Downloader.Form1._Lambda$__1(Object a0, EventArgs a1) in I:\Projects\Youtube Downloader\New Youtube Downloader\New Youtube Downloader\Form1.Designer.vb:Zeile 0.
    9. bei System.Windows.Forms.Control.OnClick(EventArgs e)
    10. bei System.Windows.Forms.Button.OnClick(EventArgs e)
    11. bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    12. bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    13. bei System.Windows.Forms.Control.WndProc(Message& m)
    14. bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    15. bei System.Windows.Forms.Button.WndProc(Message& m)
    16. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    17. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    18. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    19. bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    20. bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    21. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    22. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    23. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    24. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    25. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    26. bei Youtube_Downloader.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    27. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    28. bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    29. bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    30. bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    31. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    32. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    33. bei System.Threading.ThreadHelper.ThreadStart()
    34. InnerException:
    Die besagte Zeile No. 215 ist folgende:

    VB.NET-Quellcode

    1. web.DownloadFile(Finalt, TextBox2.Text)
    wobei TextBox2.Text der Speicherort auf der lokalenFestplatte ist....

    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Füg diese Function hinzu :

    VB.NET-Quellcode

    1. Function UrlIsValid(ByVal Url As String) As Boolean
    2. Try
    3. Dim Request = Net.HttpWebRequest.Create(Url)
    4. Dim Response = Request.GetResponse
    5. Return True
    6. Catch ex As Exception
    7. End Try
    8. Return False
    9. End Function


    Dann der neue Code ist :

    VB.NET-Quellcode

    1. Dim Downloader As New Net.WebClient
    2. 1: Dim t = Downloader.DownloadString("Deine URL")
    3. If t.Contains("26url=") AndAlso t.Contains("sig=") Then
    4. Dim Link = t.Substring(t.IndexOf("26url=") + 6)
    5. Link = Link.Remove(Link.IndexOf("\")) 'Erstmal den Link rausuchen
    6. Dim Sig = t.Substring(t.IndexOf("sig=") + 4)
    7. Sig = Sig.Remove(Sig.IndexOf("\")) 'Und nun bracht man noch die Signature des Videos
    8. If Link.StartsWith("http%3A") Then
    9. Dim Finalt = Web.HttpUtility.UrlDecode(Link) & "&signature=" & Sig 'Finalt ist deine fertige URL
    10. If UrlIsValid(Finalt) Then
    11. MsgBox(Finalt)
    12. Else
    13. GoTo 1
    14. End If
    15. Else
    16. GoTo 1
    17. End If
    18. Else
    19. GoTo 1
    20. End If


    MFG Tibiamicus :)
    Irgendwas muss an deinem Code nicht stimmen (glaube ich),
    weil wenn die Funktion "IsUrlValid" ein False zurückgibt, dann ist das programm in einer Endlosschleife, da sich ja t nicht verändert ....
    Oder sehe ich das falsch? :D

    Edit: Ja, ich sehe das Falsch, jedoch macht (in meinen Augen) der Sprung zur Sprungmarke "1" keinen sinn :D

    Viele Grüße,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.

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

    Doch der Sprung macht Sinnn,
    schau dir mal den Quelltext von einen Youtube-Video an ,
    du wirst sehen dass im Quelltext mehrer "26url" vorhanden sind,
    dass Problem ist nur , dass manche von ihnen nicht gehen deshalb muss man es oft Wiederhoöen bis es den richtigen Link findet :)
    @ enIking1998 jain es stehen halt immer nur Teile im Quelltext, du musst ihn halt nur zusammensetzten ;)

    [EDIT]: Bitte lasst das mit dem GoTo weg... das ist böse ;)
    Youtube Info Library 2013 jetzt im Showroom.

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

    Hm... ich hab's mit vielen verschiedenen Youtue-Links versucht - jeweils erfolglos. :/
    Ich weiss nicht, woran es liegt, aber VS spuckt immer den Error "403" aus...

    Danach habe ich es mit Thread [VB 2012] YouTube Download link - Aus url erstellen ? versucht,
    der hat mir aber leider nicht weitergeholfen - Ich kann zwar die Datei herunterladen, der VLC-Player meldet aber immer einen Codec-Fehler :(

    Viele Grüße,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.