代码之家  ›  专栏  ›  技术社区  ›  FlyingCat

AS3 youtube库事件问题

  •  0
  • FlyingCat  · 技术社区  · 14 年前

    我试图建立我的视频搜索项目在AS3的youtube。。我找到了以下链接。。。

    http://blog.martinlegris.com/2008/02/20/youtube-data-api-as3-youtubeclient-functions-associated-events/

    他的图书馆

    YouTubeClient.getStandardFeed(…)
    Event: StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED
    .feed: VideoFeed
    
    YouTubeClient.getVideos(…)
    Event: VideoFeedEvent.VIDEO_DATA_RECEIVED
    .feed: VideoFeed
    

    我不确定这两者的区别…有人能给我解释一下吗?谢谢。。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Helmut Granda    14 年前

    我没有用过这个库,但我试着下载了它,并查看了源代码。不幸的是,源代码没有文档记录,它是从2008年!

    http://blog.martinlegris.com/2008/02/19/youtube-data-api-as3-first-tutorial/

    上面的示例介绍了一个自定义搜索,当您侦听事件时,可以扫描结果以向用户显示它们

    http://blog.martinlegris.com/2008/02/15/youtube-data-api-in-as3-is-ready/

    在上面的示例中,您可以看到演示如何搜索Youtube中的顶级视频,一旦您得到结果,就可以将它们显示给用户。

    所以我来回顾一下。在查找YouTube热门视频或类似视频时应使用getStandardFeed,在进行自定义搜索时应使用getVideos方法。

        2
  •  1
  •   Carl Lydon    9 年前

    Helmut Granda提到,他与文档的链接非常古老,因此对于任何感兴趣的人,这里有更新的文档:

    http://blog.martinlegris.com/2010/05/28/sample-code-using-the-youtube-as3-api-with-the-youtube-player-api/

    如果您使用此API,另一件需要注意的事情是,从2016年1月起,Google正式否决了Flash中的搜索和嵌入,并主张开发人员使用i-Frame中的API搜索和播放视频。

    https://developers.google.com/youtube/iframe_api_reference

    引用:

    IFrame player API允许您在服务器上嵌入YouTube视频播放器 网站和控制播放器使用JavaScript。不像闪光灯和 JavaScript播放器api,两者都涉及在 在您的网页上,iframeapi将内容发布到 第页。这种方法比以前的方法提供了更多的灵活性

    package {
        import flash.display.*;
        import flash.events.*;
        import flash.display.MovieClip;
        import flash.display.Stage;
        import flash.media.Sound;
        import flash.net.URLRequest;
        import flash.system.Security;
        import flash.system.LoaderContext;
        import flash.system.ApplicationDomain;
        import flash.system.SecurityDomain;
        import flash.events.KeyboardEvent;
        import flash.external.ExternalInterface;
        import flash.net.URLRequest;
        import flash.net.navigateToURL;
        import flash.net.URLLoader;
        import flash.net.URLRequestHeader;
        import flash.net.URLRequestMethod;
        import flash.events.*;
    
        public class theaterYouTube3 extends MovieClip {
            public var pRoot:MovieClip = null;
            private var pSearchDataResultArray:Array = [];
            private var pSearchKey:String = "PutYourSearchKeyHere";
            private var pMaxSearchResults:int = 20;
    
    
            public function theaterYouTube3():void {
                traceOut("init");
                //date, rating, relevance, viewCount
                doYouTubeSearchSearch("trailers", "rating", pMaxSearchResults);
            }
            //
            private function doYouTubeSearchSearch(searchTerm:String, searchOrder:String, maxResults:int) {
                var request:URLRequest=new URLRequest();
                //request.url = "https://www.googleapis.com/youtube/v3/search?safeSearch=strict&part=snippet&q=" + searchTerm+ "&maxResults="+maxResults+"&key="+pSearchKey;
                request.url = "https://www.googleapis.com/youtube/v3/search?safeSearch=strict&type=video&part=snippet&q=" + searchTerm+ "&order=" + searchOrder+"&maxResults="+maxResults+"&key="+pSearchKey
                request.requestHeaders = [new URLRequestHeader("Content-Type","application/json")];
                request.method = URLRequestMethod.GET;
                var loader:URLLoader=new URLLoader();
                loader.addEventListener(Event.COMPLETE, searchDataRecieved);
                //loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, notAllowed);
                //loader.addEventListener(IOErrorEvent.IO_ERROR, notFound);
                loader.load(request);
            }
            //
            private function searchDataRecieved(event:Event):void{
                trace("search data received");
                var vidsData:String = event.target.data;
                parseVideoSearchData(vidsData);
            }
            //
            private function parseVideoSearchData(vidsDataString:String){
                pSearchDataResultArray = [];
                var tempArray:Array = vidsDataString.split('"items":');
                if (tempArray.length ==0){
                    parseVideoSearchDataError("no data");
                }
                vidsDataString = tempArray[1];
                vidsDataString=vidsDataString.split("{\n").join("");
                vidsDataString=vidsDataString.split("\n}").join("");
                vidsDataString=vidsDataString.split("\n}").join("");
                vidsDataString=vidsDataString.split("},\n").join("");
                vidsDataString=vidsDataString.split("}\n").join("");
                //trace(vidsDataString);
                tempArray = vidsDataString.split('"kind": "youtube#searchResult"');
                for (var i = 1; i< tempArray.length; i++){
                    var resultString:String = tempArray[i];
                    var vid_Id:String = extractVideoId(resultString);
                    var vid_title:String = extractVideoTitle(resultString);
                    var vid_thumb:String = "https://i.ytimg.com/vi/" + vid_Id + "/mqdefault.jpg";
                    var dataSet:Array = [vid_Id, vid_title, vid_thumb];
                    pSearchDataResultArray.push(dataSet);
                    traceOut("dataSet = \r" + dataSet + "\r");
                }
            }
            //
            private function extractVideoId(sourceString:String):String{
                //trace(sourceString);
                var parseArray1:Array = sourceString.split('"videoId":');
                var split1:String = parseArray1[1];
                var parseArray2:Array = split1.split('"');
                var itemValue:String = parseArray2[1];
                return (itemValue);
            }
            //
            private function extractVideoTitle(sourceString:String):String{
                var parseArray1:Array = sourceString.split('"title":');
                var split1:String = parseArray1[1];
                var parseArray2:Array = split1.split(",");
                var itemValue:String = parseArray2[0];
                return (itemValue);
            }
            //
            private function parseVideoSearchDataError (error:String):void{
                trace("parseVideoSearchDataError = " + error);
            }
            //
            private function traceOut(txt):void {
                trace("THEATER: " + txt);
                //traceLogin(txt);
            }
        }
    }
    

    在本例中,可以调用:

    doYouTubeSearchSearch(“拖车”,“评级”,pMaxSearchResults);

    这将在youtube上根据收视率搜索预告片。

    推荐文章