written by kwoxer
Hier erfährst du wie du ganz einfach deinen eigenen YouTube Downloader programmieren kannst.
Danke an Bady an dieser Stelle, da er mir wirklich sehr bei diesem Projekt geholfen hat.
Großes Dankeschön :)
Mit Fragen wendet ihr euch bitte an das SemperVideo-Forum!
Zur Information!
Support gibt es ab sofort nur noch auf die im Video gezeigten Features. Features an dem Video Downloader Professional (R) Paket gibt es nun nicht mehr.
Viele Dank für euer Verständnis.
Falls ihr Fehler wie...:
"Das Argument Length muss größer als oder gleich 0 (null) sein."
...nutzt bitte den unten stehenden neuen Code.
ALTER CODE! (aus der eigentliche Form)
'#######################################
Dim anfang_stelle_des_video_downloads_1 As Integer
anfang_stelle_des_video_downloads_1 = InStr(start_DL_url, "var embedUrl = 'http://www.youtube.com/v/") + 41
Dim ende_stelle_des_video_downloads_1 As Integer
ende_stelle_des_video_downloads_1 = InStr(anfang_stelle_des_video_downloads_1, start_DL_url, "&hl=de&fs=1';")
Dim Laenge_des_downloads_1 As Integer
Laenge_des_downloads_1 = ende_stelle_des_video_downloads_1 - anfang_stelle_des_video_downloads_1
Name_des_downloads_1 = Mid(start_DL_url, anfang_stelle_des_video_downloads_1, Laenge_des_downloads_1)
'#######################################
Dim anfang_stelle_des_video_downloads_2 As Integer
anfang_stelle_des_video_downloads_2 = InStr(ende_stelle_des_video_downloads_1, start_DL_url, "t=") + 2
Dim ende_stelle_des_video_downloads_2 As Integer
ende_stelle_des_video_downloads_2 = InStr(anfang_stelle_des_video_downloads_2, start_DL_url, "%3D")
Dim Laenge_des_downloads_2 As Integer
Laenge_des_downloads_2 = ende_stelle_des_video_downloads_2 - anfang_stelle_des_video_downloads_2
Name_des_downloads_2 = Mid(start_DL_url, anfang_stelle_des_video_downloads_2, Laenge_des_downloads_2)
end_DL_url = "http://www.youtube.com/get_video?video_id=" & Name_des_downloads_1 & Chr(38) & "t=" & Name_des_downloads_2 & qualy
NEUER CODE (in die eigentliche Form)
Dieser Code ist die neuste Erkennung für YouTube Videos. Ändert diesen also bitte selbstständig im Code. Der Alte Code muss einfach nur durch den neuen ersetzt werden, einfacher gehts nicht.
Dim anfang_stelle_des_video_downloads_1_1 As Integer
anfang_stelle_des_video_downloads_1_1 = InStr(start_DL_url, "fmt_url_map"":") + 14
Dim anfang_stelle_des_video_downloads_1_2 As Integer
anfang_stelle_des_video_downloads_1_2 = InStr(anfang_stelle_des_video_downloads_1_1, start_DL_url, "http")
Dim ende_stelle_des_video_downloads_1 As Integer
ende_stelle_des_video_downloads_1 = InStr(anfang_stelle_des_video_downloads_1_2 + 5, start_DL_url, "http")
Dim Laenge_des_downloads_1 As Integer
Laenge_des_downloads_1 = ende_stelle_des_video_downloads_1 - anfang_stelle_des_video_downloads_1_2
Dim Name_des_downloads_1 As String
Name_des_downloads_1 = Mid(start_DL_url, anfang_stelle_des_video_downloads_1_2, Laenge_des_downloads_1)
end_DL_url = Name_des_downloads_1.Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25",
"%").Replace("%2C", ",").Replace("%25", "%").Replace("%3A", ":").Replace("%2F", "/")
end_DL_url = Mid(end_DL_url, 1, end_DL_url.LastIndexOf(","))
Schreibt mir was ihr von diesem Tutorial haltet.
Tolles Tutorial! Echt super. Nur leider kapier ich es nicht ganz wenn ich NUR die FLV Datei herrausfinden möchte.. Kannst du mir vllt. helfen? Ich hab den Code schon ausgeschlachtet aber leider zeigt
er mir sowas an:
http://www.youtube.com/get_video?video_id=S14ggM0Ihfw&t=\"return false;\" method=\"post\" action=\"/comment_servlet?add_comment=1&comment_type=V\"><input type=\"hidden\"
name=\"video_id\" value=\"S14ggM0Ihfw\"><input type=\"hidden\" name=\"form_id\" value=\"comment_form${form_id}\"><input type=\"hidden\" name=\"reply_parent_id\"
value=\"${reply_parent_id}\"><textarea name=\"comment\" class=\"comments-textarea\" cols=\"46\" rows=\"5\" maxchars=\"500\" onkeyup=\"updateCharCount(\'charCount${form_id}\',
\'maxCharLabel${form_id}\', this); top.goog.i18n.bidi.setDirAttribute(event,this)\" onpaste=\"updateCharCount(\'charCount${form_id}\', \'maxCharLabel${form_id}\', this);\"
oninput=\"updateCharCount(\'charCount${form_id}\', \'maxCharLabel${form_id}\', this);\"></textarea><br><div class=\"watch-comment-reply-form-actions\"><input type=\"button\"
name=\"add_comment_button\" value=\"Kommentar posten\" onclick=\"postThreadedComment(\'comment_form${form_id}\');\"><input type=\"button\" name=\"discard_comment_button\" value=\"Löschen\"
${discard_visible} onclick=\"hideCommentReplyForm(\'${form_id}\', false);\"><span id=\"maxCharLabel${form_id}\">Verbleibende Zeichen:</span><input readonly=\"true\"
class=\"watch-comment-char-count inner-box-colors\" type=\"text\" id=\"charCount${form_id}\" value=\"500\"></div></form><br class=\"clear\">');
function watchToggleCommentPanel(expander) {
if (hasClass(expander, 'yt-uix-expander-collapsed')) {
watchCommentsPanelStateChange();
} else {
watchExpandComments('recent_comments', '/watch_ajax?v=S14ggM0Ihfw&action_get_comments=1&p=1&commentthreshold=-5&commentfilter=0&page_size=10&last_comment_id=', 0);
}
};
onLoadFunctionList.push(function() { if (_gel('watch-customize-embed-div')) { generateEmbed(); } });
onLoadFunctionList.push(function() { enableVideoQualityDisplay() });
onLoadFunctionList.push(handleHashArgumentsOnWatchLoad);
var shouldShowAutosharePromo = false;
function triggerAutosharePromo(feature) {
if (shouldShowAutosharePromo) {
showDiv('autoshare-promo-' + feature);
shouldShowAutosharePromo = false;
}
}
function dismissAutosharePromo(feature) {
yt.UserPrefs.setFlag(yt.UserPrefs.Flags.FLAG_HIDE_WATCH_AUTOSHARE_PROMOTION, true);
yt.UserPrefs.save();
shouldShowAutosharePromo = false;
hideDiv('autoshare-promo-' + feature);
}
</script>
<style type="text/css">
#flash10-promo-div {
display: none;
background-color: #ffffcc;
font-size: 12px;
padding: 5px;
text-align: left;
border:1px solid #FFCC33;
border-top: 0px;
}
</style>
<link rel="alternate" type="application/json+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D&fmt=35
Hallo Jay
wäre vllt eine bessere Frage für das SemperVideo Forum.
Hey kwoxer,
kann es sein, dass dein downloader nicht mit VB 2008 Express geht?
Ich bin mit der Programmierung am Ende des 2. Viedeos und wenn ich versuche den ">" Button zu testen kommen die Fehler:" Der Name "TextBox_pfad" ist nicht deklariet" und ""Pfad" ist kein Member
von "Windows.Forms.TextBox"."
Liegts an mir oder daran, dass es die Express-Version von VB ist???
Hallo.
Nein ich selber arbeite nur mit der Express Edition. Daher muss der Fehler bei dir liegen.
Nutze bitte den Open Source Quellcode.
In Kürze werde ich auch den Source vom Video Downloader Professional veröffentlichen, vllt einfach so lange warten oder ein wenig rumtesten.
Liebe Grüße
Es sind bei mir Fehler beim code aufgetreten
If Download_einzeln.download_1_fertig = True Then
aktuelle_dl_nummer_einzeln = ListView.CheckedIndices.Item(i)
Download_einzeln.download_berechnen()
ElseIf Download_einzeln.download_2_fertig = True Then
aktuelle_dl_nummer_einzeln = ListView.CheckedIndices.Item(i)
Download_einzeln.download_berechnen()
ElseIf Download_einzeln.download_3_fertig = True Then
aktuelle_dl_nummer_einzeln = ListView.CheckedIndices.Item(i)
Download_einzeln.download_berechnen()
Else
Bin in Wer-kennt-wen als Marcel Klee drin.
hello great tutorial
i need a little help
can you tell me the name of the battons in english please ?
thanks
www.dict-leo.org
use this to translate into English
Greetz
vielen dank für dieses tut es hat mir einige neue sachen gezeigt und es ist gut und leicht verständlich gemacht
greez hescher
klasse erklärt aber ich kann die links nicht adden
habs auch mit dem quelltext probiert klappt aber immer noch nich (sind auch nur youtube videos)
kann es sein das ich den falschen link nehme?
wenn ja welchen muss ich nehmen?
danke schonmal...
Mhh, hallo erstmal.
Vllt erst einmal den Source Code vom Video Downloader Professional anschauen, weil mit dem klappts zum 100%. Der wird nämlich im Gegensatz zum Youtube Downloader aktualisiert.
Grüße
hi, hab da ein problem wenn ich eine video mit "add" hinzufügen will, zeigt er mir das hier als fehler an :
Name_des_downloads_1 = Mid(start_DL_url, anfang_stelle_des_video_downloads_1, Laenge_des_downloads_1)
der kommentar dazu ist : Das Argument Length muss größer als oder gleich (null) sein
was mache ich falsch?
mfg chrissi
ps: bis auf diesen fehler komme ich gut zurecht und das tutorial ist echt gut! weiter so :)
Problem ist bekantt.
Bitte im Youtube kanal den neuen Code herauslesen.
http://www.youtube.com/user/kwoxer1
Grüße
huhu kann es sein das sich die links Geändert haben ich bekommt immer nur ne Meldung das das keine Gültige Youtube url wär
Muss ehrlich sagen dsa Tutori ist spitze!
Nur hab ich mir das mal angeschaut und jedesmal wen ich youtube link adden will kommt Dies ist kein richtiger Youtube link oder so.
Hab zwar versucht den Quelltext zu suchen und dan die einträge zu ändern - fail.
Quelltext steht hier ganz oben.
Und bei mir klappen die Videos wie immer.
Liebe Grüße
Hey
Das is echt ein tolles tutorial.
Aber ich habe ein kleines problem:
Wenn ich den playlist button benutze, dann sagt er mir, er habe keine playlist gefunden.
Code:
Private Sub Button_playlist_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_playlist.Click
If RadioButton_Low.Checked = True Then
qualy = ""
ElseIf RadioButton_Middle.Checked = True Then
qualy = "%3D&fmt=18"
ElseIf RadioButton_High.Checked = True Then
qualy = "%3D&fmt=22"
ElseIf RadioButton_Highest.Checked = True Then
qualy = "%3D&fmt=35"
End If
On Error GoTo err
If TextBox_pfad.Text <> "" Then
Dim httpURL As New System.Uri(ComboBox_link.Text)
Dim request As HttpWebRequest = HttpWebRequest.Create(httpURL)
request.Method = WebRequestMethods.Http.Get
Dim response As HttpWebResponse = request.GetResponse
Dim reader As New StreamReader(response.GetResponseStream)
start_dl_url_playlist = reader.ReadToEnd
response.Close()
Dim anfang_playlist_count As Integer
anfang_playlist_count = InStr(start_dl_url_playlist, "<span>Videos: ") + 14
Dim ende_playlist_count As Integer
ende_playlist_count = InStr(anfang_playlist_count, start_dl_url_playlist, "</span>")
Dim laenge_playlist_count1 As Integer
laenge_playlist_count1 = ende_playlist_count - anfang_playlist_count
Dim laenge_playlist_count2 As Integer
laenge_playlist_count2 = Mid(start_dl_url_playlist, anfang_playlist_count, laenge_playlist_count1)
Dim i As Integer
Dim playlist_ohne_youtube As String
Dim playlist_mit_youtube As String
Dim anfang_stelle_der_playlist_videos As Integer
Dim anfang_stelle_der_playlist_video As Integer
Dim ende_stelle_der_playlist_video As Integer
Dim laenge_der_playlist_video As Integer
anfang_stelle_der_playlist_videos = InStr(anfang_playlist_count, start_dl_url_playlist, "<div class=""video-short-title"">") + 31
anfang_stelle_der_playlist_video = InStr(anfang_stelle_der_playlist_videos, start_dl_url_playlist, "href=""") + 6
ende_stelle_der_playlist_video = InStr(anfang_stelle_der_playlist_videos, start_dl_url_playlist, """ title=")
laenge_der_playlist_video = ende_stelle_der_playlist_video - anfang_stelle_der_playlist_video
playlist_ohne_youtube = Mid(start_dl_url_playlist, anfang_stelle_der_playlist_video, laenge_der_playlist_video)
playlist_mit_youtube = "http://www.youtube.com" & playlist_ohne_youtube
For i = 0 To laenge_playlist_count2 - 1
httpURL = New System.Uri(playlist_mit_youtube)
request = HttpWebRequest.Create(httpURL)
request.Method = WebRequestMethods.Http.Get
response = request.GetResponse
reader = New StreamReader(response.GetResponseStream)
start_dl_url_playlist = reader.ReadToEnd
response.Close()
ERMITTELN_ROUTINE_PLAYLIST()
item = ListView.Items.Add(name_des_videos)
Dim items_number As Integer = ListView.Items.Count
item.SubItems.Add(items_number)
item.SubItems.Add(name_des_herstellers)
item.SubItems.Add("Bereit")
item.SubItems.Add(sizes & " MB")
item.SubItems.Add(end_dl_Url)
anfang_playlist_count = ende_stelle_der_playlist_video
Refresh()
Next
Else
MsgBox(""" ist kein gültiger Speicherort. Bitte wählen Sie einen anderen Speicherort aus.")
End If
Exit Sub
err:
MsgBox("Kein gültiges Video gefunden. Bitte wählen Sie nur Youtube Videos aus.")
End Sub
****************************************
Wär nett,wenn du mir helfen könntest.
Danke!
Cooles tut musste aber einiges am Text endern, damit der Downloader funktioniert sonst alles super
Weiter so !
Ich könnte heulen, genau dieses Problem ist bei mir aufgetreten, "Das Argument Length muss größer als oder gleich 0 (null) sein."
Ich werde verrückt, ich weiß nicht wo ich den neuen Code einfügen muss bzw. bearbeiten. Könntest Du villt. nicht noch ein Quelltext erstellen mit dem neuen Code, aber den man auch natürlich direkt
herunterladen kann.
Wäre wirklich Dankbar!!!
MfG,
Gianluck
Aus Insiderkreiser heißt es, dass Youtube wieder die Downloader Routine in den Feiertagen ändert wird. Warten wir lieber so lange ich schieb dann das Update dann nach und update den Quelltext, falls
das Problem dann immer noch besteht.
Ansonsten ienfach in der Downlaod Routine den alten Code ersetzen. Sollte eig. net so schwer sein.
Also habe diesen Code eingefügt:
Dim anfang_stelle_des_video_downloads_1_1 As Integer
anfang_stelle_des_video_downloads_1_1 = InStr(start_DL_url, "fmt_url_map"":") + 14
Dim anfang_stelle_des_video_downloads_1_2 As Integer
anfang_stelle_des_video_downloads_1_2 = InStr(anfang_stelle_des_video_downloads_1_1, start_DL_url, "http")
Dim ende_stelle_des_video_downloads_1 As Integer
ende_stelle_des_video_downloads_1 = InStr(anfang_stelle_des_video_downloads_1_2 + 5, start_DL_url, "http")
Dim Laenge_des_downloads_1 As Integer
Laenge_des_downloads_1 = ende_stelle_des_video_downloads_1 - anfang_stelle_des_video_downloads_1_2
Dim Name_des_downloads_1 As String
Name_des_downloads_1 = Mid(start_DL_url, anfang_stelle_des_video_downloads_1_2, Laenge_des_downloads_1)
Bis dahin hat eitgl. fast alles geklappt nur es gibt ein Problem, unzwar ich möchte ein bestimmtes Video herunterladen, er lädt es, aber dieses Video kann man nicht abspielen .. die Datei hat den
Namen des Videos, aber die Datei hat immer 0 MB. Habe andere Videos versucht herunterzuladen, aber genau das gleiche Problem erscheint wieder und wieder
hi,
muss ich das code update auch für den namen des video downloads 2 einsetzen?
Nein dieser ist damit überflüssig. Die Bezeichnung 1_1 und 1_2 habe ich lediglich so gelassen um die Zuschauer nicht zu verwirren, die gerne das Code Update durchführen möchten.
Grüße
Hallo kwoxer,
Wenn ich einen link in meine combobox einfüge,
und auf 'Add' klicke, dann wird der link
zwar übernommen, jedoch steht bei 'Größe' 0 MB da.
Wenn ich trotzdem versuche,
das Video herunterzuladen, erstellt es eine 0 MB
große Datei in meinem Speicherort.
Hast du eine Idee, wo der Fehler liegen könnte?
Das Problem wurde hier schon einige Mal behandelt.
Siehe oben.
Grüße
Wo füge ich das denn alles ein?
Bin fast fertig, fehlt nur noch das
Dim anfang_stelle_des_video_downloads_1_1 As Integer anfang_stelle_des_video_downloads_1_1 = InStr(start_DL_url, "fmt_url_map"":") + 14
Dim anfang_stelle_des_video_downloads_1_2 As Integer anfang_stelle_des_video_downloads_1_2 = InStr(anfang_stelle_des_video_downloads_1_1, start_DL_url, "http")
Dim ende_stelle_des_video_downloads_1 As Integer ende_stelle_des_video_downloads_1 = InStr(anfang_stelle_des_video_downloads_1_2 + 5, start_DL_url, "http")
Dim Laenge_des_downloads_1 As Integer Laenge_des_downloads_1 = ende_stelle_des_video_downloads_1 - anfang_stelle_des_video_downloads_1_2
Dim Name_des_downloads_1 As String Name_des_downloads_1 = Mid(start_DL_url, anfang_stelle_des_video_downlo
ads_1_2, Laenge_des_downloads_1) end_DL_url = Name_des_downloads_1.Replace("%3F", "?").Replace("%3D", "=").Replace("%26", "&").Replace("%25", "%").Replace("%2C", ",").Replace("%25",
"%").Replace("%3A", ":").Replace("%2F", "/") end_DL_url = Mid(end_DL_url, 1, end_DL_url.LastIndexOf(","))
Na dort wo der Code auch schon stand.
Praktisch einfach ersetzen..
egal welche code's ich nehme der error:Das Argument Length muss größer als oder gleich 0 (null) sein.
kannst du mir helfen?
du hilfst mir in dem du den code(von name_des_downloads_1 bis name_des_downloads_2)schreibst(hier auf deiner homepage)
Steht alles oben beschrieben.
hey kwoxer deine Turorials sind echt super leider habe ich ein Problem in dem 6 Tutorial Part 2 von 2. Wen ich bei der Playlist debuggen will wie du es in Minute 6:19 machst kommt bei mir ein ein
error nachdem ich auf Playlist bin und es wird mir die Zeile
Dim Laenge_playlist_count2 As Integer
Laenge_playlist_count2 = Mid(start_DL_url_playlist, anfang_playlist_count, Laenge_playlist_count1)
Als falsch angezeigft was soll ich da machen?
cool
Die Playlist wird nicht weiter supportet, da diese eine andere Logik verfolgt nach dem Youtube Update.
Daher bitte Playlist außen vor lassen.
ok naja en bissi schade das das jetzt net funzt wo ich die doch schon fast fertig hatte aba naja kann man nix macheen danke für die schnelle hilfe
Doch doch es geht schon. Bloß nach einem anderen System. Hab jetzt aber nicht die Zeit das näher zu ergründen, da eh kaum einer die Playlit nutzt.
Außerdem vllt als Info ist die Playlist neuerdings im Kanal eingebettet. Daher sehr schwer auszulesen.
Grüße
Also ich sage einfach mal DANKE für diese SUPERGEILE ERklärung und Schritt für Schritt incl der Daten als TXT Datei !! Ich finde das super ! ich schreibe das Ding gerade nach ^^ ich weiss zwar nich,
ob es funzt, aber allein um wieder was zu lernen ist das schon geil !
*DANKE*
Hallo Kwoxer,
funzt super, nur einige videos werden nicht runtergeladen, dann ist der DL immer direkt fertig mit 0 kb, die Anzeige der autors und DL Link funktionieren auch nicht. aber die "gängigen" Videos lassen
sich runterladen.. mal sehen, wo alles fertig ist, aknn man ja etwas experimentieren ^^
Könnte ich deine Programm im VB downloaden?
Super tut!
Allerdings treten bei mir noch 8 Fehler auf die auch mit einem Besuch in deinem Forum nicht gelöst werden konnten...
6x Fehler: Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis.
2x Fehler: Fehler Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird.
Ich werde darauß nicht schlau, ich weiß das dein Code richtig ist und hoffe auf eine schnelle Antwort...
Hallo,
zu euren Anfragen:
Programm im VB downloaden? Wenn du meinst, meine Programme als Source-Code downzuloaden.
Der YouTube Downloader wird demnächst als Source Code hochgeladen. Ich weiß aber nicht in welchem Umfang und wie, da einfach mal abwarten.
Zu deinen Fehlern kann ich ohne deine Quellcode nicht viel sagen.
Objektverweise und deren Fehler wirst du aber im Zusammenhang mit dem Backgroudnworker gemacht haben.
Ansonsten steht dir das SemperVideo Forum für Fragen auch zur Verfügung.
Grüße
