#include-once #include ; #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/apis/youtube/js_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 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 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 EndFunc ;==>_FF_YT