【发布时间】:2014-11-15 04:17:35
【问题描述】:
我需要知道 youtube API V3 是否支持在特定的 youtube 播放列表中进行搜索?还有其他方法吗?
【问题讨论】:
我需要知道 youtube API V3 是否支持在特定的 youtube 播放列表中进行搜索?还有其他方法吗?
【问题讨论】:
我已阅读有关播放列表请求的 YouTuBe API documentation,但它们不提供此类功能,但您可以使用此 npm module 来实现:
npm install youtube-playlist-search
或
yarn install youtube-playlist-search
在javascript上的使用方式是这样的:
var search = require('youtube-playlist-search');
var params = {
part: 'snippet,contentDetails',
maxResults: 25,
key: 'your_api_key'
};
search('searchTerm', params, function(err, videos) {
if(err) return console.log(err);
console.dir(videos);
});
或者你也可以 take a look here 我在 React 中使用它,代码类似于:
import _ from 'lodash';
import YTSearch from 'youtube-playlist-search';
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import SearchBar from './components/search_bar';
import VideoList from './components/video_list';
import VideoDetail from './components/video_detail';
class App extends Component {
constructor(props) {
super(props);
this.state = {
videos: [],
selectedVideo: null
};
this.key = process.env.REACT_APP_YTB_API_KEY_DEV
if (process.env.NODE_ENV === 'production') {
this.key = process.env.REACT_APP_YTB_API_KEY_PROD
}
this.params = {
part: 'snippet,contentDetails',
playlistId: 'PLH99prTh-VPqO7ld0o2Sny6bLxpf80Js0',
key: this.key
};
this.videoSearch('')
}
videoSearch(term) {
YTSearch(term, this.params, (err, videos) => {
this.setState({
videos: videos,
selectedVideo: videos[0]
});
});
}
render() {
const videoSearch = _.debounce((term) => {this.videoSearch(term)}, 300);
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<SearchBar onSearchTermChange={videoSearch}/>
<VideoDetail video={this.state.selectedVideo}/>
<VideoList
onVideoSelect={selectedVideo => this.setState({selectedVideo})}
videos={this.state.videos}/>
</div>
);
}
}
export default App;
【讨论】:
用于在 Youtube 频道的隐藏式字幕 (CC) 中进行全文搜索 您可以从频道下载所有字幕并在其中进行本地文本搜索:
$ youtube-dl --write-auto-sub --skip-download "https://www.youtube.com/channel/UC6oh54zIYKyW6hgBiZzLLsA"
这将下载大约 160 个 .vtt 文本文件
$ grep -i -C 2 'autumn' *.vtt
注意:当视频作者没有上传文字时,应使用选项--write-auto-sub。
否则使用--write-sub。
【讨论】:
不幸的是,youtube data API 3 不支持在播放列表中搜索,但作为一种变通方法,我们可以在用户的搜索中添加一个字符串,以便结果接近所需的结果,例如,在我的情况下,我已经为所有使用该播放列表名称的特定播放列表中的视频标题,然后我必须使用指定的播放列表名称为用户搜索查询添加前缀,唯一的缺点是我必须重命名所有视频以包含前缀。
播放列表名称:异国情调的汽车
搜索查询:异国情调的汽车 + 用户输入
别忘了只搜索频道视频。
【讨论】: