Unknown function name? aber sie ist definiert

  • Hi!
    Ich bin neu in diesem Forum, und hab gleich eine Frage:
    Ich schreibe gerade für mich privat ein Youtube client.
    Dafür habe ich mir aus dem Internet ein paar UDF's besorgt. Bei ein paar funktioniert das mit objekten, aber dort kenn ich mich nicht sonderlich aus, da ich noch kein tutorial dazu gefunden habe.
    Nun zu meinem problem:
    Hier erst einmal die Programm-Codes.
    Vor ab, der unten genannter Fehler tritt auch auf wenn ich das aus der orginal datei nähmlich:
    youtubeAPI.au3
    include, und es tritt auch auf wenn die Funktionen am ende des Skriptes stehen.
    Hier also der Code von youtube client.au3:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <IE.au3>
    #include "YouTubeAPI.au3"
    #include <INet.au3>

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

    Global $oCollection
    Func _Youtube_Read($iID)

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

    $sSource = _INetGetSource('http://youtube.com/watch?v='&$iID)

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

    Return $sSource

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

    EndFunc

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

    Func _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)

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

    Local $aReturn[2]

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

    $oIE = _IECreateEmbedded()
    $hObj = GUICtrlCreateObj($oIE, $iX, $iY, $iWidth, $iHeight)

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

    _IENavigate ($oIE, "about:blank", 0)
    _IEDocWriteHTML($oIE, '<body bgcolor="Black"></body>')

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

    $aReturn[0] = $oIE
    $aReturn[1] = $hObj

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

    Return $aReturn

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

    EndFunc

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

    Func _Youtube_Load($aPlayerControl, $sPlayer, $iAutoPlay=True)

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

    If $iAutoPlay Then
    $sURL = _Youtube_GetPlayerLink($sPlayer)
    Else
    $sURL = _Youtube_GetEmbedLink($sPlayer)
    EndIf

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

    _IENavigate ($aPlayerControl[0], $sURL, 0)

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

    Return 1

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

    EndFunc

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

    Func _Youtube_Stop($aPlayerControl)

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

    _IENavigate ($aPlayerControl[0], "about:blank", 0)
    _IEDocWriteHTML($aPlayerControl[0], '<body bgcolor="Black"></body>')

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

    EndFunc

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

    Func YouTube_GetTitle($hVideo)
    Return $hVideo.Eval("video.entry.media$group.media$title.$t")
    EndFunc

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

    $oIE = _IECreateEmbedded()
    $formMain = GUICreate("YouTube Client", 418, 466, 192, 164)
    $oFlash = ObjCreate("ShockwaveFlash.ShockwaveFlash.11")
    $objPlayer = GUICtrlCreateObj($oFlash, 8, 40, 489, 393)

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

    $inpWord = GUICtrlCreateInput("test", 8, 8, 321, 21)
    GUICtrlSetState($inpWord, $GUI_FOCUS) ; Der Fokus ist auf diesem Element
    $btnSearch = GUICtrlCreateButton("Suche", 330, 7, 81, 23)
    $lswResults = GUICtrlCreateListView("Titel | Länge", 8, 32, 401, 393)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 320)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 60)
    $btnPlay = GUICtrlCreateButton("Wiedergabe", 8, 432, 401, 25)

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

    Dim $aItems[200]
    Dim $aVID[20]

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

    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnSearch
    For $i = 0 To 19
    GUICtrlDelete($aItems[$i])
    Next
    $oCollection = YouTube_SearchVideos(GUICtrlRead($inpWord), 20, 1, $YT_BY_VIEWS, $YT_LANG_GERMAN)
    For $i = 0 To YouTube_GetVideosCount($oCollection) - 1
    YouTube_SelectIndex($oCollection, $i)
    $aItems[$i] = GUICtrlCreateListViewItem(StringReplace(YouTube_GetTitle($oCollection), "|", "") & "|" & ToMinutes(YouTube_GetDuration($oCollection)), $lswResults)
    $aVID[$i] = YouTube_GetVID($oCollection) ;
    Next
    Case $btnPlay
    For $i = 0 To 199
    If GUICtrlRead($lswResults) = $aItems[$i] Then ExitLoop
    Next

    $vidio_title = YouTube_GetTitle($oCollection)
    $form_player = GUICreate($vidio_title, 600, 600, 100, 200)

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

    YouTube_SelectIndex($oCollection, $i) ; Wählt das aktive Objekt in der Sammlung
    $vidio_id = YouTube_GetVID($oCollection)

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

    $a_youtubeplayer = _Youtube_Create(120, 220)
    GUISetState(@SW_SHOW)
    $vidio_load_process = _Youtube_Load($a_youtubeplayer, $youtube_source)
    GUICtrlSetState($a_youtubeplayer, $GUI_FOCUS) ; Der Fokus ist auf diesem Button

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

    While True
    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $GUI_EVENT_CLOSE
    _Youtube_Stop($a_youtubeplayer)
    GUIDelete()
    EndSwitch
    WEnd

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

    EndSwitch
    WEnd

    [/autoit]

    Das ist der Code von dem Client.
    Hier jetzt der Code von YoutubeAPI.au3:

    Spoiler anzeigen
    [autoit]


    ; #INCLUDE# ====================================================================================================================
    ; Name ..........: YouTubeAPI
    ; Author ........: PunisherAxe
    ; Version .......: 1.2
    ; ===============================================================================================================================

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

    Global Const $YT_BY_RELEVANCE = "relevance"
    Global Const $YT_BY_VIEWS = "viewCount"
    Global Const $YT_BY_PUBLISHED = "published"
    Global Const $YT_BY_RATING = "rating"

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

    Global Const $YT_TIME_HOUR = "hour"
    Global Const $YT_TIME_TODAY = "today"
    Global Const $YT_TIME_WEEK = "this_week"
    Global Const $YT_TIME_MONTH = "this_month"
    Global Const $YT_TIME_YEAR = "year"
    Global Const $YT_TIME_ALL = "time_all"

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

    Global Const $YT_LANG_POLISH = "pl"
    Global Const $YT_LANG_ENGLISH = "en"
    Global Const $YT_LANG_GERMAN = "de"

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

    Global Const $YT_DURATION_SHORT = "short"
    Global Const $YT_DURATION_MEDIUM = "medium"
    Global Const $YT_DURATION_LONG = "long"

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

    Global Const $YT_CAPTION_TRUE = True
    Global Const $YT_CAPTION_FALSE = False

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

    Global Const $YT_HD_TRUE = True
    Global Const $YT_HD_FALSE = False

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

    Func YouTube_GetVIDFromURL($sWatch)
    Local $aResults = StringRegExp($sWatch, "(|\?|&)v=([\w|\-]+)", 3)
    If Not IsArray($aResults) Then Return SetError(1, 0, 0)
    Return $aResults[1]
    EndFunc ;==>YouTube_GetVIDFromURL

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

    Func YouTube_GetVideo($sVID)
    Local $sResults, $sURL, $oVideo, $oHTTP
    $sURL = "http://gdata.youtube.com/feeds/api/videos/" & $sVID & "?v=2&alt=json"
    $oVideo = ObjCreate("ScriptControl")
    $oVideo.language = "JScript"
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("GET", $sURL)
    ;$oHTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
    $oHTTP.Send()
    $oHTTP.WaitForResponse()
    $sResults = $oHTTP.ResponseText
    $oVideo.Eval("var video = (" & $sResults & ");")
    If StringLeft($sResults, 6) == "<error" Then Return SetError(1, 0, 0)
    Return $oVideo
    EndFunc ;==>YouTube_GetVideo

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

    Func YouTube_SearchVideos($sQuestion, $iMaxResults = 10, $iStartIndex = 1, $sOrderBy = $YT_BY_RELEVANCE, $sLang = "", $sCategory = "", $sAuthor = "", $sDuration = "", $sTime = "", $bHD = "", $bCaption = "")
    Local $sResults, $sURL, $oVideo, $oHTTP
    If $sLang <> "" Then $sLang = "&lr=" & $sLang
    If $sCategory <> "" Then $sCategory = "&category=" & $sCategory
    If $sAuthor <> "" Then $sAuthor = "&author=" & $sAuthor
    If $sDuration <> "" Then $sDuration = "&duration=" & $sDuration
    If $sTime <> "" Then $sTime = "&time=" & $sTime
    If $bHD <> "" Then
    If $bHD = True Then
    $bHD = "&hd=true"
    Else
    $bHD = "&hd=false"
    EndIf
    EndIf
    If $bCaption <> "" Then
    If $bCaption = True Then
    $bCaption = "&caption"
    Else
    $bCaption = ""
    EndIf
    EndIf
    $sURL = "https://gdata.youtube.com/feeds/api/videos?q=" & $sQuestion & "&orderby=" & $sOrderBy & "&start-index=" & $iStartIndex & "&max-results=" & $iMaxResults & $bHD & $sDuration & $sAuthor & $sCategory & $sTime & "&v=2&alt=json"
    $oVideo = ObjCreate("ScriptControl")
    $oVideo.language = "JScript"
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("GET", $sURL)
    $oHTTP.Send()
    $oHTTP.WaitForResponse()
    $sResults = $oHTTP.ResponseText
    $oVideo.Eval("var collection = (" & $sResults & ");")
    If StringLeft($sResults, 6) == "<error" Then Return SetError(1, 0, 0)
    Return $oVideo
    EndFunc ;==>YouTube_SearchVideos

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

    Func YouTube_SelectIndex(ByRef $oCollection, $iIndex = 0)
    $oCollection.Eval('var video = {"entry" : collection.feed.entry[' & $iIndex & ']};')
    EndFunc ;==>YouTube_SelectIndex

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

    Func YouTube_GetVideosCount($oCollection)
    Return $oCollection.Eval("collection.feed.entry.length")
    EndFunc ;==>YouTube_GetVideosCount

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

    Func YouTube_GetLikes($hVideo)
    Return $hVideo.Eval("video.entry.yt$rating.numLikes")
    EndFunc ;==>YouTube_GetLikes

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

    Func YouTube_GetDislikes($hVideo)
    Return $hVideo.Eval("video.entry.yt$rating.numDislikes")
    EndFunc ;==>YouTube_GetDislikes

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

    Func YouTube_GetViews($hVideo)
    Return $hVideo.Eval("video.entry.yt$statistics.viewCount")
    EndFunc ;==>YouTube_GetViews

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

    Func YouTube_GetRaters($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.numRaters")
    EndFunc ;==>YouTube_GetRaters

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

    Func YouTube_GetAverageRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.average")
    EndFunc ;==>YouTube_GetAverageRating

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

    Func YouTube_GetMaxRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.max")
    EndFunc ;==>YouTube_GetMaxRating

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

    Func YouTube_GetMinRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.min")
    EndFunc ;==>YouTube_GetMinRating

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

    Func YouTube_GetCategory($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.media$group.media$category[" & $iIndex & "].$t")
    EndFunc ;==>YouTube_GetCategory

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

    Func YouTube_GetDuration($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$duration.seconds")
    EndFunc ;==>YouTube_GetDuration

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

    Func YouTube_GetUploaded($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.media$group.yt$uploaded.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetUploaded

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

    Func YouTube_GetPublished($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.published.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetPublished

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

    Func YouTube_GetUpdated($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.updated.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetUpdated

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

    Func YouTube_GetUploaderID($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$uploaderId.$t")
    EndFunc ;==>YouTube_GetUploaderID

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

    Func YouTube_GetAspectRatio($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$aspectRatio.$t")
    EndFunc ;==>YouTube_GetAspectRatio

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

    Func YouTube_GetDescription($hVideo)
    Return $hVideo.Eval("video.entry.media$group.media$description.$t")
    EndFunc ;==>YouTube_GetDescription

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

    Func YouTube_GetAuthorName($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].name.$t")
    EndFunc ;==>YouTube_GetAuthorName

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

    Func YouTube_GetAuthorURI($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].uri.$t")
    EndFunc ;==>YouTube_GetAuthorURI

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

    Func YouTube_GetAuthorID($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].yt$userId.$t")
    EndFunc ;==>YouTube_GetAuthorID

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

    Func YouTube_GetThumbDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "default")
    EndFunc ;==>YouTube_GetThumbDefault

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

    Func YouTube_GetThumbMQDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "mqdefault")
    EndFunc ;==>YouTube_GetThumbMQDefault

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

    Func YouTube_GetThumbHQDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "hqdefault")
    EndFunc ;==>YouTube_GetThumbHQDefault

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

    Func YouTube_GetThumbSDDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "sddefault")
    EndFunc ;==>YouTube_GetThumbSDDefault

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

    Func YouTube_GetThumbStart($hVideo)
    Return YouTube_GetThumbByName($hVideo, "start")
    EndFunc ;==>YouTube_GetThumbStart

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

    Func YouTube_GetThumbMiddle($hVideo)
    Return YouTube_GetThumbByName($hVideo, "middle")
    EndFunc ;==>YouTube_GetThumbMiddle

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

    Func YouTube_GetThumbEnd($hVideo)
    Return YouTube_GetThumbByName($hVideo, "end")
    EndFunc ;==>YouTube_GetThumbEnd

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

    Func YouTube_GetThumbByName($hVideo, $sName)
    Local $iLength = $hVideo.Eval("video.entry.media$group.media$thumbnail.length") - 1
    For $i = 0 To $iLength
    $sYtName = $hVideo.Eval("video.entry.media$group.media$thumbnail[" & $i & "].yt$name")
    If $sYtName = $sName Then ExitLoop
    Next
    If $i > $iLength Then Return SetError(1, 0, 0)
    Return $hVideo.Eval("video.entry.media$group.media$thumbnail[" & $i & "].url")
    EndFunc ;==>YouTube_GetThumbByName

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

    Func YouTube_GetContentFlash($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 0)
    EndFunc ;==>YouTube_GetContentFlash

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

    Func YouTube_GetContentRTSP1($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 1)
    EndFunc ;==>YouTube_GetContentRTSP1

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

    Func YouTube_GetContentRTSP6($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 2)
    EndFunc ;==>YouTube_GetContentRTSP6

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

    Func YouTube_GetContentByIndex($hVideo, $iIndex)
    Return $hVideo.Eval("video.entry.media$group.media$content[" & $iIndex & "].url")
    EndFunc ;==>YouTube_GetContentByIndex

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

    Func YouTube_GetCommentCount($hVideo)
    Return $hVideo.Eval("video.entry.gd$comments.gd$feedLink.countHint")
    EndFunc ;==>YouTube_GetCommentCount

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

    Func YouTube_GetVID($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$videoid.$t")
    EndFunc ;==>YouTube_GetVID

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

    Und zuletzt der Code von Youtube.au3:


    Spoiler anzeigen
    [autoit]


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

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

    AutoIt Version: 3.2.13.3 (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]

    #cs

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

    Functions:

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

    _Youtube_Read($iID)

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

    _Youtube_GetID($sPlayer)
    _Youtube_GetTitle($sPlayer)
    _Youtube_GetDescription($sPlayer)
    _Youtube_GetKeywords($sPlayer)

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

    _Youtube_GetEmbedLink($sPlayer)
    _Youtube_GetPlayerLink($sPlayer)
    _Youtube_GetPlayerSwf($sPlayer)

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


    _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)
    _Youtube_Load($aPlayerControl, $sPlayer, $iAutoPlay=True)
    _Youtube_Stop($aPlayerControl)

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

    #CE

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

    #include-once
    #include <INet.au3>
    #include <IE.au3>

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

    Global Const $YT_DEFAULTWIDTH = 425
    Global Const $YT_DEFAULTHEIGHT = 344

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

    ; Downloads the source of the Youtube page
    ; $iID = Video ID (example: "sNzEQ8hG1zA")

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

    Func _Youtube_Read($iID)

    $sSource = _INetGetSource('http://youtube.com/watch?v='&$iID)

    Return $sSource

    EndFunc

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

    ; Creates a embedded IE control for playing Youtube movies
    ; $iX, $iY, $iWidth, $iHeight = Coordinates of the control

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

    Func _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)

    Local $aReturn[2]

    $oIE = _IECreateEmbedded()
    $hObj = GUICtrlCreateObj($oIE, $iX, $iY, $iWidth, $iHeight)

    _IENavigate ($oIE, "about:blank", 0)
    _IEDocWriteHTML($oIE, '<body bgcolor="Black"></body>')

    $aReturn[0] = $oIE
    $aReturn[1] = $hObj

    Return $aReturn

    EndFunc

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

    ; Loads a movie into a player control.
    ; $aPlayerControl = A player control (return value of _Youtube_Create)
    ; $sPlayer = A movie (return value of _Youtube_Read)
    ; [$iAutoPlay] = Automaticly starts playing the movie if True.

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

    Func _Youtube_Load($aPlayerControl, $sPlayer, $iAutoPlay=True)

    If $iAutoPlay Then
    $sURL = _Youtube_GetPlayerLink($sPlayer)
    Else
    $sURL = _Youtube_GetEmbedLink($sPlayer)
    EndIf

    _IENavigate ($aPlayerControl[0], $sURL, 0)

    Return 1

    EndFunc

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

    ; Stops playing a movie
    ; $aPlayerControl = Player control (return value of _Youtube_Create)

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

    Func _Youtube_Stop($aPlayerControl)

    _IENavigate ($aPlayerControl[0], "about:blank", 0)
    _IEDocWriteHTML($aPlayerControl[0], '<body bgcolor="Black"></body>')

    EndFunc

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

    Func _Youtube_GetKeywords($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="keywords" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="keywords" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="keywords" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="keywords" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetEmbedLink($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var embedUrl = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var embedUrl = ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var embedUrl = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var embedUrl = ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,";","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetID($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var pageVideoId = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var pageVideoId = ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var pageVideoId = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var pageVideoId = ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,";","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetDescription($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="description" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="description" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="description" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="description" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetTitle($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="title" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="title" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="title" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="title" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetPlayerLink($sPlayer)

    $sSWF = _Youtube_GetPlayerSwf($sPlayer)
    If Not $sSWF Then Return ""

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var swfArgs = {")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var swfArgs = {")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var swfArgs = {")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var swfArgs = {")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"};","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,'"',"")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,": ","=")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,", ","&")
    ;$sAfterPlayerLink = StringReplace($sAfterPlayerLink,"null","0")

    Return $sSWF&"?"&$sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetPlayerSwf($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var swfUrl = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var swfUrl = canPlayV9Swf() ? ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var swfUrl = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var swfUrl = canPlayV9Swf() ? ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    $aSplit = StringSplit($sAfterPlayerLink," ")

    Return $aSplit[1]

    EndFunc

    [/autoit]


    (Die Dateien YoutubeAPI.au3 und Youtube.au3 liegen noch im Anhang).

    Wenn man jetzt youtube client.au3 startet und auf Suchen klickt kommt folgendes:

    Line 55
    (File "X:\Programmierung\Projekte\AutoIt\Youtube client\Youtube client.au3"):
    Func YouTube_GetTitle($hVideo)
    Func YouTube_GetTitle($hVideo)^
    ERROR: Unknown function name.

    Ich verstehe das nicht, warum
    "ERROR: Unknown function name."
    Das ist mir rätselhaft, da doch genau dort die Funktion definiert wird.

    Wahrscheinlich ist die lösung sehr leicht, aber ich suche schon eine ganze weile nach dem problem.
    Kann mir hier jemand weiter helfen und mir auch vllt. ein tutorial nennen zur OOp mit autoit?

    Nur das keine unklarheiten entstehen:
    YoutubeAPI.au3
    ist aus einem polnischen forum und ich hab mich sehr an dem beispiel orentiert, was mit geliefert wurde.
    Die anderen Funktionen sind aus
    Youtube.au3, die hab ich glaub ich aus diesem Forum.
    Falls mir jemand weiter helfen kann, währe das sehr schön.
    Ich habe Scite und Autoit in der aktuellsten stabielen version und windows xp noch auf meinem rechner.
    (32 bit)
    Vielen dank in vorraus.

    Lg. Chris.
    p.s. sorry für die formatierung, bei mir wird das ein bisschen merkwürdig angezeigt.

    autoit.de/wcf/attachment/24563/

  • 1. Bitte die UDF beilegen (als Anhang), keiner wird sich die Mühe machen, die selber zu suchen. Und ohne ist das Skript nicht lauffähig. ;)

    2. Längeren Code (so wie hier) bitte in einen Spoiler packen!

    3. Zeile 100: Typo? Kommentar mit ; nicht mit ,

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Jetzt ohne Sch...ß aber ich blicke da nicht durch :D

    Was mir aber aufgefallen ist, du hast kein Include in dem "Client" Script für die Youtube.au3. (Du hast du Funktionen doppelt oder willst du die Youtube.au3 nicht includen?)

    Ich kann nichts ausführen, weil 1. seeehr viele Variablen nicht deklariert sind und 2. Die benötigten Variablen in dem Youtube.au3 Script sind das du ja nicht include hast :D

    Also bitte ich dich einmal DEIN Script zu Posten und dann im Anhang die Includes die du in deinem Script dann aber auch wirklich benutzt.

    :thumbup:

    • Offizieller Beitrag

    Was für ein heilloses durcheinander. Ordne erst mal deine Scripte. Da funktioniert nichts.
    Für was soll die Youtube.au3 sein? Sie wird nicht includiert und hat teils die selben Funktionen wie YoutubeApi.au3

  • Hi!

    Also:
    Alle Funktionen die in youtube client.au3 definiert werden außer "YouTube_GetTitle", sind von Youtube.au3.
    Ich habe die aus der youtube.au3 raus genommen, weil ich dachte dort liegt das Problem. Und die Youtube.au3 habe ich nicht includet weil ich nicht unnötige funktionen in meinem Skript wollte und weil wie schon oben erwähnt die funktionsnamen bei den beiden sich manchmal gleichen. Keine Sorge, alle Funktionen die im skript "youtube client.au3" definiert werden, haben auch die anderen Funktionen zuverfügung die sie brauchen.
    Das mit dem _ ändert nichts.
    Die Youtube.au3 habe ich genannt, damit klar ist, woher die funktionen kommen.
    Ich hoffe jetzt ist es klarer.
    Aber welche Variablen sind nicht deklariert?

    LG. Chris.
    p.s.: Sorry wegen dem Durcheinander! Da gab es ein missverständniss. Sorry...

  • Ich verstehe kein Wort :D :D :D (nichts gegen dich aber es ist nicht einfach zu verstehen was du eig. willst)

    Also du sagt du braucht die Youtube.au3 nicht (aber dort sind ja Variablen definiert die du in deinem Client Script brauchst->)
    Die Funktion zum Beispiel hast du rauskopiert :

    [autoit]

    Func _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)

    [/autoit]

    So aber die Variablen

    [autoit]

    $YT_DEFAULTWIDTH

    [/autoit]

    und

    [autoit]

    $YT_DEFAULTHEIGHT

    [/autoit]

    sind nicht in dem Client Script deklariert. Deshalb wundert es mich das du die Funktionen rauskopiert hast anstatt die UDF zu Includen. Mach BITTE erstmal dein Script übersichtlicher also->

    - Aus dem Client Script alle Funktionen die in der Youtube.au3 vorhanden sind löschen
    - Entsprechend beide UDF includen

    und dann können wir über das eig. Problem reden. (Die Funktion Include ist ja dafür gedacht mehrere Funktionen einzubinden und ggf. nur zwei drei zu Benutzen)

    Und da du gesagt hast das du die UDF's aus dem polnischem Forum hast hier nochmal deine Aufgaben auf Polnisch falls es leichter für dich zu verstehen ist:

    Co to zrobienia zeby bylo chociaz troche porzadku:
    - Po pierwsze posprzataj twoj skrypt. Wszystkie funkcje ktore sa juz w Youtube.au3 wykasuj ze swego programu i za includuj Youtube.au3
    - Potem zaincluduj te UDF z funkcajmi ktore potrzebujesz to nic nie znaczy jesli nie uzywasz wszystkich Funkcji poto jest ta mozliwosc include

    :thumbup:

  • Hi!
    Ok, hab ich gemacht, jetzt wird alles includet, Youtube.au3 und YoutubeAPI.au3.
    hier nochmal die Codes für die Dateien, liegen auch im Anhang:
    Youtube client.au3:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <IE.au3>
    #include "YouTubeAPI.au3"
    #include "Youtube.au3"

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

    Global $oCollection

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

    $oIE = _IECreateEmbedded()
    $formMain = GUICreate("YouTube Client", 418, 466, 192, 164)
    $oFlash = ObjCreate("ShockwaveFlash.ShockwaveFlash.11")
    $objPlayer = GUICtrlCreateObj($oFlash, 8, 40, 489, 393)

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

    $inpWord = GUICtrlCreateInput("test", 8, 8, 321, 21)
    GUICtrlSetState($inpWord, $GUI_FOCUS) ; Der Fokus ist auf diesem Element
    $btnSearch = GUICtrlCreateButton("Suche", 330, 7, 81, 23)
    $lswResults = GUICtrlCreateListView("Titel | Länge", 8, 32, 401, 393)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 320)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 60)
    $btnPlay = GUICtrlCreateButton("Wiedergabe", 8, 432, 401, 25)

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

    Dim $aItems[200]
    Dim $aVID[20]

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

    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnSearch
    For $i = 0 To 19
    GUICtrlDelete($aItems[$i])
    Next
    $oCollection = YouTube_SearchVideos(GUICtrlRead($inpWord), 20, 1, $YT_BY_VIEWS, $YT_LANG_GERMAN)
    ;Suche nach Video, (20 - max Ergebnisse und auf Deutsch)
    For $i = 0 To YouTube_GetVideosCount($oCollection) - 1
    YouTube_SelectIndex($oCollection, $i)
    ;wählt ein Vidio aus, zur verarbeitung
    $aItems[$i] = GUICtrlCreateListViewItem(StringReplace(YouTube_GetTitle($oCollection), "|", "") & "|" & ToMinutes(YouTube_GetDuration($oCollection)), $lswResults)
    $aVID[$i] = YouTube_GetVID($oCollection)
    ; für jedes gefundene Vidio die Vidio-ID ermitteln
    Next
    Case $btnPlay
    For $i = 0 To 199
    If GUICtrlRead($lswResults) = $aItems[$i] Then ExitLoop
    Next
    ;~ $youtube_source = _Youtube_Read($vidio_id)
    $vidio_title = YouTube_GetTitle($oCollection)
    $form_player = GUICreate($vidio_title, 600, 600, 100, 200)

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

    YouTube_SelectIndex($oCollection, $i) ; Wählt das aktive Objekt in der Sammlung
    $vidio_id = YouTube_GetVID($oCollection)
    $a_youtubeplayer = _Youtube_Create(120, 220)
    GUISetState(@SW_SHOW)
    $vidio_load_process = _Youtube_Load($a_youtubeplayer, $youtube_source)
    GUICtrlSetState($a_youtubeplayer, $GUI_FOCUS) ; Der Fokus ist auf diesem Button

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

    While True
    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $GUI_EVENT_CLOSE
    _Youtube_Stop($a_youtubeplayer)
    GUIDelete()
    EndSwitch
    WEnd

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

    EndSwitch
    WEnd

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

    Von Youtube.au3:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs

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

    Functions:

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

    _Youtube_Read($iID)

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

    _Youtube_GetID($sPlayer)
    _Youtube_GetTitle($sPlayer)
    _Youtube_GetDescription($sPlayer)
    _Youtube_GetKeywords($sPlayer)

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

    _Youtube_GetEmbedLink($sPlayer)
    _Youtube_GetPlayerLink($sPlayer)
    _Youtube_GetPlayerSwf($sPlayer)

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


    _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)
    _Youtube_Load($aPlayerControl, $sPlayer, $iAutoPlay=True)
    _Youtube_Stop($aPlayerControl)

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

    #CE

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

    #include-once
    #include <INet.au3>
    #include <IE.au3>

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

    Global Const $YT_DEFAULTWIDTH = 425
    Global Const $YT_DEFAULTHEIGHT = 344

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

    ; Downloads the source of the Youtube page
    ; $iID = Video ID (example: "sNzEQ8hG1zA")

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

    Func _Youtube_Read($iID)

    $sSource = _INetGetSource('http://youtube.com/watch?v='&$iID)

    Return $sSource

    EndFunc

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

    ; Creates a embedded IE control for playing Youtube movies
    ; $iX, $iY, $iWidth, $iHeight = Coordinates of the control

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

    Func _Youtube_Create($iX, $iY, $iWidth=$YT_DEFAULTWIDTH, $iHeight=$YT_DEFAULTHEIGHT)

    Local $aReturn[2]

    $oIE = _IECreateEmbedded()
    $hObj = GUICtrlCreateObj($oIE, $iX, $iY, $iWidth, $iHeight)

    _IENavigate ($oIE, "about:blank", 0)
    _IEDocWriteHTML($oIE, '<body bgcolor="Black"></body>')

    $aReturn[0] = $oIE
    $aReturn[1] = $hObj

    Return $aReturn

    EndFunc

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

    ; Loads a movie into a player control.
    ; $aPlayerControl = A player control (return value of _Youtube_Create)
    ; $sPlayer = A movie (return value of _Youtube_Read)
    ; [$iAutoPlay] = Automaticly starts playing the movie if True.

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

    Func _Youtube_Load($aPlayerControl, $sPlayer, $iAutoPlay=True)

    If $iAutoPlay Then
    $sURL = _Youtube_GetPlayerLink($sPlayer)
    Else
    $sURL = _Youtube_GetEmbedLink($sPlayer)
    EndIf

    _IENavigate ($aPlayerControl[0], $sURL, 0)

    Return 1

    EndFunc

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

    ; Stops playing a movie
    ; $aPlayerControl = Player control (return value of _Youtube_Create)

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

    Func _Youtube_Stop($aPlayerControl)

    _IENavigate ($aPlayerControl[0], "about:blank", 0)
    _IEDocWriteHTML($aPlayerControl[0], '<body bgcolor="Black"></body>')

    EndFunc

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

    Func _Youtube_GetKeywords($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="keywords" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="keywords" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="keywords" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="keywords" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetEmbedLink($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var embedUrl = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var embedUrl = ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var embedUrl = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var embedUrl = ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,";","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetID($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var pageVideoId = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var pageVideoId = ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var pageVideoId = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var pageVideoId = ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,";","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetDescription($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="description" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="description" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="description" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="description" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetTitle($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,'<meta name="title" content=')
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen('<meta name="title" content=')-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,'<meta name="title" content=')
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen('<meta name="title" content=')-1)
    $sAfterPlayerLink = StringTrimRight($sAfterPlayerLink,2)
    $sAfterPlayerLink = StringTrimLeft($sAfterPlayerLink,1)

    Return $sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetPlayerLink($sPlayer)

    $sSWF = _Youtube_GetPlayerSwf($sPlayer)
    If Not $sSWF Then Return ""

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var swfArgs = {")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var swfArgs = {")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var swfArgs = {")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var swfArgs = {")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"};","")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,'"',"")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,": ","=")
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,", ","&")
    ;$sAfterPlayerLink = StringReplace($sAfterPlayerLink,"null","0")

    Return $sSWF&"?"&$sAfterPlayerLink

    EndFunc

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

    Func _Youtube_GetPlayerSwf($sPlayer)

    $sSource = $sPlayer

    $iPlayerLinkStart = StringInStr($sSource,"var swfUrl = ")
    If Not $iPlayerLinkStart Then Return ""
    $sBeforePlayerLink = StringLeft($sSource,$iPlayerLinkStart+StringLen("var swfUrl = canPlayV9Swf() ? ")-1)
    If Not $sBeforePlayerLink Then Return ""

    $aSplit = StringSplit($sBeforePlayerLink,@CRLF)
    $iPlayerLinkLine = $aSplit[0]
    If Not $iPlayerLinkLine Then Return ""

    $aSourceSplit = StringSplit($sSource,@CRLF)
    If $iPlayerLinkLine > $aSourceSplit[0] Then Return ""
    $sPlayerLinkLine = $aSourceSplit[$iPlayerLinkLine]

    $iPlayerLinkStart = StringInStr($sPlayerLinkLine,"var swfUrl = ")
    $sAfterPlayerLink = StringTrimLeft($sPlayerLinkLine,$iPlayerLinkStart+StringLen("var swfUrl = canPlayV9Swf() ? ")-1)
    $sAfterPlayerLink = StringReplace($sAfterPlayerLink,"'","")

    $aSplit = StringSplit($sAfterPlayerLink," ")

    Return $aSplit[1]

    EndFunc

    [/autoit]


    Und zuletzt von YoutubeAPI.au3:

    Spoiler anzeigen
    [autoit]


    ; #INCLUDE# ====================================================================================================================
    ; Name ..........: YouTubeAPI
    ; Author ........: PunisherAxe
    ; Version .......: 1.2
    ; ===============================================================================================================================

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

    Global Const $YT_BY_RELEVANCE = "relevance"
    Global Const $YT_BY_VIEWS = "viewCount"
    Global Const $YT_BY_PUBLISHED = "published"
    Global Const $YT_BY_RATING = "rating"

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

    Global Const $YT_TIME_HOUR = "hour"
    Global Const $YT_TIME_TODAY = "today"
    Global Const $YT_TIME_WEEK = "this_week"
    Global Const $YT_TIME_MONTH = "this_month"
    Global Const $YT_TIME_YEAR = "year"
    Global Const $YT_TIME_ALL = "time_all"

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

    Global Const $YT_LANG_POLISH = "pl"
    Global Const $YT_LANG_ENGLISH = "en"
    Global Const $YT_LANG_GERMAN = "de"

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

    Global Const $YT_DURATION_SHORT = "short"
    Global Const $YT_DURATION_MEDIUM = "medium"
    Global Const $YT_DURATION_LONG = "long"

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

    Global Const $YT_CAPTION_TRUE = True
    Global Const $YT_CAPTION_FALSE = False

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

    Global Const $YT_HD_TRUE = True
    Global Const $YT_HD_FALSE = False

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

    Func YouTube_GetVIDFromURL($sWatch)
    Local $aResults = StringRegExp($sWatch, "(|\?|&)v=([\w|\-]+)", 3)
    If Not IsArray($aResults) Then Return SetError(1, 0, 0)
    Return $aResults[1]
    EndFunc ;==>YouTube_GetVIDFromURL

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

    Func YouTube_GetVideo($sVID)
    Local $sResults, $sURL, $oVideo, $oHTTP
    $sURL = "http://gdata.youtube.com/feeds/api/videos/" & $sVID & "?v=2&alt=json"
    $oVideo = ObjCreate("ScriptControl")
    $oVideo.language = "JScript"
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("GET", $sURL)
    ;$oHTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8")
    $oHTTP.Send()
    $oHTTP.WaitForResponse()
    $sResults = $oHTTP.ResponseText
    $oVideo.Eval("var video = (" & $sResults & ");")
    If StringLeft($sResults, 6) == "<error" Then Return SetError(1, 0, 0)
    Return $oVideo
    EndFunc ;==>YouTube_GetVideo

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

    Func YouTube_SearchVideos($sQuestion, $iMaxResults = 10, $iStartIndex = 1, $sOrderBy = $YT_BY_RELEVANCE, $sLang = "", $sCategory = "", $sAuthor = "", $sDuration = "", $sTime = "", $bHD = "", $bCaption = "")
    Local $sResults, $sURL, $oVideo, $oHTTP
    If $sLang <> "" Then $sLang = "&lr=" & $sLang
    If $sCategory <> "" Then $sCategory = "&category=" & $sCategory
    If $sAuthor <> "" Then $sAuthor = "&author=" & $sAuthor
    If $sDuration <> "" Then $sDuration = "&duration=" & $sDuration
    If $sTime <> "" Then $sTime = "&time=" & $sTime
    If $bHD <> "" Then
    If $bHD = True Then
    $bHD = "&hd=true"
    Else
    $bHD = "&hd=false"
    EndIf
    EndIf
    If $bCaption <> "" Then
    If $bCaption = True Then
    $bCaption = "&caption"
    Else
    $bCaption = ""
    EndIf
    EndIf
    $sURL = "https://gdata.youtube.com/feeds/api/videos?q=" & $sQuestion & "&orderby=" & $sOrderBy & "&start-index=" & $iStartIndex & "&max-results=" & $iMaxResults & $bHD & $sDuration & $sAuthor & $sCategory & $sTime & "&v=2&alt=json"
    $oVideo = ObjCreate("ScriptControl")
    $oVideo.language = "JScript"
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("GET", $sURL)
    $oHTTP.Send()
    $oHTTP.WaitForResponse()
    $sResults = $oHTTP.ResponseText
    $oVideo.Eval("var collection = (" & $sResults & ");")
    If StringLeft($sResults, 6) == "<error" Then Return SetError(1, 0, 0)
    Return $oVideo
    EndFunc ;==>YouTube_SearchVideos

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

    Func YouTube_SelectIndex(ByRef $oCollection, $iIndex = 0)
    $oCollection.Eval('var video = {"entry" : collection.feed.entry[' & $iIndex & ']};')
    EndFunc ;==>YouTube_SelectIndex

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

    Func YouTube_GetVideosCount($oCollection)
    Return $oCollection.Eval("collection.feed.entry.length")
    EndFunc ;==>YouTube_GetVideosCount

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

    Func YouTube_GetLikes($hVideo)
    Return $hVideo.Eval("video.entry.yt$rating.numLikes")
    EndFunc ;==>YouTube_GetLikes

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

    Func YouTube_GetDislikes($hVideo)
    Return $hVideo.Eval("video.entry.yt$rating.numDislikes")
    EndFunc ;==>YouTube_GetDislikes

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

    Func YouTube_GetViews($hVideo)
    Return $hVideo.Eval("video.entry.yt$statistics.viewCount")
    EndFunc ;==>YouTube_GetViews

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

    Func YouTube_GetRaters($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.numRaters")
    EndFunc ;==>YouTube_GetRaters

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

    Func YouTube_GetAverageRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.average")
    EndFunc ;==>YouTube_GetAverageRating

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

    Func YouTube_GetMaxRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.max")
    EndFunc ;==>YouTube_GetMaxRating

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

    Func YouTube_GetMinRating($hVideo)
    Return $hVideo.Eval("video.entry.gd$rating.min")
    EndFunc ;==>YouTube_GetMinRating

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

    Func YouTube_GetTitle($hVideo)
    Return $hVideo.Eval("video.entry.media$group.media$title.$t")
    EndFunc ;==>YouTube_GetTitle

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

    Func YouTube_GetCategory($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.media$group.media$category[" & $iIndex & "].$t")
    EndFunc ;==>YouTube_GetCategory

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

    Func YouTube_GetDuration($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$duration.seconds")
    EndFunc ;==>YouTube_GetDuration

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

    Func YouTube_GetUploaded($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.media$group.yt$uploaded.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetUploaded

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

    Func YouTube_GetPublished($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.published.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetPublished

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

    Func YouTube_GetUpdated($hVideo)
    Return StringReplace(StringTrimRight($hVideo.Eval("video.entry.updated.$t"), 5), "T", " ")
    EndFunc ;==>YouTube_GetUpdated

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

    Func YouTube_GetUploaderID($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$uploaderId.$t")
    EndFunc ;==>YouTube_GetUploaderID

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

    Func YouTube_GetAspectRatio($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$aspectRatio.$t")
    EndFunc ;==>YouTube_GetAspectRatio

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

    Func YouTube_GetDescription($hVideo)
    Return $hVideo.Eval("video.entry.media$group.media$description.$t")
    EndFunc ;==>YouTube_GetDescription

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

    Func YouTube_GetAuthorName($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].name.$t")
    EndFunc ;==>YouTube_GetAuthorName

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

    Func YouTube_GetAuthorURI($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].uri.$t")
    EndFunc ;==>YouTube_GetAuthorURI

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

    Func YouTube_GetAuthorID($hVideo, $iIndex = 0)
    Return $hVideo.Eval("video.entry.author[" & $iIndex & "].yt$userId.$t")
    EndFunc ;==>YouTube_GetAuthorID

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

    Func YouTube_GetThumbDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "default")
    EndFunc ;==>YouTube_GetThumbDefault

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

    Func YouTube_GetThumbMQDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "mqdefault")
    EndFunc ;==>YouTube_GetThumbMQDefault

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

    Func YouTube_GetThumbHQDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "hqdefault")
    EndFunc ;==>YouTube_GetThumbHQDefault

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

    Func YouTube_GetThumbSDDefault($hVideo)
    Return YouTube_GetThumbByName($hVideo, "sddefault")
    EndFunc ;==>YouTube_GetThumbSDDefault

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

    Func YouTube_GetThumbStart($hVideo)
    Return YouTube_GetThumbByName($hVideo, "start")
    EndFunc ;==>YouTube_GetThumbStart

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

    Func YouTube_GetThumbMiddle($hVideo)
    Return YouTube_GetThumbByName($hVideo, "middle")
    EndFunc ;==>YouTube_GetThumbMiddle

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

    Func YouTube_GetThumbEnd($hVideo)
    Return YouTube_GetThumbByName($hVideo, "end")
    EndFunc ;==>YouTube_GetThumbEnd

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

    Func YouTube_GetThumbByName($hVideo, $sName)
    Local $iLength = $hVideo.Eval("video.entry.media$group.media$thumbnail.length") - 1
    For $i = 0 To $iLength
    $sYtName = $hVideo.Eval("video.entry.media$group.media$thumbnail[" & $i & "].yt$name")
    If $sYtName = $sName Then ExitLoop
    Next
    If $i > $iLength Then Return SetError(1, 0, 0)
    Return $hVideo.Eval("video.entry.media$group.media$thumbnail[" & $i & "].url")
    EndFunc ;==>YouTube_GetThumbByName

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

    Func YouTube_GetContentFlash($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 0)
    EndFunc ;==>YouTube_GetContentFlash

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

    Func YouTube_GetContentRTSP1($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 1)
    EndFunc ;==>YouTube_GetContentRTSP1

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

    Func YouTube_GetContentRTSP6($hVideo)
    Return YouTube_GetContentByIndex($hVideo, 2)
    EndFunc ;==>YouTube_GetContentRTSP6

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

    Func YouTube_GetContentByIndex($hVideo, $iIndex)
    Return $hVideo.Eval("video.entry.media$group.media$content[" & $iIndex & "].url")
    EndFunc ;==>YouTube_GetContentByIndex

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

    Func YouTube_GetCommentCount($hVideo)
    Return $hVideo.Eval("video.entry.gd$comments.gd$feedLink.countHint")
    EndFunc ;==>YouTube_GetCommentCount

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

    Func YouTube_GetVID($hVideo)
    Return $hVideo.Eval("video.entry.media$group.yt$videoid.$t")
    EndFunc ;==>YouTube_GetVID

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

    So!
    Übrigens, die vorliegende Fehlermeldung hat sich verändert:
    Line 125
    (File "X:\Programmierung\Projekte\AutoIt\Youtube client\YouTubeAPI.au3"):
    Func YouTube_GetTitle($hVideo)
    Func YouTube_GetTitle($hVideo)^
    ERROR: Unknown function name.

    im prinzip das gleiche, nur jetzt in der Datei YoutubeAPI.au3

    Hoffendlich hab ich das jetzt richtig gemacht.
    Noch was:
    Ich versteh kein funken polnisch...
    Ich hab nur in diesem forum eine Datei gefunden über google, und mir dann mit dem Google übersetzer weiter geholfen.
    Zum glück war dann in der Datei alles auf Englisch.

    Also, keine sorge, ich spreche Deutsch, und ich komme auch aus Deutschland. :) ;)

    LG. Chris.

  • Zwei Sachen noch (bezieht sich alles auf den Client Script):

    Zeile 53 -> Woher nimmst du die Funktion ToMinutes her?
    Zeile 69 -> In der Funktion _Youtube_Load hast du die Variable $youtube_source nicht definiert

    Wieso zum Teufel hast du da zwei While Schleifen (und vorallem Schleife in Schleife)? Baue doch die Bedienung für das Beenden der GUI sowie der Ausführung der _Youtube_Stop Funktion in die erste Schleife.

    :thumbup:

  • ich hab mir das mal eben angeschaut

    die Api hat die gleichen Funktionen wie die UDF drin, daher ist das schonmal Bullshit, wenn ich raten müsste würde ich sagen du hast beide aus verschiedenen QUellen.
    Includes bitte immer mit <Youtube.au3> also in <>.

    Desweiteren müsstest du dich für eine entscheiden und dann nochmal umbauen, da stimmt die Hälfte nicht, doppelte Funktonen.

  • Includes bitte immer mit <Youtube.au3> also in <>.

    Nein - warum denn?
    Es gibt ganz bewusst zwei Varianten.
    Wenn in <> geschrieben wird ist die Suchreihenfolge nach der Datei

    • Include-Ordner des AutoIt-Interpreters
    • Alle Pfade welche in HKCU\Software\AutoIt v3\AutoIt\Include definiert sind
    • Skript-Verzeichnis

    Nimmt man die Anführungszeichen ist die Suchreihenfolge anders herum:

    • Skript-Verzeichnis
    • Alle Pfade welche in HKCU\Software\AutoIt v3\AutoIt\Include definiert sind
    • Include-Ordner des AutoIt-Interpreters

    Da es sich hier nicht um eine mitgelieferte UDF handelt, sondern um eine Datei welche im Skriptverzeichnis lagert ist die Variante mit den Anführungszeichen schlicht die bessere.

    christopher
    Weißt du was ein Minimalbeispiel ist?
    Dieses ist ein (in unserem Falle) Skript, welches den von dir beschriebenen Fehler reproduziert.
    Dieses sollte so gestaltet sein dass möglichst alles andere was nichts mit der Fehlerreproduzierung zu tun hat entfernt wurde.
    Es ist weiterhin direkt ohne weitere Änderung bei den potentiell Helfenden ausführbar, so dass diese sich gleich selbst ein Bild vom Problem machen können.
    Der größte Vorteil jedoch ist: Hierfür muss man erst einmal das Skript so weit auf das Wesentliche verkleinern, dass man während dieses Prozesses oftmals dadurch schon selbst auf die Lösung des Problems stößt.

    Kurz: Erstelle ein Minimalbeispiel - DANN können wir Dir wirklich helfen.

    Edit: Sorry bobekos - meinte christopher ;)

  • Hi!
    Ich habe den Fehler gefunden.
    Die doppelschleife war das problem, diese hab ich aber gemacht, um es zu ermöglichen das Player-Fenster zu schliessen ohne, dass das programm beendet wird, sondern wieder das andere GUI angezeigt wird...
    Wisst ihr da eine lösung?
    Und noch etwas:
    Ich habe das Skript etwas umgebaut, und die Player wiedergabe klappt auch gut.
    Ich habe über

    [autoit]


    controlclick()

    [/autoit]


    versucht, dass Flashplayer objekt zu fokussieren, aber dies gibt 0 zurück, ich weiss nicht warum.
    Und das über

    [autoit]


    MouseClick()

    [/autoit]


    zumachen ist ein wenig unprofessionell, zusätzlich wird dann das Vidio Pausiert.
    Geht das irgendwie das ganze so zu fokussieren das man das ganze mit der Tastertur bedienen kann?

    Ausserdem klappt zwar die Fenstertitel setzung, aber es ist der falsche titel, der kommt zwar auch in der Liste vor, aber meist am ende der Liste.
    Ein minimal beispiel kann ich erlich gesagt nicht schreiben, weil ich so gut wie keine ahnung habe, wie die Funktionen genau arbeiten. Grob umrissen ja, aber genau nicht.
    deswegen suche ich nach einem Tutorial o.ä. für das objekt orentierte programmieren für Autoit.
    Sorry, dass ich euch mit fragen bombadiere und das ganze wahrscheinlich nervig ist...
    :$
    Fals ihr mir einen rat geben könnt, bin ich sehr dankbar.
    hier also die aktuellste version des Codes (auch im anhang, aber nur die youtube client.au3, da die anderen Dateien ja gleich geblieben sind):
    [spoiler]

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <IE.au3>
    #include "YouTubeAPI.au3"
    #include "Youtube.au3"

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

    Global $oCollection

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

    Func ToMinutes($iSeconds)
    Local $iSec = Mod($iSeconds, 60)
    If $iSec < 10 Then $iSec = "0" & $iSec
    Return Floor($iSeconds / 60) & ":" & $iSec
    EndFunc ;==>ToMinutes

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

    $oIE = _IECreateEmbedded()
    $formMain = GUICreate("YouTube Client", 418, 466, 192, 164)

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

    $inpWord = GUICtrlCreateInput("test", 8, 8, 321, 21)
    GUICtrlSetState($inpWord, $GUI_FOCUS) ; Der Fokus ist auf diesem Element
    $btnSearch = GUICtrlCreateButton("Suche", 330, 7, 81, 23)
    $lswResults = GUICtrlCreateListView("Titel | Länge", 8, 32, 401, 393)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 320)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 60)
    $btnPlay = GUICtrlCreateButton("Wiedergabe", 8, 432, 401, 25)

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

    Dim $aItems[50]
    Dim $aVID[50]

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

    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnSearch
    For $i = 0 To 49
    GUICtrlDelete($aItems[$i])
    Next
    $oCollection = YouTube_SearchVideos(GUICtrlRead($inpWord), 50, 1, $YT_BY_VIEWS, $YT_LANG_GERMAN)
    ;Suche nach Video, (50 - max Ergebnisse und auf Deutsch)
    For $i = 0 To YouTube_GetVideosCount($oCollection) - 1
    YouTube_SelectIndex($oCollection, $i)
    ;wählt ein Vidio aus, zur verarbeitung
    $aItems[$i] = GUICtrlCreateListViewItem(StringReplace(YouTube_GetTitle($oCollection), "|", "") & "|" & ToMinutes(YouTube_GetDuration($oCollection)), $lswResults)
    $aVID[$i] = YouTube_GetVID($oCollection)
    ; für jedes gefundene Vidio die Vidio-ID ermitteln
    Next
    Case $btnPlay
    For $i = 0 To 49
    If GUICtrlRead($lswResults) = $aItems[$i] Then ExitLoop
    Next

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

    $vidio_title = YouTube_GetTitle($oCollection)
    $form_player = GUICreate($vidio_title, 600, 600, 100, 200)

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

    YouTube_SelectIndex($oCollection, $i) ; Wählt das aktive Objekt in der Sammlung
    $vidio_id = YouTube_GetVID($oCollection)
    $form_player = GUICreate($vidio_title, 600, 600, 100, 200)
    $oFlash = ObjCreate("ShockwaveFlash.ShockwaveFlash.11")
    $objPlayer = GUICtrlCreateObj($oFlash, 8, 40, 489, 393)
    GUISetState(@SW_SHOW)
    $oVideo = YouTube_GetVideo($vidio_id)
    $oContent = YouTube_GetContentFlash($oVideo)
    $oFlash.Movie = $oContent & "&autoplay=1" ;& "&controls=1"
    $controlclick = ControlClick($vidio_title,"",$objPlayer)

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

    $nMsg1 = GUIGetMsg()
    Switch $nMsg1
    Case $GUI_EVENT_CLOSE
    _Youtube_Stop($a_youtubeplayer)
    GUIDelete()
    EndSwitch

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

    EndSwitch
    WEnd

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

    LG. Chris.