【问题标题】:How can I search inside a youtube playlist?如何在 youtube 播放列表中搜索?
【发布时间】:2014-11-15 04:17:35
【问题描述】:

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

【问题讨论】:

    标签: youtube playlist


    【解决方案1】:

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

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

      【讨论】:

        【解决方案3】:

        不幸的是,youtube data API 3 不支持在播放列表中搜索,但作为一种变通方法,我们可以在用户的​​搜索中添加一个字符串,以便结果接近所需的结果,例如,在我的情况下,我已经为所有使用该播放列表名称的特定播放列表中的视频标题,然后我必须使用指定的播放列表名称为用户搜索查询添加前缀,唯一的缺点是我必须重命名所有视频以包含前缀。

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

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

        别忘了只搜索频道视频。

        【讨论】:

          猜你喜欢
          • 2011-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-10
          相关资源
          最近更新 更多