IE Youtube API

  • Hallo Leute ,

    ich bräuchte dringend eine Youtube API für IE.
    Es ginge mir dabei hauptsächlich um folgende Funktionen:

    Spoiler anzeigen
    [autoit]

    playVideo
    pauseVideo
    setVolume
    getCurrentTime
    getDuration
    seekTo

    [/autoit]

    Für FF gibt es ja bereits eine von Stilgar:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <FF.au3>
    ; #FUNCTION# ===================================================================
    ; Name ..........: _FF_YT
    ; Description ...: YouTube API for FF.au3
    ; AutoIt Version : V3.3.0.0
    ; Requirement(s).: FF.au3 > V0.5.3.x / MozRepl
    ; Syntax ........: _FF_YT(ByRef $Socket[, $sCommand = "playVideo"[, $vArg1 = ""[, $vArg2 = ""[, $sPlayerID = "movie_player"]]]])
    ; Parameter(s): .: $sCommand - Optional: (Default = "playVideo") :
    ; | loadWait / $vArg1 = TimeOut in ms (int), Default = 10000
    ; | playVideo
    ; | pauseVideo
    ; | stopVideo
    ; | clearVideo
    ; | getVideoBytesLoaded
    ; | getvideobytestotal
    ; | getVideoStartBytes
    ; | mute
    ; | unMute
    ; | isMuted
    ; | setVolume / $vArg1 = Volume (int) (min=0, max=100)
    ; | getVolume
    ; | seekTo / $vArg1 = Secs (int), $vArg2 = allowSeekAhead (boolean), Default = true
    ; | getPlayerState
    ; | getCurrentTime
    ; | getDuration
    ; | setSize / $vArg1 = height (int), $vArg2 = width (int) (min=50)
    ; | getVideoUrl
    ; | getVideoEmbedCode
    ; | loadVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; | cueVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; $vArg1 - Optional: (Default = "") :
    ; $vArg2 - Optional: (Default = "") :
    ; $sPlayerID - Optional: (Default = "movie_player") :
    ; Return Value ..: Success - Deppending on the function call
    ; Failure - Deppending on the function call and sets
    ; @ERROR - 1 = error while sending command to player or no player found
    ; | 2 = wrong value or datatype of $vArg1 or $vArg2
    ; | 3 = wrong or unsupported $sCommand
    ; | 4 = wrong datatype returned from API
    ; | 5 = TimeOut from "loadWait"
    ; Author(s) .....: Thorsten Willert, iLoveAU3 (loadVideoById, cueVideoById)
    ; Remarks .......: Currently not supported: setSize (Video), addEventListener, all events
    ; Date ..........: Tue Apr 28 22:20:44 CEST 2009 @889 /Internet Time/
    ; Link ..........: http://code.google.com/intl/de-DE/api…_reference.html
    ; Example .......: _FF_YT($Socket,"pauseVideo"), _FF_YT($Socket,"setSize",480,385)
    ; ==============================================================================
    Func _FF_YT($sCommand = "playVideo", $vArg1 = "", $vArg2 = "", $sPlayerID = "movie_player")
    Local $iRet

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

    Switch StringLower($sCommand)
    Case "loadwait"
    ;dummy
    Case "playvideo"
    $sCommand = "playVideo()"
    $iRet = 0
    Case "pausevideo"
    $sCommand = "pauseVideo()"
    $iRet = 0
    Case "stopvideo"
    $sCommand = "stopVideo()"
    $iRet = 0
    Case "clearvideo"
    $sCommand = "clearVideo()"
    $iRet = 0
    Case "getvideobytesloaded"
    $sCommand = "getVideoBytesLoaded()"
    $iRet = 1
    Case "getvideobytestotal"
    $sCommand = "getVideoBytesTotal()"
    $iRet = 1
    Case "getvideostartbytes"
    $sCommand = "getVideoStartBytes()"
    $iRet = 1
    Case "mute"
    $sCommand = "mute()"
    $iRet = 0
    Case "unmute"
    $sCommand = "unMute()"
    $iRet = 0
    Case "ismuted"
    $sCommand = "isMuted()"
    $iRet = 1
    Case "setvolume"
    $vArg1 = Number($vArg1)
    If IsInt($vArg1) And $vArg1 >= 0 And $vArg1 <= 100 Then
    $sCommand = "setVolume(" & $vArg1 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvolume"
    $sCommand = "getVolume()"
    $iRet = 1
    Case "seekto"
    $vArg1 = Number($vArg1)
    If $vArg2 = "" Or $vArg2 = Default Then $vArg2 = True
    If IsInt($vArg1) And IsBool($vArg2) Then
    $vArg2 = __FFB2S($vArg2)
    $sCommand = "seekTo(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getplayerstate"
    $sCommand = "getPlayerState()"
    $iRet = 1
    Case "getcurrenttime"
    $sCommand = "getCurrentTime()"
    $iRet = 1
    Case "getduration"
    $sCommand = "getDuration()"
    $iRet = 1
    Case "setsize"
    $vArg1 = Number($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = 0 Or $vArg2 = Default Then $vArg2 = $vArg1
    If IsInt($vArg1) And IsInt($vArg2) And $vArg1 > 50 And $vArg2 > 50 Then
    $sCommand = "setSize(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvideourl"
    $sCommand = "getVideoUrl()"
    $iRet = 2
    Case "getvideoembedcode"
    $sCommand = "getVideoEmbedCode()"
    $iRet = 2
    Case "loadVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = "loadVideoById('" & $vArg1 & "'," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case "cueVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = 'cueVideoById("' & $vArg1 & '",' & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case Else
    SetError(3)
    Return -2
    EndSwitch

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

    If $sCommand <> "loadwait" Then
    Local $vRetVal = _FFCmd(StringFormat("try{window.content.wrappedJSObject.document.getElementById('%s').%s;}catch(e){'_FF_YT_Error'}", $sPlayerID, $sCommand))
    If Not @error And $vRetVal <> "_FF_YT_Error" Then
    Switch $iRet
    Case 0
    If $vRetVal = "" Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    Case 1
    If IsNumber(Number($vRetVal)) Then
    Return $vRetVal
    Else
    SetError(4)
    Return -2
    EndIf
    Case 2
    If IsString($vRetVal) Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    EndSwitch
    Else
    SetError(1)
    Return -2
    EndIf
    Else
    If $vArg1 = "" Or Not IsInt(Number($vArg1)) Then $vArg1 = 10000
    Local $TimeOutTimer = TimerInit()
    Local $sState
    Do
    $sState = _FF_YT("getPlayerState")
    If @error Then Return 0
    Sleep(500)
    If TimerDiff($TimeOutTimer) > $vArg1 Then
    SetError(5)
    Return 0
    EndIf
    Until $sState <= 3 Or $sState = "_FF_YT_Error"
    Return 1
    EndIf

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

    EndFunc ;==>_FF_YT

    [/autoit]

    Falls jemand Interesse hat nur zu :D

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Wenn Du den Code hast, warum machst Du das dann nicht Selber ?

    Das ist doch quatsch xD


    ich bin dafür das es GESCHLOSSEN wird.

    Sorry^^

  • @DaRealBurn: Dafür ist doch die Jobbörse...
    @Topic:

    Waren jetzt 5 minuten Arbeit: (Na gut, vllt 10 mit Funktionsbeschreibung die ich angepasst hab)

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <IE.au3>

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

    ; #FUNCTION# ===================================================================
    ; Name ..........: _IE_YT
    ; Description ...: YouTube API for IE.au3
    ; AutoIt Version : V3.3.0.0
    ; Requirement(s).: IE.au3
    ; Syntax ........: _IE_YT(ByRef $Socket[, $sCommand = "playVideo"[, $vArg1 = ""[, $vArg2 = ""[, $sPlayerID = "movie_player"]]]])
    ; Parameter(s): .: $oIE - IE Object
    ; $sCommand - Optional: (Default = "playVideo") :
    ; | loadWait / $vArg1 = TimeOut in ms (int), Default = 10000
    ; | playVideo
    ; | pauseVideo
    ; | stopVideo
    ; | clearVideo
    ; | getVideoBytesLoaded
    ; | getvideobytestotal
    ; | getVideoStartBytes
    ; | mute
    ; | unMute
    ; | isMuted
    ; | setVolume / $vArg1 = Volume (int) (min=0, max=100)
    ; | getVolume
    ; | seekTo / $vArg1 = Secs (int), $vArg2 = allowSeekAhead (boolean), Default = true
    ; | getPlayerState
    ; | getCurrentTime
    ; | getDuration
    ; | setSize / $vArg1 = height (int), $vArg2 = width (int) (min=50)
    ; | getVideoUrl
    ; | getVideoEmbedCode
    ; | loadVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; | cueVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; $vArg1 - Optional: (Default = "") :
    ; $vArg2 - Optional: (Default = "") :
    ; $sPlayerID - Optional: (Default = "movie_player") :
    ; Return Value ..: Success - Deppending on the function call
    ; Failure - Deppending on the function call and sets
    ; @ERROR - 1 = error while sending command to player or no player found
    ; | 2 = wrong value or datatype of $vArg1 or $vArg2
    ; | 3 = wrong or unsupported $sCommand
    ; | 4 = wrong datatype returned from API
    ; | 5 = TimeOut from "loadWait"
    ; Author(s) .....: Thorsten Willert, iLoveAU3 (loadVideoById, cueVideoById), SEuBo (modification for IE.au3)
    ; Remarks .......: Currently not supported: setSize (Video), addEventListener, all events
    ; Date ..........: Tue Apr 28 22:20:44 CEST 2009 @889 /Internet Time/
    ; Link ..........: http://code.google.com/intl/de-DE/api…_reference.html
    ; Example .......: _IE_YT($Socket,"pauseVideo"), _IE_YT($Socket,"setSize",480,385)
    ; ==============================================================================
    Func _IE_YT($oIE, $sCommand = "playVideo", $vArg1 = "", $vArg2 = "", $sPlayerID = "movie_player")
    Local $iRet

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

    Switch StringLower($sCommand)
    Case "loadwait"
    ;dummy
    Case "playvideo"
    $sCommand = "playVideo()"
    $iRet = 0
    Case "pausevideo"
    $sCommand = "pauseVideo()"
    $iRet = 0
    Case "stopvideo"
    $sCommand = "stopVideo()"
    $iRet = 0
    Case "clearvideo"
    $sCommand = "clearVideo()"
    $iRet = 0
    Case "getvideobytesloaded"
    $sCommand = "getVideoBytesLoaded()"
    $iRet = 1
    Case "getvideobytestotal"
    $sCommand = "getVideoBytesTotal()"
    $iRet = 1
    Case "getvideostartbytes"
    $sCommand = "getVideoStartBytes()"
    $iRet = 1
    Case "mute"
    $sCommand = "mute()"
    $iRet = 0
    Case "unmute"
    $sCommand = "unMute()"
    $iRet = 0
    Case "ismuted"
    $sCommand = "isMuted()"
    $iRet = 1
    Case "setvolume"
    $vArg1 = Number($vArg1)
    If IsInt($vArg1) And $vArg1 >= 0 And $vArg1 <= 100 Then
    $sCommand = "setVolume(" & $vArg1 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvolume"
    $sCommand = "getVolume()"
    $iRet = 1
    Case "seekto"
    $vArg1 = Number($vArg1)
    If $vArg2 = "" Or $vArg2 = Default Then $vArg2 = True
    If IsInt($vArg1) And IsBool($vArg2) Then
    If $vArg2 Then
    $vArg2 = "true"
    Else
    $vArg2 = "false"
    EndIf
    $sCommand = "seekTo(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getplayerstate"
    $sCommand = "getPlayerState()"
    $iRet = 1
    Case "getcurrenttime"
    $sCommand = "getCurrentTime()"
    $iRet = 1
    Case "getduration"
    $sCommand = "getDuration()"
    $iRet = 1
    Case "setsize"
    $vArg1 = Number($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = 0 Or $vArg2 = Default Then $vArg2 = $vArg1
    If IsInt($vArg1) And IsInt($vArg2) And $vArg1 > 50 And $vArg2 > 50 Then
    $sCommand = "setSize(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvideourl"
    $sCommand = "getVideoUrl()"
    $iRet = 2
    Case "getvideoembedcode"
    $sCommand = "getVideoEmbedCode()"
    $iRet = 2
    Case "loadVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = "loadVideoById('" & $vArg1 & "'," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case "cueVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = 'cueVideoById("' & $vArg1 & '",' & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case Else
    SetError(3)
    Return -2
    EndSwitch

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

    If $sCommand <> "loadwait" Then
    Local $vRetVal = $oIE.document.parentwindow.execScript(StringFormat("try{document.getElementById('%s').%s;}catch(e){'_IE_YT_Error'}", $sPlayerID, $sCommand))
    If Not @error And $vRetVal <> "_IE_YT_Error" Then
    Switch $iRet
    Case 0
    If $vRetVal = "" Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    Case 1
    If IsNumber(Number($vRetVal)) Then
    Return $vRetVal
    Else
    SetError(4)
    Return -2
    EndIf
    Case 2
    If IsString($vRetVal) Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    EndSwitch
    Else
    SetError(1)
    Return -2
    EndIf
    Else
    If $vArg1 = "" Or Not IsInt(Number($vArg1)) Then $vArg1 = 10000
    Local $TimeOutTimer = TimerInit()
    Local $sState
    Do
    $sState = _IE_YT("getPlayerState")
    If @error Then Return 0
    Sleep(500)
    If TimerDiff($TimeOutTimer) > $vArg1 Then
    SetError(5)
    Return 0
    EndIf
    Until $sState <= 3 Or $sState = "_IE_YT_Error"
    Return 1
    EndIf

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

    EndFunc ;==>_IE_YT

    [/autoit]


    Ich hab nur

    [autoit]

    Local $vRetVal = _FFCmd(StringFormat("try{window.content.wrappedJSObject.document.getElementById('%s').%s;}catch(e){'_FF_YT_Error'}", $sPlayerID, $sCommand))

    [/autoit]


    durch

    [autoit]

    Local $vRetVal = $oIE.document.parentwindow.execScript(StringFormat("try{document.getElementById('%s').%s;}catch(e){'_IE_YT_Error'}", $sPlayerID, $sCommand))

    [/autoit]


    ersetzt (und die Funktion _FFB2S rausgeschmissen)

  • @All , ich hab das hier nicht gepostet weil ich zu faul bin mir ne API zu schreiben sondern weil ichs einfach nicht kann ;)

    SEuBo ich danke dir , getcurrenttime und getduration scheint noch nicht zu funzen
    Hier ein script zum testen

    Spoiler anzeigen
    [autoit]

    #include "IE Youtube API.au3"

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

    OnAutoItExitRegister("free")

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

    Global $oIE, $url = "http://www.youtube.com/watch?v=wEdhtDob3Rg"

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

    $oIE = _IECreate ("www.google.de",0,1)

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

    HotKeySet("{F1} ", "navi")
    HotKeySet("{F2} ", "pause")
    HotKeySet("{F3} ", "play")

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

    While Sleep(50)
    If Not IsObj($oIE) Then Exit
    $currenttime = _IE_YT($oIE,"getcurrenttime")
    ToolTip($currenttime)
    WEnd

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

    Func navi()
    _IENavigate ($oIE,$url)
    EndFunc

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

    Func pause()
    _IE_YT($oIE,"pausevideo")
    EndFunc

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

    Func play()
    _IE_YT($oIE,"playvideo")
    EndFunc

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

    Func free()
    If IsObj($oIE) Then _IEQuit($oIE)
    EndFunc

    [/autoit]

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

    4 Mal editiert, zuletzt von hellboy3 (18. Juni 2011 um 17:25)

  • Hallo nochmal,

    tut mir leid wenn ich diesen alten Thread wieder erwecke , aber ich hab mal heute wieder weng zeit für eins meiner älteren Projekte und bin daher
    wieder bisschen am rumbasteln.
    Ich suche jetzt bestimmt schon ne Stunde in der IE WebKonsole , warum manche funktionen funzen und manche nicht, leider ohne Erfolg. (z.B. getcurrenttime und getduration
    :thumbdown: )
    Die Funktionen heissen doch alle gleich , was macht es dann für einen Unterschied ob ich FF oder IE verwende, ich mein Seubo hat ja den Teil angepasst in dem die Befehle an den Browser geschickt werden , und es geht ja auch teilweise ?(


    Wäre cool wenn wir das i-wie zum laufen bekommen ,danke im voraus :)

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • execScript hat keinen Rückgabewert. Du musst den Wert z.B. in ein HTML-Element schreiben und dieses dann auslesen.

  • Achso , ich weis jetzt nicht ob ich das richtig verstehe aber wenn execScript keinen Rückgabewert hat , dann muss ich wohl i-etwas anderes benutzen ,oder wie meinst du das?
    Haste da nen Ansatz für mich , sry bin bei sowas nicht so fit :whistling:

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • So, ein Beispiel:

    [autoit]


    #include <IE.au3>
    $oIE = _IECreate ()
    $sHTML = '<h1 id="test">Hello World!</h1>'
    _IEBodyWriteHTML ($oIE, $sHTML)

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

    $oIE.document.parentwindow.execScript('document.scriptresult=null; document.scriptresult=document.getElementById("test").innerText');
    MsgBox(0, '', $oIE.document.scriptresult)

    [/autoit]

    Im IE solltest du die Methoden aber direkt starten können:

    [autoit]

    Local $vRetVal = Execute(StringFormat("$oIE.document.getElementById('%s').%s;", $sPlayerID, $sCommand))

    [/autoit]
  • Ich hab das jetzt mal wie folgt angepasst aber ich bekomme keinen Rückgabewert.

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <IE.au3>

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

    ; #FUNCTION# ===================================================================
    ; Name ..........: _IE_YT
    ; Description ...: YouTube API for IE.au3
    ; AutoIt Version : V3.3.0.0
    ; Requirement(s).: IE.au3
    ; Syntax ........: _IE_YT(ByRef $Socket[, $sCommand = "playVideo"[, $vArg1 = ""[, $vArg2 = ""[, $sPlayerID = "movie_player"]]]])
    ; Parameter(s): .: $oIE - IE Object
    ; $sCommand - Optional: (Default = "playVideo") :
    ; | loadWait / $vArg1 = TimeOut in ms (int), Default = 10000
    ; | playVideo
    ; | pauseVideo
    ; | stopVideo
    ; | clearVideo
    ; | getVideoBytesLoaded
    ; | getvideobytestotal
    ; | getVideoStartBytes
    ; | mute
    ; | unMute
    ; | isMuted
    ; | setVolume / $vArg1 = Volume (int) (min=0, max=100)
    ; | getVolume
    ; | seekTo / $vArg1 = Secs (int), $vArg2 = allowSeekAhead (boolean), Default = true
    ; | getPlayerState
    ; | getCurrentTime
    ; | getDuration
    ; | setSize / $vArg1 = height (int), $vArg2 = width (int) (min=50)
    ; | getVideoUrl
    ; | getVideoEmbedCode
    ; | loadVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; | cueVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; $vArg1 - Optional: (Default = "") :
    ; $vArg2 - Optional: (Default = "") :
    ; $sPlayerID - Optional: (Default = "movie_player") :
    ; Return Value ..: Success - Deppending on the function call
    ; Failure - Deppending on the function call and sets
    ; @ERROR - 1 = error while sending command to player or no player found
    ; | 2 = wrong value or datatype of $vArg1 or $vArg2
    ; | 3 = wrong or unsupported $sCommand
    ; | 4 = wrong datatype returned from API
    ; | 5 = TimeOut from "loadWait"
    ; Author(s) .....: Thorsten Willert, iLoveAU3 (loadVideoById, cueVideoById), SEuBo (modification for IE.au3)
    ; Remarks .......: Currently not supported: setSize (Video), addEventListener, all events
    ; Date ..........: Tue Apr 28 22:20:44 CEST 2009 @889 /Internet Time/
    ; Link ..........: http://code.google.com/intl/de-DE/api…_reference.html
    ; Example .......: _IE_YT($Socket,"pauseVideo"), _IE_YT($Socket,"setSize",480,385)
    ; ==============================================================================
    Func _IE_YT($oIE, $sCommand = "playVideo", $vArg1 = "", $vArg2 = "", $sPlayerID = "movie_player")
    Local $iRet

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

    Switch StringLower($sCommand)
    Case "loadwait"
    ;dummy
    Case "playvideo"
    $sCommand = "playVideo()"
    $iRet = 0
    Case "pausevideo"
    $sCommand = "pauseVideo()"
    $iRet = 0
    Case "stopvideo"
    $sCommand = "stopVideo()"
    $iRet = 0
    Case "clearvideo"
    $sCommand = "clearVideo()"
    $iRet = 0
    Case "getvideobytesloaded"
    $sCommand = "getVideoBytesLoaded()"
    $iRet = 1
    Case "getvideobytestotal"
    $sCommand = "getVideoBytesTotal()"
    $iRet = 1
    Case "getvideostartbytes"
    $sCommand = "getVideoStartBytes()"
    $iRet = 1
    Case "mute"
    $sCommand = "mute()"
    $iRet = 0
    Case "unmute"
    $sCommand = "unMute()"
    $iRet = 0
    Case "ismuted"
    $sCommand = "isMuted()"
    $iRet = 1
    Case "setvolume"
    $vArg1 = Number($vArg1)
    If IsInt($vArg1) And $vArg1 >= 0 And $vArg1 <= 100 Then
    $sCommand = "setVolume(" & $vArg1 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvolume"
    $sCommand = "getVolume()"
    $iRet = 1
    Case "seekto"
    $vArg1 = Number($vArg1)
    If $vArg2 = "" Or $vArg2 = Default Then $vArg2 = True
    If IsInt($vArg1) And IsBool($vArg2) Then
    If $vArg2 Then
    $vArg2 = "true"
    Else
    $vArg2 = "false"
    EndIf
    $sCommand = "seekTo(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getplayerstate"
    $sCommand = "getPlayerState()"
    $iRet = 1
    Case "getcurrenttime"
    $sCommand = "getCurrentTime()"
    $iRet = 1
    Case "getduration"
    $sCommand = "getDuration()"
    $iRet = 1
    Case "setsize"
    $vArg1 = Number($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = 0 Or $vArg2 = Default Then $vArg2 = $vArg1
    If IsInt($vArg1) And IsInt($vArg2) And $vArg1 > 50 And $vArg2 > 50 Then
    $sCommand = "setSize(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvideourl"
    $sCommand = "getVideoUrl()"
    $iRet = 2
    Case "getvideoembedcode"
    $sCommand = "getVideoEmbedCode()"
    $iRet = 2
    Case "loadVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = "loadVideoById('" & $vArg1 & "'," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case "cueVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = 'cueVideoById("' & $vArg1 & '",' & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case Else
    SetError(3)
    Return -2
    EndSwitch

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

    If $sCommand <> "loadwait" Then
    If $sCommand = "getcurrenttime" Or $sCommand = "getduration" Then
    Local $vRetVal = Execute(StringFormat("$oIE.document.getElementById('%s').%s;", $sPlayerID, $sCommand))
    Else
    Local $vRetVal = $oIE.document.parentwindow.execScript(StringFormat("try{document.getElementById('%s').%s;}catch(e){'_IE_YT_Error'}", $sPlayerID, $sCommand))
    EndIf
    If Not @error And $vRetVal <> "_IE_YT_Error" Then
    Switch $iRet
    Case 0
    If $vRetVal = "" Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    Case 1
    If IsNumber(Number($vRetVal)) Then
    Return $vRetVal
    Else
    SetError(4)
    Return -2
    EndIf
    Case 2
    If IsString($vRetVal) Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    EndSwitch
    Else
    SetError(1)
    Return -2
    EndIf
    Else
    If $vArg1 = "" Or Not IsInt(Number($vArg1)) Then $vArg1 = 10000
    Local $TimeOutTimer = TimerInit()
    Local $sState
    Do
    $sState = _IE_YT("getPlayerState")
    If @error Then Return 0
    Sleep(500)
    If TimerDiff($TimeOutTimer) > $vArg1 Then
    SetError(5)
    Return 0
    EndIf
    Until $sState <= 3 Or $sState = "_IE_YT_Error"
    Return 1
    EndIf

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

    EndFunc ;==>_IE_YT

    [/autoit]

    Wenn ich

    [autoit]

    Local $vRetVal = $oIE.document.parentwindow.execScript(StringFormat("try{document.getElementById('%s').%s;}catch(e){'_IE_YT_Error'}", $sPlayerID, $sCommand))

    [/autoit]


    durch

    [autoit]

    Local $vRetVal = Execute(StringFormat("$oIE.document.getElementById('%s').%s;", $sPlayerID, $sCommand))

    [/autoit]


    ersetze (klar gehen dann andere funktionen nicht), dann bekomme ich -2 als Rückgabe.

    Mache ich was falsch?

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Es sieht so aus, dass der Rückgabewert nicht von AutoIt verstanden werden kann... So funktioniert es jedenfalls:

    [autoit]

    $oIE.document.parentwindow.execScript('document.scriptresult=null; document.scriptresult=eval(document.getElementById("movie_player").getDuration());');
    MsgBox(0, '', $oIE.document.scriptresult)

    [/autoit]
  • So habs jetzt hinbekommen,danke progandy :)
    Ich bekomme aber ab und zu , noch diesen Fehler:
    http://www.bilderhost.eu

    IE_API:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.7.8 (beta)
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include-once
    #include <IE.au3>

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

    ; #FUNCTION# ===================================================================
    ; Name ..........: _IE_YT
    ; Description ...: YouTube API for IE.au3
    ; AutoIt Version : V3.3.0.0
    ; Requirement(s).: IE.au3
    ; Syntax ........: _IE_YT(ByRef $Socket[, $sCommand = "playVideo"[, $vArg1 = ""[, $vArg2 = ""[, $sPlayerID = "movie_player"]]]])
    ; Parameter(s): .: $oIE - IE Object
    ; $sCommand - Optional: (Default = "playVideo") :
    ; | loadWait / $vArg1 = TimeOut in ms (int), Default = 10000
    ; | playVideo
    ; | pauseVideo
    ; | stopVideo
    ; | clearVideo
    ; | getVideoBytesLoaded
    ; | getvideobytestotal
    ; | getVideoStartBytes
    ; | mute
    ; | unMute
    ; | isMuted
    ; | setVolume / $vArg1 = Volume (int) (min=0, max=100)
    ; | getVolume
    ; | seekTo / $vArg1 = Secs (int), $vArg2 = allowSeekAhead (boolean), Default = true
    ; | getPlayerState
    ; | getCurrentTime
    ; | getDuration
    ; | setSize / $vArg1 = height (int), $vArg2 = width (int) (min=50)
    ; | getVideoUrl
    ; | getVideoEmbedCode
    ; | loadVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; | cueVideoById / $vArg1 = id (string), $vArg2 = start (int)
    ; $vArg1 - Optional: (Default = "") :
    ; $vArg2 - Optional: (Default = "") :
    ; $sPlayerID - Optional: (Default = "movie_player") :
    ; Return Value ..: Success - Deppending on the function call
    ; Failure - Deppending on the function call and sets
    ; @ERROR - 1 = error while sending command to player or no player found
    ; | 2 = wrong value or datatype of $vArg1 or $vArg2
    ; | 3 = wrong or unsupported $sCommand
    ; | 4 = wrong datatype returned from API
    ; | 5 = TimeOut from "loadWait"
    ; Author(s) .....: Thorsten Willert, iLoveAU3 (loadVideoById, cueVideoById), SEuBo (modification for IE.au3)
    ; Remarks .......: Currently not supported: setSize (Video), addEventListener, all events
    ; Date ..........: Tue Apr 28 22:20:44 CEST 2009 @889 /Internet Time/
    ; Link ..........: http://code.google.com/intl/de-DE/api…_reference.html
    ; Example .......: _IE_YT($Socket,"pauseVideo"), _IE_YT($Socket,"setSize",480,385)
    ; ==============================================================================
    Func _IE_YT($oIE, $sCommand = "playVideo", $vArg1 = "", $vArg2 = "", $sPlayerID = "movie_player")
    Local $iRet, $vRetVal

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

    Switch StringLower($sCommand)
    Case "loadwait"
    ;dummy
    Case "playvideo"
    $sCommand = "playVideo()"
    $iRet = 0
    Case "pausevideo"
    $sCommand = "pauseVideo()"
    $iRet = 0
    Case "stopvideo"
    $sCommand = "stopVideo()"
    $iRet = 0
    Case "clearvideo"
    $sCommand = "clearVideo()"
    $iRet = 0
    Case "getvideobytesloaded"
    $sCommand = "getVideoBytesLoaded()"
    $iRet = 1
    Case "getvideobytestotal"
    $sCommand = "getVideoBytesTotal()"
    $iRet = 1
    Case "getvideostartbytes"
    $sCommand = "getVideoStartBytes()"
    $iRet = 1
    Case "mute"
    $sCommand = "mute()"
    $iRet = 0
    Case "unmute"
    $sCommand = "unMute()"
    $iRet = 0
    Case "ismuted"
    $sCommand = "isMuted()"
    $iRet = 1
    Case "setvolume"
    $vArg1 = Number($vArg1)
    If IsInt($vArg1) And $vArg1 >= 0 And $vArg1 <= 100 Then
    $sCommand = "setVolume(" & $vArg1 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvolume"
    $sCommand = "getVolume()"
    $iRet = 1
    Case "seekto"
    $vArg1 = Number($vArg1)
    If $vArg2 = "" Or $vArg2 = Default Then $vArg2 = True
    If IsInt($vArg1) And IsBool($vArg2) Then
    If $vArg2 Then
    $vArg2 = "true"
    Else
    $vArg2 = "false"
    EndIf
    $sCommand = "seekTo(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getplayerstate"
    $sCommand = "getPlayerState()"
    $iRet = 1
    Case "getcurrenttime"
    $sCommand = "getCurrentTime()"
    $iRet = 1
    Case "getduration"
    $sCommand = "getDuration()"
    $iRet = 1
    Case "setsize"
    $vArg1 = Number($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = 0 Or $vArg2 = Default Then $vArg2 = $vArg1
    If IsInt($vArg1) And IsInt($vArg2) And $vArg1 > 50 And $vArg2 > 50 Then
    $sCommand = "setSize(" & $vArg1 & "," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    $iRet = 0
    Case "getvideourl"
    $sCommand = "getVideoUrl()"
    $iRet = 2
    Case "getvideoembedcode"
    $sCommand = "getVideoEmbedCode()"
    $iRet = 2
    Case "loadVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = "loadVideoById('" & $vArg1 & "'," & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case "cueVideoById"
    $vArg1 = String($vArg1)
    $vArg2 = Number($vArg2)
    If $vArg2 = Default Or $vArg2 = "" Then $vArg2 = 0
    If IsString($vArg1) And IsNumber($vArg2) Then
    $sCommand = 'cueVideoById("' & $vArg1 & '",' & $vArg2 & ")"
    Else
    SetError(2)
    Return -2
    EndIf
    Case Else
    SetError(3)
    Return -2
    EndSwitch

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

    If $sCommand <> "loadwait" Then
    Switch $sCommand
    Case "getDuration()"
    $oIE.document.parentwindow.execScript('document.scriptresult=null; document.scriptresult=eval(document.getElementById("movie_player").getDuration());')
    $vRetVal = $oIE.document.scriptresult
    Case "getcurrenttime()"
    $oIE.document.parentwindow.execScript('document.scriptresult=null; document.scriptresult=eval(document.getElementById("movie_player").getCurrentTime());')
    $vRetVal = $oIE.document.scriptresult
    Case "getplayerstate()"
    $oIE.document.parentwindow.execScript('document.scriptresult=null; document.scriptresult=eval(document.getElementById("movie_player").getPlayerState());')
    $vRetVal = $oIE.document.scriptresult
    Case Else
    $vRetVal = $oIE.document.parentwindow.execScript(StringFormat("try{document.getElementById('%s').%s;}catch(e){'_IE_YT_Error'}", $sPlayerID, $sCommand))
    EndSwitch
    If Not @error And $vRetVal <> "_IE_YT_Error" Then
    Switch $iRet
    Case 0
    If $vRetVal = "" Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    Case 1
    If IsNumber(Number($vRetVal)) Then
    Return $vRetVal
    Else
    SetError(4)
    Return -2
    EndIf
    Case 2
    If IsString($vRetVal) Then
    Return $vRetVal
    Else
    SetError(4)
    Return ""
    EndIf
    EndSwitch
    Else
    SetError(1)
    Return -2
    EndIf
    Else
    If $vArg1 = "" Or Not IsInt(Number($vArg1)) Then $vArg1 = 500
    Local $TimeOutTimer = TimerInit()
    Local $sState
    Do
    $sState = _IE_YT($oIE,"getPlayerState")
    If @error Then Return 0
    Sleep(500)
    If TimerDiff($TimeOutTimer) > $vArg1 Then
    SetError(5)
    Return 0
    EndIf
    Until $sState <= 3 Or $sState = "_IE_YT_Error"
    Return 1
    EndIf
    EndFunc ;==>_IE_YT

    [/autoit]

    Jemand ne Idee, habe schon mit IsObj() überprüft und name22 hat auch schon mal drüber geschaut.

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio