YouTube video Download

    • Offizieller Beitrag

    Hallo!

    Vorab: die Idee ist nicht von mir sondern von Eusebio! Ich habe es in eine GUI geschrieben, und ein bisschen praktischer gemacht!

    Den beitrag im englischen forum findet ihr hier
    Und hier nun das skript:

    Spoiler anzeigen
    [autoit]

    ;######################
    ;By GtaSpider & Eusebio
    ;######################

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <inet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    GUICreate("You Tube", 223, 114, 193, 121, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $DwnInput = GUICtrlCreateInput("http://www.youtube.com/watch?v=R4kFmMD3M0A", 8, 24, 201, 21)
    GUICtrlCreateLabel("You Tube Download Link:", 8, 8, 198, 15)
    $start = GUICtrlCreateButton("&Start", 8, 48, 99, 25, 0)
    $Progress = GUICtrlCreateProgress(8, 80, 202, 16)
    $abb = GUICtrlCreateButton("A&bort", 112, 48, 99, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $start
    GUICtrlSetState($start,$GUI_DISABLE)
    $dwnlink = GUICtrlRead($DwnInput)
    $sCode=_INetGetSource ($dwnlink)
    $s_t=StringRegExp($sCode, "&t=(.*?)&", 3)
    $s_v=stringmid($dwnlink,stringinstr($dwnlink,"v=")+2)
    $save = FileSaveDialog("Save SWF","","Flash(*.swf)",-1,$s_v)
    If StringRight($save,4) <> ".swf" Then $save&=".swf"
    _Download("http://youtube.com/get_video?video_id=" & $s_v & "&t=" & $s_t[0],$save,$Progress)
    GUIDelete()
    MsgBox(0,"","Done!")
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;By GtaSpider
    Func _Download($site,$punkt,$prog=0)
    $orisize = InetGetSize($site)
    InetGet($site,$punkt,1,1)
    If $prog = 0 Then ProgressOn("Download","")
    Do
    $msg = GUIGetMsg()
    If $msg = $abb Then
    If MsgBox(4,"","Abort?") = 6 Then Exit
    EndIf
    $size1 = FileGetSize($punkt)
    $MBsize1 = FileGetSize($punkt)
    $inetget = @InetGetBytesRead
    $Prozent = (100 * $inetget ) / $orisize
    $decimalplace = Round ($Prozent)
    $decimalplaceMBsize1 = Round (@InetGetBytesRead / 1024)
    If $prog = 0 Then
    ProgressSet ($Prozent, $decimalplace & "% " & "(" & $decimalplaceMBsize1 & ") Kb has been Downloaded.")
    Else
    GUICtrlSetData($prog,$Prozent)
    EndIf
    Until @InetGetActive = 0
    If $prog = 0 Then ProgressOff ()
    Return $punkt
    EndFunc

    [/autoit]

    Mfg Spider

  • Schön :)

    Obwohl ich jetzt eh auf das FireFox Plugin gewechselt hab, gefällt mir diese neue Variante wesentlich besser.

    Aber es heißt doch "Abort" und nicht "Abbort" ;)
    Ich hab auch noch überlegt, ob es nicht sinnvoll wäre, eine Autodetect Version zu machen...

  • Noch eine Kleinigkeit ^^

    Ich habe gemerkt, dass du versuchst, die Datei als swf zu speichern. Sie müsste aber als *.flv gespeichert werden. Bei mir geht *.flv zwar, aber *.swf gibt er mir immer als corrupted an ;)