我正在尝试使用youtube api v3 php搜索...
我第一次使用这个API我是初学者...
我有3个问题;
1)如何在搜索列表下面显示分页编号?(每页50条结果)
2)视频持续时间如何显示在列表中?(3分20秒:秒)
3)如何订购viewCount
if ($_GET['q']) {
require_once 'src/Google_Client.php';
require_once 'src/contrib/Google_YoutubeService.php';
$DEVELOPER_KEY = 'my key';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$youtube = new Google_YoutubeService($client);
try {
$searchResponse = $youtube->search->listSearch('id,snippet', array(
'q' => $_GET['q'],
'maxResults' => 50,
'type' => "video",
));
foreach ($searchResponse['items'] as $searchResult) {
$videos .= '<li style="clear:left"><img src="'.$searchResult['snippet']['thumbnails']['default']['url'].'" style="float:left; margin-right:18px" alt="" /><span style="float:left">'.$searchResult['snippet']['title'].'<br />'.$searchResult['id']['videoId'].'<br />'.$searchResult['snippet']['publishedAt'].'<br />'.$item['contentDetails']['duration'].'</span></li>';
}
$htmlBody .= <<<END
<ul>$videos</ul>
END;
} catch (Google_ServiceException $e) {
$htmlBody .= sprintf('<p>A service error occurred: …Run Code Online (Sandbox Code Playgroud) 在我看来,如果您不是它的所有者,YouTube API 禁止下载视频字幕:
视频的字幕只能由该视频的所有者创建,检索,修改和删除.
上面的链接会导致YouTube API v2.0的文档被弃用,但似乎在v3.0中此政策保持不变.如果您尝试下载视频的标题,则会收到以下403错误:
与请求关联的权限不足以下载字幕轨道.该请求可能未得到适当授权,或者视频订单可能未启用此标题的第三方贡献.
在同一时间,你只需要API_KEY到列出任何的YouTube视频字幕没有任何授权(实例化对象的YouTube在此官方例子):
youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY,
new HttpRequestInitializer() {
public void initialize(HttpRequest request)
throws IOException {
}
}).setApplicationName("youtube-cmdline-search-sample").build();
CaptionListResponse captionListResponse = youtube
.captions()
.list("snippet", "jNhtbmXzIaM")
.setKey(API_KEY)
.execute();
List<Caption> captions = captionListResponse.getItems();
CaptionSnippet snippet;
for (Caption caption : captions) {
snippet = caption.getSnippet();
System.out.println("ID: " + caption.getId());
System.out.println("Name: " + snippet.getName());
System.out.println("Language: " + snippet.getLanguage());
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
那么YouTube API …
我们正在使用youtube数据api v3并且已经有一段时间没有任何问题了.最近,我们得到了这个403异常:
The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>.
Run Code Online (Sandbox Code Playgroud)
在谷歌开发者的控制台中,它表示我们仍然处于配额之下(目前它表示"单位/天为163,817的50,000,000").
我错过了有关配额如何运作的一些信息吗?
我正在构建一个扩展,它提出了很多请求.我正在处理的功能是显示观看播放列表所需的总时间.给定大小为1000的播放列表,我必须发出40个请求才能找到这些信息(50个视频在一个时间限制,第一次调用/ v3/playlistItems用于一组videoID,第二次调用/ v3 /视频用于持续时间信息) .据我所知,只有一个播放列表,我失去600个配额.每页加载.我知道,没有什么可以解决的,因为我每天允许50,000,000配额,但我想尽早优化.这也是一个速度问题.只需要一段时间就可以获得播放列表长度.
现在,ETags.出于某种原因,每当我向youtube的视频或播放列表项目的数据API发出请求时,我都会得到一个全新的Etag(大部分时间,我都有过返回相同ETag的情况),无论播放列表如何(我没有试过私人播放列表,还没有OAuth呢).我假设原因是播放列表中的某些地方正在发生变化,导致新的Etag非常快.看法?PlaylistItems甚至不返回视图!
以下是对通心粉播放列表的示例API调用.ETag总是与众不同!如果他们不工作,我该如何使用它们?它们是特定的,视频长度无法在请求之间发生变化.api键被省略,因为您可以创建自己的api密钥.
```
Playlist Items, give me video id's, page tokens, and Etag for playlist for items 100-150
https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&maxResults=50&playlistId=PLF-hTvh6KCehzImlI2pAKsOFPR62QZTv-&fields=etag%2Citems%2FcontentDetails%2CnextPageToken%2CprevPageToken&key={YOUR_API_KEY}&pageToken=CGQQAA
Videos, give me durations and Etag for these video ids
https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=SswxpqGX1F0,3Hy5BuFTBbI,ZnlW1fSXZZM,8sb_YOrReZ4,6IN_mupBjh8,VzoqsRLY5Qk,5m8H9YrPvPA,JdRbtGdR68E,hEzPBiYPsDU,bJuioKFYv-c,1N8O8OOG2_U,QDgqSL8nU5U,gP4gB45Z52M,pI1oB2y9c0M,WZGn5Vh_mc4,A0KpbS5WjSU,b0yoIOX8Bk0,5Y7iQt7vtOE,qIijCwjUApQ,RgHjqvznjxg,QzceROWtn5o,8z0VnMQFGR8,5olHoTWB1Hw,vz0T59Ql7fQ,LhktiZYQraU,WIuuZOD9ahI,rwEHW6GRH1Q,FjT1BpKvfgo,FRZL2yaZyZk,U5-vjCDwDUU,b21Lj9bfDWc,yox3-U7r_i8,rXJ5ph83Vrs,nXrk2finMcA,VfagTkQWHuI,K_ZaRAtZQOg,_JIcREsn9pU,y9WGvudeDAM,O08jNtrieI4,9UkEzW1AY7Y,jOaBdnYsobg,y7dSbhc-8h0,IfpPiCGcF8g,2rTRmb9nKbY,bHgv3A26O6Y,hFQmV-zvcbM,Osc4y45oQxw,GHusS6Yd5A8,T2Z3CuUWUQc,OPV-DopMqxs&fields=etag%2Citems%2FcontentDetails%2Fduration&key={YOUR_API_KEY}
```
Run Code Online (Sandbox Code Playgroud)
我想缓存这些数据.我正在考虑为播放列表的总视频制作额外的开始请求,因为这与播放列表的总时间长度直接相关.但这感觉就像很多逻辑.添加/删除了哪些视频?多少?如果它被添加到开头,我想要优化,我必须将前50个视频ID与我的缓存视频ID持续时间进行比较.如果它在中间某处改变了,我必须继续查询.也许缓存别的东西让这更容易?多个播放列表可以拥有相同的视频,播放列表可以不止一次拥有相同的视频,我不知道.也许没有办法查询整个播放列表,也许我应该将调用缓存到/ v3/videos.问题是我想优化对/ v3/playlistItems的调用,因为它是长的(占/ 3 /视频的3倍).
我的主要问题是:我如何缓存以优化获取播放列表的长度,我该怎么做,以及ETag的内容是什么?
这是我为youtube api获取访问令牌和刷新令牌的工作流程.我正在生成带参数的授权网址
access_type = offline,response_type = code,redirect_uri = uri,scope = scopes,state = state,client_id = id
从授权网址我收到验证码,然后我使用这些参数使用授权网址中的代码生成另一个网址来获取access_token和refresh_token
代码:code,client_id:CLIENT_ID,client_secret:CLIENT_SECRET,redirect_uri:serviceCallback,state:state.callback,grant_type:"authorization_code"
据我所知,用户应该只完成一次这个过程,然后它应该是自动的.我的问题是我总是需要完成授权,并且我总是获得新的access_token和refresh_token,而不是根据请求强制它.
这是我获取身份验证网址的代码部分
getAuthUrl: function(scopes, applicationCallback, serviceCallback, siteId,
selectChannel, websiteUrl) {
var requestedClientId = CLIENT_ID;
var scopess =
"https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/userinfo.email " +
scopes.replace(",", " ");
return "https://accounts.google.com/o/oauth2/auth?" +
"access_type=offline" +
"&response_type=code" +
/*"&approval_prompt=auto" +*/
"&redirect_uri=" + serviceCallback +
"&scope=" + scopes +
"&state=" + JSON.stringify({
service: NAME,
callback: applicationCallback,
scopes: scopes,
siteId: siteId,
selectChannel: selectChannel,
websiteUrl: websiteUrl
}) +
"&client_id=" + requestedClientId;
}, …Run Code Online (Sandbox Code Playgroud) YouTube施加以下配额费用限制(列出了默认值):
最后限制的含义是什么?每100秒的配额如何超过每天的总配额?
我们正在请求来自youtubes api的评论.直到今天早些时候,一切都按预期工作.
https://www.googleapis.com/youtube/v3/commentThreads https://developers.google.com/youtube/v3/docs/commentThreads/list
但是几个小时前,似乎所有评论都发生了变化.如果我们请求相同的数据,则返回相同注释的新ID.
昨天返回值的示例:
{
"snippet" : {
"updatedAt" : "2017-12-02T15:25:18.000Z",
"publishedAt" : "2017-12-02T15:25:18.000Z",
"likeCount" : 0,
"viewerRating" : "none",
"canRate" : true,
"textOriginal" : "Wer cool wenn ihr das auch bei der linie 9 nach königsforst machen könnt",
"textDisplay" : "Wer cool wenn ihr das auch bei der linie 9 nach königsforst machen könnt",
"videoId" : "HM9HTudhtI8",
"authorChannelId" : {
"value" : "UC65X_3QoSnkPiKSnuCX1Eqg"
},
"authorChannelUrl" : "http://www.youtube.com/channel/UC65X_3QoSnkPiKSnuCX1Eqg",
"authorProfileImageUrl" : "https://yt3.ggpht.com/-pC2fJDx46os/AAAAAAAAAAI/AAAAAAAAAAA/koDhQIPnvF0/s28-c-k-no-mo-rj-c0xffffff/photo.jpg",
"authorDisplayName" : "Dani stayler 04"
},
"id" …Run Code Online (Sandbox Code Playgroud) 感谢您抽时间阅读.我对如何使用YouTube API插入评论感到困惑.我是使用API的新手,所以我不太清楚他们在文档中要做的事情.
我已经验证使用用户谷歌登录功能适用于iOS与范围
"https://www.googleapis.com/auth/youtube.force-ssl"
Run Code Online (Sandbox Code Playgroud)
这是插入评论所必需的.但是现在,我必须插入评论并且(就像我说的那样)我不明白该怎么做,因为我必须在请求体中提供资源.我正在使用Alamofire作为请求,而Swift 4作为我的语言.如果有人能帮助我,我将非常感激.
即使明确要求,Youtube的频道列表API也不会返回brandingSettings:https://www.googleapis.com/youtube/v3/channels?part = brandingSettings &id = UBJ -gg-0xws8J6PKfY6DBLzg&key = 返回此信息:
{
"kind": "youtube#channelListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/hqQ5f5obTKYUNURbAaBo87W-LAw\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#channel",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/EEjleDhJYQadoLAXlnHS41MfcRk\"",
"id": "UCJ-gg-0xws8J6PKfY6DBLzg"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是一个问题,还是永久改变?
我基于此示例(https://developers.google.com/youtube/v3/quickstart/js)在内部使用的Web解决方案来检索YouTube视频统计信息现在无法正常工作。不知道确切的时间是什么,但是几个月前它就可以工作了。
我现在尝试运行未经编辑的示例代码(当然,除了调整CLIENT_ID之外),而且我得到的是完全相同的错误:
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured. YouTube Data API has not been used in project 123 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/youtube.googleapis.com/overview?project=123 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"extendedHelp": "https://console.developers.google.com/apis/api/youtube.googleapis.com/overview?project=123" } ], "code": 403, "message": "Access Not Configured. YouTube Data API has not been used in project 123 before or it is disabled. …Run Code Online (Sandbox Code Playgroud) youtube-data-api ×10
youtube-api ×8
youtube ×4
alamofire ×1
caching ×1
etag ×1
google-oauth ×1
java ×1
javascript ×1
oauth ×1
oauth-2.0 ×1
quota ×1
swift ×1