AS3 YouTube событие событие библиотеки - PullRequest
0 голосов
/ 09 августа 2010

Я пытаюсь построить свой проект поиска видео на YouTube в AS3 .. и нашел следующую ссылку ...

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 ]

1 голос
/ 02 декабря 2014

Гельмут Гранда упоминает, что его ссылки на документы очень старые, поэтому для всех, кто интересуется, есть более свежая документация:

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

Еще одна вещь, которую стоит отметить, если вы используете этоAPI заключается в том, что по состоянию на январь 2016 года Google официально отказался от поиска и встраивания из Flash и рекомендует разработчикам искать и воспроизводить видео с помощью API-интерфейса в i-Frame.

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

Цитата:

API проигрывателя IFrame позволяет встроить видеопроигрыватель YouTube на свой веб-сайт и управлять им с помощью JavaScript.В отличие от API проигрывателя Flash и JavaScript, которые включают в себя вставку объекта Flash на веб-страницу, API IFrame размещает содержимое в теге на вашей странице.Этот подход обеспечивает большую гибкость, чем ранее доступные API, поскольку он позволяет YouTube обслуживать проигрыватель HTML5, а не проигрыватель Flash для мобильных устройств, которые не поддерживают Flash

Однако, если ваше приложение Flash будет работать лучшеесли во Flash, чем в i-Frame, API проигрывателя все еще действительно функционирует после даты отсечения, и поиск может работать во Flash, если вы выполните URLRequest и проанализируете результаты в As3.Мой пример выглядит следующим образом:

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 ("trailers", "rating", pMaxSearchResults);

Это будет делатьYouTube видео поиск трейлеров на основе рейтинга.

1 голос
/ 09 августа 2010

Я не использовал эту библиотеку, но попытался загрузить ее и посмотреть на исходный код.К сожалению, исходный код не задокументирован, и это с 2008 года!

В любом случае, оглянувшись вокруг, вы увидите, что создатель дает вам два примера, которые охватывают оба события.Одно событие прослушивает пользовательский поиск, а другое - обычную библиотеку, которую вы найдете на домашней странице:

Data API AS3 - первое руководство

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

Приведенный выше пример охватывает пользовательский поиск, и когда вы прослушиваете событие, вы можете просмотреть результаты, чтобы отобразить их пользователю

API данных Youtube в AS3 готово!

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

В приведенном выше примере вы можете увидеть, как демо выполняет поиск ТОП-видео на Youtube, как только вы получите результаты, вы можете отобразить их для пользователя..

Итак, подведем итоги.getStandardFeed следует использовать, когда вы просматриваете Топ видео YouTube и т. п., а метод getVideos следует использовать при выполнении пользовательского поиска.

...