Javascript 获取视频列表youtube api
因此,我尝试创建一个web应用程序,当您插入搜索时,它会使用JSON从youtube API获取数据,并呈现一个与您的搜索匹配的视频列表。当它检索时,它得到的是一些字母和数字答案,而不是视频列表。任何方向正确的帮助都将不胜感激。这是它的HTML:Javascript 获取视频列表youtube api,javascript,json,ajax,forms,youtube-api,Javascript,Json,Ajax,Forms,Youtube Api,因此,我尝试创建一个web应用程序,当您插入搜索时,它会使用JSON从youtube API获取数据,并呈现一个与您的搜索匹配的视频列表。当它检索时,它得到的是一些字母和数字答案,而不是视频列表。任何方向正确的帮助都将不胜感激。这是它的HTML: <div class="search-box-container"> <form action="#" class="js-search-form search-box"> <label f
<div class="search-box-container">
<form action="#" class="js-search-form search-box">
<label for="query"></label>
<input type="text" class="js-query search-form" placeholder="Search me">
<button type="submit" class="button">Search</button>
</form>
</div>
<h2>Results</h2>
<div class="js-search-results">
</div>
搜寻
结果
这是它的JS/Jquery:
const YOUTUBE_SEARCH_URL =
'https://www.googleapis.com/youtube/v3/search';
`const key = 'key'//(hidden for privacy concerns);`
function getDataFromApi(searchTerm, callback) {
const query = {
part: 'snippet',
key: key,
q: `${searchTerm} in:name`,
}
$.getJSON(YOUTUBE_SEARCH_URL, query, callback);
}
function renderResult(result) {
return `
<div>
<h2>
<a class="js-result-name" href="http//www.youtube.com/watch?v=${
result.id.videoId}" target="_blank">${result.id.videoId}</a></h2>
</div>
`;
}
function displayYoutubeSearchData(data) {
console.log(data);
const results = data.items.map((item, index) => renderResult(item));
$('.js-search-results').html(results);
}
function watchSubmit() {
$('.js-search-form').submit(event => {
event.preventDefault();
const queryTarget = $(event.currentTarget).find('.js-query');
const query = queryTarget.val();
queryTarget.val("");
getDataFromApi(query,displayYoutubeSearchData );
});
}
$(watchSubmit);
const YOUTUBE\u SEARCH\u URL=
'https://www.googleapis.com/youtube/v3/search';
`const key='key'//(出于隐私考虑而隐藏)`
函数getDataFromApi(searchTerm,回调){
常量查询={
部分:'代码片段',
钥匙:钥匙,
q:${searchTerm}in:name`,
}
$.getJSON(YOUTUBE\u搜索\u URL、查询、回调);
}
函数renderResult(结果){
返回`
`;
}
函数显示YouTubeSearchData(数据){
控制台日志(数据);
const results=data.items.map((项,索引)=>renderResult(项));
$('.js搜索结果').html(结果);
}
函数watchSubmit(){
$('.js搜索表单')。提交(事件=>{
event.preventDefault();
const queryTarget=$(event.currentTarget.find('.js query');
const query=queryTarget.val();
queryTarget.val(“”);
getDataFromApi(查询、显示YouTubeSearchData);
});
}
$(提交);
你就快到了:这只是一个打字错误 查看
renderResult()
方法返回的模板文本中的href
属性
href="http//www.youtube.com/watch?v=${result.id.videoId}"
注意格式错误的方案(http/
vshttps://
)
有一点背景:
YouTube API返回与API请求中指定的查询参数匹配的搜索结果集合(即,代码中的对象数组,data.items
)
每个项都包含一个具有videoId
属性的id
对象。这就是你在问题中提到的“字母数字答案”。将data.items
映射到result
HTML模板数组后,您将使用${result.id.videoId}
读取该视频id。然后将YouTube观看URL与视频id连接起来
您应该在中检查搜索结果的JSON结构。除了
id.videoId
,它还包含更多有用的信息。例如,您可能更愿意使用${result.snippet.title}
而不是字母数字videoId
向用户显示视频的标题 你能举一个你得到答案的例子吗?嗨,大卫,我贴出了我收到的答案search@Gianina我猜你已经在点击后获得链接并重定向到youtube,不是吗?@Viney不确定我得到的是什么,因为点击后会重定向到“未找到”,你得到的是有效视频的视频id,例如RnBT9uUYb1w-->。所以你只需要使用它们来弥补错误链接。如果你想嵌入它们,那就开始定制你想要的方式,然后在你的代码中使用html。谢谢你,这就是我要展示的,url检索到的标题。我想它可能正在检索正确的ingo(视频ID),但我需要的是title@GianinaSkarlett-你拿到了吗?链接正常吗?您是用${result.snippet.title}
获得标题的吗?非常感谢!是的。现在我正在用它渲染缩略图@GianinaSkarlett-不客气!缩略图位于${result.snippet.thumbnails}
中。我想您可以使用${result.snippet.thumbnails.default.url}
获得默认值。谢谢@David!我会告诉你的!