VB.NET YouTube Download Source-Code

  • VB.NET

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    VB.NET YouTube Download Source-Code

    Hallo !

    Da auf mein altes Thema nicht mehr geantwortet wurde, habe ich hier
    ein neues erstellt.
    Gibt es einen aktuellen YT-Downloader-Code? Habe schon alles mögliche
    probiert, was aber entweder veraltet ist oder nicht funktioniert hat.
    Mit get-file-info habe ich es auch versucht, was aber auch nicht funktioniert hat.

    Hätte da jemand einen aktuellen, neuen und v.a. funktionierenden Code?

    Wäre über schnelle Hilfe sehr dankbar! :thumbsup: :thumbsup:

    LG

    Jannis22 schrieb:

    habe ich hier
    ein neues erstellt.

    man hätte das alte auch pushen können, aber okay.

    Jannis22 schrieb:

    alles mögliche
    probiert

    Willst du wetten?

    Jannis22 schrieb:

    Hätte da jemand einen aktuellen, neuen und v.a. funktionierenden Code?

    Das ist so ein Satz, damit provozierst du in diesem Forum einen Aufstand. Bitte so etwas vermeiden, bzw. wie bei @ErfinderDesRades zu sehen, etwas Beispielcode zeigen. Dann ist hier niemand abgeneigt dir zu helfen.

    Jannis22 schrieb:

    schnelle Hilfe

    Möchten Sie noch Zucker zu den Pommes? Die Hilfe kommt so schnell wie Sie kommt.

    Und nein, ich habe keine Lust für dich Google zu betätigen.

    Goldwing Studios schrieb:

    damit provozierst du


    War ja nur eine Frage... Ich habe eben keinen funktionsfähigen Code, sonst hätte ich den ja schon gepostet.

    Goldwing Studios schrieb:

    ich habe keine Lust für dich Google zu betätigen.


    Habe jetzt 4 Tage nach einem funktionsfähigen Code gesucht, aber alle wollen nicht.

    ErfinderDesRades schrieb:

    kein inhaltliches Interesse


    @ErfinderDesRads : Bin sehr interessiert, auch wenn es vielleicht für dich nicht so klingt.

    So,soviel dazu.

    Also hier wäre ein so ein Code (glaube auch von vb paradise)

    VB.NET-Quellcode

    1. Dim WebClient1 As New WebClient
    2. Dim inhalt As String
    3. inhalt = WebClient1.DownloadString(New Uri("http://www.youtube.com/watch?v=y74UPiaK7u0"))
    4. Dim pos As Integer = inhalt.IndexOf("url_encoded_fmt_stream_map=")
    5. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)
    6. Dim Part2 As String = Part1.Substring(0, Part1.IndexOf("&fallback_host"))
    7. Dim end_DL_url As String
    8. end_DL_url = Part2.Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/")
    9. WebClient1.DownloadFileAsync(New Uri(end_DL_url), "D:\Video.flv")

    Fehler : StartIndex darf nicht kleiner als Null sein.

    Get-Video-Info:
    Videolink: youtube.com/watch?v= + VideoID (P0FVmyCrx64)
    Dazugehöriger Downloadlink:
    youtube.com/get_video?fmt=22&video_id=P0FVmyCrx64
    (Wird heruntergeladen) WMP kann Datei nicht wiedergeben.


    Anderer Code: (mit Download-Progressbar)

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. SaveFileDialog1.ShowDialog()
    3. End Sub
    4. Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
    5. Button1.Enabled = False
    6. Button1.Text = "Downloading"
    7. Dim ID As String
    8. ID = TextBox1.Text.Replace("http://www.youtube.com/watch?v=", "")
    9. Dim link1 As String
    10. link1 = "http://www.youtube.com/get_video_info?video_id=" & ID & "&fmt=37"
    11. Dim inhalt As String
    12. inhalt = WebClient1.DownloadString(link1)
    13. Dim pos As Integer = inhalt.IndexOf("url_encoded_fmt_stream_map=")
    14. Dim Part1 As String = inhalt.Substring(pos).Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/").Substring(31)
    15. Dim Part2 As String = Part1.Substring(0, Part1.IndexOf("&fallback_host"))
    16. Dim Downloadlink As String
    17. Downloadlink = Part2.Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/")
    18. WebClient1.DownloadFileAsync(New Uri(Downloadlink), SaveFileDialog1.FileName)
    19. End Sub
    20. Private Sub WebClient1_DownloadFileCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles WebClient1.DownloadFileCompleted
    21. Dim i As Integer = MessageBox.Show("Datei wurde erfolgreich runtergeladen." & vbNewLine & "Wollen sie diese nun öffnen ?", "Finish", MessageBoxButtons.OKCancel)
    22. If i = "1" Then
    23. Process.Start(SaveFileDialog1.FileName)
    24. Else
    25. Application.Exit()
    26. End If
    27. End Sub
    28. Private Sub WebClient1_DownloadProgressChanged(ByVal sender As System.Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WebClient1.DownloadProgressChanged
    29. ProgressBar1.Value = e.ProgressPercentage
    30. Button1.Text = "Downloading " & e.ProgressPercentage & "%"
    31. End Sub

    Fehler: StartIndex darf nicht kleiner als Null sein.

    Und so weiter...

    Hat jemand eine Idee, was an den Codes nicht stimmt?
    oder @ErfinderDesRads vlt mit deinem Code vergleichen und bestimmtes verbessern?

    Wenn ihr noch mehr

    ErfinderDesRades schrieb:

    "Problembeschreibung"
    braucht, dann raus damit.

    Natürlich kann ich auch noch mehr nicht funktionsfähige Codes geben.

    LG
    Der Code hier im Forum (von ErfinderDesRades) funktioniert doch.. ist sogar ein lauffähiges Sample dabei. Was ist also dein Problem? Wenn du Probleme beim übersetzten des Codes hast, sag uns woran es scheitert und dann können wir dir helfen.
    Okay, danke!
    Also mein erstes Problem:
    Als was muss ich HttpUtility deklarieren (habe mit Netzwerkprogrammierung wenig Erfahrung) ?

    Und das zweite:

    VB.NET-Quellcode

    1. For Each entry As var In table
    2. properties(entry(0).ToLower()).SetValue(info, Convert.ChangeType(entry(1), properties(entry(0).ToLower()).PropertyType))
    3. Next

    Ich erhalte den Fehler : Der Typ "var" ist nicht definiert.

    Hoffe, ihr könnt mir helfen!

    Danke im Vorraus ;)
    na, endlich stellst du beantwortbare Fragen!
    1. Ist HttpUtility nicht bekannt, dann musste deim Projekt wohl einen fehlenden Verweis hinzufügen - musste mal gucken, was im c#-Sample drin ist, dir aber fehlt.
    2. Es ist ganz einfach, der CodeConverter macht da wohl einen systematischen Fehler:

      VB.NET-Quellcode

      1. For Each entry In table

    Okay, erstmal danke schonmal.
    Nun aber:
    1. Ich komm nicht drauf, was für ein Verweis das ist (vlt habe ich ja nur Tomaten vor den Augen X/ )
    2. Jetzt erhalte ich die Fehlermeldung

    VB.NET-Quellcode

    1. For Each entry In table
    2. properties(entry(0).ToLower()).SetValue(info, Convert.ChangeType(entry(1), properties(entry(0).ToLower()).PropertyType))
    3. Next

    Fehler bei der Überladungsauflösung, da keine zugreifbare "SetValue" diese Anzahl von Argumenten akzeptiert.

    Vlt kannst du ja weiterhelfen :)
    Dann arbeite am besten eines der empfohlenen Bücher von Entwickler-Ressourcen und Tools, Bücher und WebCasts , also nicht den Theiss.

    Auf die schnelle kannste versuchen, ob Grundlagen: Fachbegriffe dich instandsetzt, dass du die Frage beantworten kannst.
    Aber das ersetzt nicht das Buch-lesen, denn in dort verbrate ich ganz bewusst nur ein ganz oberflächliches Halbwissen.
    Tja, wenn ich frag "Welcher Datentyp?" - dann musste halt in dein Code gucken, da steht er ja, der Datentyp.
    Natürlich spuckt Google nichts aus, denn Google kennt ja nicht dein Code.

    Wenn du allerdings garnet weisst, woran erkennen, welchen Datentyp eine Variable im Code hat, dann musste Grundlagen nachholen - dafür gab ich dir ja 2 Links.
    Auch da hilft Google nicht, denn Google weiß natürlich auch nicht, welche Links ich dir gegeben hab.
    nein, das ist eine Initialisierung, bei der der Datentyp abgeleitet wird.
    Also logisch erhält die Variable den Datentyp, der ihr zugewiesen wird.
    Zugewiesen wird in diesem Fall, was die ToDictionary() - Methode zurückgibt - also ein Dictionary (Nomen est Omen!).

    Aber egal. Was mich nun sehr verwundert ist, dass - im Gegensatz zu deim post#8 - bei mir gar kein Fehler auftritt, mit der .SetValue()-Methode:

    VB.NET-Quellcode

    1. For Each entry In table
    2. properties(entry(0).ToLower()).SetValue(info, Convert.ChangeType(entry(1), properties(entry(0).ToLower()).PropertyType))
    3. Next
    kompiliert bei mir wunderbar 8|

    Edit: Ah, es liegt am Framework: Ich verwende FW4.5

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

    Jannis22 schrieb:

    Habe jetzt 4 Tage nach einem funktionsfähigen Code gesucht, aber alle wollen nicht.

    Du beschwerst dich darüber das der Code den du mit Strg+C und Strg+V bei dir kopierts und einfügst, nicht funktioniert. Du kriegst sogar noch Fehlermeldungen die dir helfen:

    Jannis22 schrieb:

    StartIndex darf nicht kleiner als Null sein.

    Jannis22 schrieb:

    Der Typ "var" ist nicht definiert.

    Jedoch anstatt Google zu fragen, willst du direkt Source haben. Lern doch erstmal die Grundlagen indem du @ErfinderDesRades Links die er angegeben hat, folgst. Hinterher lösen sich die Probleme ganz von alleine, und wenn dann noch immer Fehler auftreten können wir dir helfen. Aber nachdem Motto "Hab das kopiert, funktioniert nicht, gib mal jemand Source" wirst du hier auf viel Gegenwehr stoßen. Ist nicht böse gemeint, aber lern lieber Grundlagen bevor du dich an sowas ransetzt. Versteh erstmal den Code und die Fehler^^
    Software being "Done" is like lawn being "Mowed". (Jim Benson)
    Also bei der FW-Auswahl ist 4.0 das höchste. Habe schon versucht, das 4.5 herunterzuladen, jedoch erhalte ich die Meldung, dass FW 4.5 bereits Teil meines Betriebssystemes sei (Verwende Win8). Kann ich das trotzdem irgendwie installieren oder aus meinem Betriebssystem "Rausholen" :) :) ?
    Bei mir ist das FW4.5 mit dem VisualStudio2013 mitgekommen. VS2013 würd ich empfehlen, das hat doch einige merkliche Vorzüge gegenüber 2010 (und wie man sieht: viele kleine unmerkliche).

    Aber das bedeutet ja, dass du mein c#-Werk niemals hast kompilieren können! Wieso sagst du sowas nicht?
    Das ist die aller-allererste Rückmeldung die ich gebe, wenn ich iein Sample downe, und der Krempel kompiliert nicht mal.