2010-08-09 6 views
0

내가 .. AS3 내 유튜브 동영상 검색 프로젝트 구축을 위해 노력하고 있는데 다음과 같은 링크를 발견 ...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 

있다 나는이 둘의 차이를 확신하지 못한다 ... 누군가 나를 위해 그것을 설명 할 수 있을까? 고마워.

답변

1

나는이 라이브러리를 사용하지 않았지만 그것을 다운로드하고 소스 코드를 살펴 보았다. 불행히도 소스 코드는 문서화되어 있지 않으며 2008 년부터 있습니다!

아무리 보아도 주위를 둘러 본 후에 제작자가 두 가지 이벤트를 모두 다루는 두 가지 예를 볼 수 있습니다. 하나의 이벤트는 사용자 정의 검색을 수신하고 다른 하나는 홈페이지에서 찾을 것입니다 정기적 라이브러리를 수신합니다

데이터 API AS3 - 첫 번째 튜토리얼은

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

예는 위의 커버 맞춤 검색을 사용하고 이벤트를 청취하면 결과를 검색하여 사용자에게 표시 할 수 있습니다.

AS3의 Youtube Data API가 준비되었습니다. 당신은 결과를 얻을 일단 당신이 데모는 유튜브에서 최고의 비디오에 대한 검색을 수행하는 방법을 볼 수 있습니다 위의 예에서

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

, 당신은 사용자에게 표시 할 수 있습니다.

그래서 요령을 되풀이합니다. YouTube Top 동영상 등을 검색 할 때 getStandardFeed를 사용해야하며 맞춤 검색을 수행 할 때 getVideos 메서드를 사용해야합니다.

+0

나중에 알고 있습니다 ... 조금 오래되었습니다 .... 나를 찔러 주셔서 감사합니다 ..... + 1 – FlyingCat

1

헬무트 란다는 관심있는 사람들을 위해, 여기에 최근 문서 그래서 워드 프로세서 그의 링크, 아주 오래된 것을 언급 :이 API를 사용하는 경우

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

또 한가지주의해야 할,있는 그대로 그 Google은 2016 년 1 월에 Flash에서 검색 및 퍼가기를 공식적으로 중단했으며 개발자는 i-Frame에서 API를 사용하여 동영상을 검색하고 재생할 것을지지합니다.

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

인용구 :

iframe을 플레이어 API는 당신이 당신의 웹 사이트에 YouTube 동영상 플레이어를 내장하고 자바 스크립트를 사용하여 플레이어를 제어 할 수 있습니다. 플래시 및 자바 스크립트 플레이어 API와 달리 플래시 객체를 웹 페이지에 삽입하는 것과 관련하여 IFrame API는 콘텐츠를 페이지의 태그에 게시합니다.이 Flash 응용 프로그램이 더 나은 경우 작동한다면,

그러나 플래시를 지원하지 않는 모바일 기기에 플래시 플레이어보다는 를 HTML5 버전의 플레이어를 제공하기 위해 유튜브를 수 있기 때문에이 방법은 이전 가능한 API보다 더 많은 유연성을 제공 Flash 내에서 i-Frame보다 플레이어 API는 실제로 차단 날짜를 지나서 작동하며 URLRequest를 수행하고 As3에서 결과를 구문 분석하면 Flash 내에서 검색이 작동합니다. 내 예는 다음과 같습니다이 예에서

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 동영상을 검색합니다.

+1

이 링크가 질문에 대답 할 수 있지만 답변의 필수 부분을 포함하는 것이 좋습니다 여기에 참조 용 링크를 제공하십시오. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+1

답변을 제공하지 않고 Helmut Granda의 이전 링크를 수정하기위한 링크 만 게시했습니다. 필자는 API에 대한 최근의 변경 사항과 Google에서 도입 한 새로운 제한 사항으로 인해 승인 된 답변을 다소 유용하지 않게 만들려고 노력한 사람에게 유용 할 것으로 생각되는 정보를 추가하여 내 답변을 업데이트했습니다. –