如何在youtube播放列表中搜索?

时间:2014-09-20 20:36:29

标签: youtube playlist

我需要知道youtube API V3是否支持在特定的YouTube播放列表中进行搜索?还有其他办法吗?

3 个答案:

答案 0 :(得分:3)

用于在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

答案 1 :(得分:2)

我已阅读有关播放列表请求的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;

答案 2 :(得分:1)

不幸的是,youtube数据API 3不支持在播放列表中进行搜索,但作为一种解决方法,我们可以在用户的​​搜索中添加一个字符串,以便结果接近所需的内容,例如我的前缀为全部具有该播放列表名称的特定播放列表中的视频标题然后我必须使用指定的播放列表名称为用户搜索查询添加前缀,唯一的缺点是我必须重命名所有视频以包含前缀。

播放列表名称:异国情调的汽车

搜索查询:异国情调的车+用户输入

不要忘记只搜索频道视频。