我正在尝试在AS3中构建我的YouTube视频搜索项目..我找到了以下链接......
他的图书馆有
YouTubeClient.getStandardFeed(…)
Event: StandardVideoFeedEvent.STANDARD_VIDEO_DATA_RECEIVED
.feed: VideoFeed
YouTubeClient.getVideos(…)
Event: VideoFeedEvent.VIDEO_DATA_RECEIVED
.feed: VideoFeed
我不确定这两者之间的区别......有人可以帮我解释一下吗?感谢..
答案 0 :(得分:1)
我没有使用过这个库,但是我下载了它并查看了源代码。不幸的是,源代码没有记录,它是从2008年开始的!
无论如何,在环顾四周之后,您可以看到创作者为您提供了两个涵盖这两个事件的示例。一个事件侦听自定义搜索,另一个事件侦听您可以在主页中找到的常规库:
Data 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视频,一旦获得结果,您就可以将其显示给用户。
所以回顾一下。当您查找YouTube热门视频等时,应使用getStandardFeed,并且在进行自定义搜索时应使用getVideos方法。
答案 1 :(得分:1)
Helmut Granda提到他与文档的链接非常陈旧,所以对于任何感兴趣的人,这里是最近的文档:
另外需要注意的是,如果您使用此API,则截至2016年1月,Google正式弃用Flash中的搜索和嵌入,并提倡开发人员使用i-Frame中的API搜索和播放视频。
https://developers.google.com/youtube/iframe_api_reference
引用:
IFrame播放器API可让您在自己的视频播放器上嵌入YouTube视频播放器 网站并使用JavaScript控制播放器。不同于Flash和 JavaScript播放器API,它们都涉及嵌入Flash对象 在您的网页上,IFrame API会将内容发布到您的标记上 页。这种方法比以前提供了更多的灵活性 可用的API因为它允许YouTube提供HTML5播放器 比不支持Flash的移动设备的Flash播放器
但是,如果你的Flash应用程序在Flash中比在i-Frame中更好,那么播放器API在截止日期之后仍然可以正常运行,如果你执行URLRequest并解析结果,搜索可以在Flash中运行在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(&#34; trailers&#34;,&#34; rating&#34;,pMaxSearchResults);
这会根据评分对YouTube进行视频搜索。