Videos von YouTube mit AutoIt?

  • Hey,
    gibt es eine Möglichkeit, einen Downloader für YouTube zu schreiben??
    Also, wenn jedes Programm (RealPlayer, Videoloader...) das kann, dann müsste es ja auch ein AutoIt Programm können.
    Da man auch von Internetseiten, ein Video laden kann, zum Beispiel Anjo.to, dann müsste es doch einen Direkt Link zum Download des Videos geben oder??
    Kann man nicht mit AutoIt aus dem Source Code, den Direkt Link ermitteln und diese Datei dann mit Inetget holen??
    Oder steckt da mehr dahinter??


    Mfg

    Benne

  • Kann AutoIt dieses Header auslesen?
    :rolleyes:

    ^^

    *edit*:

    HTTP
    HTTP/1.1 200 OK Date: Fri, 03 Apr 2009 21:04:37 GMT Server: Apache X-Content-Type-Options: nosniff Content-Encoding: gzip Set-Cookie: use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; path=/; domain=.youtube.com Set-Cookie: VISITOR_INFO1_LIVE=tRsEZV_rm24; path=/; domain=.youtube.com; expires=Sun, 29-Nov-2009 21:04:37 GMT Set-Cookie: PREF=f1=50000000; path=/; domain=.youtube.com; expires=Mon, 01-Apr-2019 21:04:37 GMT Set-Cookie: GEO=967f257b44e4c138647a3b2fe2fdd751cwwAAAAyREXZdzOqAOV51kk=; path=/; domain=.youtube.com; expires=Sun, 05-Apr-2009 21:04:37 GMT Set-Cookie: watched_video_id_list=5fd4cd457ad34ac09d0c2a90df6f584aWwEAAABzCwAAADJubU5qS3NyUFBz; path=/; domain=.youtube.com Expires: Tue, 27 Apr 1971 19:44:06 EST X-YouTube-MID: WkFSZzctYUFHdmk2Sjl2R0xjMnRaSVFycUhOZFhIdWtENWhCSXNreEpvQkFmMk1iaGNZcFBn Cache-Control: no-cache Content-Length: 18365 Content-Type: text/html; charset=utf-8

    Das ist zum Beispiel der Code eines Videos.
    Daraus bin ich nur noch nicht ganz schlau drauf geworden..^^

    Ich bitte um Hilfe ;)

    Mfg
    Benne

  • ;)
    Danke.
    Aber
    Es geht sich um das Downloaden ;)
    Wenn ich mit Live HTTP Reader mitschneide.
    Dann bekomme ich nen Link.

    Spoiler anzeigen
    Code
    http://www.youtube.com/get_video?video_id=r0Er36N4TAw&t=vjVQa1PpcFPuUyLln1JKQTGNUHxNLZ1fhsuT5aqFi_0=&el=detailpage&ps=&fmt=34

    Naja damit kann ich dann laden.
    Das Problem ist jetzt folgendes.
    Ich möchte ja mit AutoIt den HTTP Header auslesen, und dann mit RegExp den Link rausbekommen. (Letzteres ist einfach) , das Downloade dann auch, nur eben das mit dem HTTP Header lesen ist das schwierige...

    mfg
    Benne

  • Das Video habe ich einfach aus Zufall ausgewählt..
    Und dann eben, einfach geklickt, und ich kann das Video laden.
    Jedoch sind die Schritte aufwenidg und ich zerbreche mir den Kopf, wie AutoIt die Header auslesen könnte.. =(

  • Selber wählen ;)

    Also ich habe nen YouTube Link,
    gebe den ein.
    Und dann sucht der den HTTP Header und ließt den Direkt Download Link aus ;)

    [autoit]

    #include <IE.au3>
    #include <GUIConstants.au3>
    #include <INet.au3>
    #include <String.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("YouTube Loader", 633, 161, 347, 375)
    $Label1 = GUICtrlCreateLabel("Mein Video Loader ;) ", 217, 16, 206, 31)
    GUICtrlSetFont(-1, 14, 800, 0, "Comic Sans MS")
    $Link = GUICtrlCreateInput("Link hier rein!! ;)", 40, 64, 553, 21)
    $Download = GUICtrlCreateButton("Download!", 216, 104, 193, 41, 0)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Download
    $s_URL = GUICtrlRead ($Link)
    $Source = _INetGetSource ($s_URL)
    $Suchbegriff = "http://www.youtube.com/get_video"
    $Filtern = StringRegExp ($Suchbegriff, $Source)
    MsgBox (1, "Ergebniss", $Filtern)
    Exit

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

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Hat YouTube nicht SWF-Dateien die man herunter läd?
    Also wenn Du das möchtest, dann gebe mal Info, denn das war bereits im Forum gelöst und wäre eine Nutzung der SuFu wert.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Also ich kenne da nur die .flv Dateien.
    Aber ich kann ja mal in der SuFu nach swf gucken.

  • Hallo PokerFace.

    Kann auch sein das es .flv Dateien sind. Aber die kann man doch auch nicht mit Bordmitteln abspielen, sondern nur mit einem bestimmten FLI-Player, oder?

    Aber so oder so, das Thema war bereits da und ich suche gerade den Sourcecode raus.

    3 Min. Später: gefunden siehe ---->

    Spoiler anzeigen
    [autoit]


    ;"_Download" skrevet af: GtaSpider (AutoIt-Forum: Tyskland)

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

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

    GUICreate("You Tube Video-Downloader", 273, 105, 193, 115, -1)
    $DwnInput = GUICtrlCreateInput("http://www.youtube.com/watch?v=6DEh0eSpNvY", 8, 24, 257, 21)
    GUICtrlCreateLabel("www.youtube.com Download Link:", 8, 8, 268, 15)
    $start = GUICtrlCreateButton("&Start", 8, 48, 128, 25, 0)
    $Progress = GUICtrlCreateProgress(8, 80, 257, 16)
    $abb = GUICtrlCreateButton("A&bbruch", 137, 48, 128, 25, 0)
    GUISetState(@SW_SHOW)

    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("Speichere 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,"","Fertig!")
    Exit
    EndSwitch
    WEnd

    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,"","Abbruch?") = 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 sind bereits gedownloadet.")
    Else
    GUICtrlSetData($prog,$Prozent)
    EndIf
    Until @InetGetActive = 0
    If $prog = 0 Then ProgressOff ()
    Return $punkt
    EndFunc

    [/autoit]


    Die Func _Download hat GtaSpider geschrieben, wie peethebee bereits geschrieben hat.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Cool =)
    Dann komme ich schonmal an die FLV ;)

    Das ist eine erste Hilfe =)
    Dann versuche ich mich mal an die flv. Datei ranzutasten ^^

    Mfg
    Benne

  • HI,
    der Codec der Benutzt wird ist FLV1.
    D.h. die Datei die du mit dem Programm runterlädts ist schon die FLV-Datei, ich weis nicht, warum die als SWF gespeichert werden sollte.

    anno2008

  • Hallo Benne.

    Habe den FLV-Player von "martijndevisse", aber der kommt runter sobald ich einen finde der besser und besonders auch schneller ist.
    Wenn man wenige FLV's hat okay, aber wenn man eine größere FLV-Datei hat, dann ruckelt (oder flattert, egal wie man es nennt) es sehr sehr stark.

    Aber wenn Dir mit dem Downloader von GtaSpider geholfen ist, dann freut es mich. Ich meine auch, das GtaSpider den mal gepostet hatte, so wie Peethebee ja auch schrieb.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • DANKE Peethebee, werde ich mir gleich runter laden und beim nächsten PC-Update dann den aktuellen Player löschen und den neuen installieren. Geht ja nicht gleich, sondern immer erst wenn ich "Updateday" habe.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • So für Alle, die YouTube Videos im FLV Format haben wollen etc.

    Habe nur 1-2 Sachen verändert.
    Credits natürlich bei peethebee.

    Spoiler anzeigen
    [autoit]

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

    GUICreate("You Tube Video-Downloader", 273, 105, 193, 115, -1)
    $DwnInput = GUICtrlCreateInput("Hier YouTube Link Rein !", 8, 24, 257, 21)
    GUICtrlCreateLabel("www.youtube.com Download Link:", 8, 8, 268, 15)
    $start = GUICtrlCreateButton("&Start", 8, 48, 128, 25, 0)
    $Progress = GUICtrlCreateProgress(8, 80, 257, 16)
    $abb = GUICtrlCreateButton("A&bbruch", 137, 48, 128, 25, 0)
    GUISetState(@SW_SHOW)

    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("Speichere FLV","","Flash Video(*.flv)",-1,$s_v)
    If StringRight($save,4) <> ".swf" Then $save&=".flv"
    _Download("http://youtube.com/get_video?video_id=" & $s_v & "&t=" & $s_t[0],$save,$Progress)
    GUIDelete()
    MsgBox(0,"","Fertig!")
    Exit
    EndSwitch
    WEnd

    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,"","Abbruch?") = 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 sind bereits gedownloadet.")
    Else
    GUICtrlSetData($prog,$Prozent)
    EndIf
    Until @InetGetActive = 0
    If $prog = 0 Then ProgressOff ()
    Return $punkt
    EndFunc

    [/autoit]
  • lad dir noch ffmpeg runter, dann kannst es auch gleich umwandeln lassen, und bevor es zu problemen kommt beim benutzen, die namen dürfen beim übergeben keine leerzeichen beinhalten

    Code
    set /p Name=Type in the name of the flv(without .flv): 
    ffmpeg -i %Name%.flv -ar 44100 -ac 2 -ab 256k %Name%.mp3