加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用youtube_it gem按频道获取视频

发布时间:2020-12-17 02:06:48 所属栏目:百科 来源:网络整理
导读:如何使用youtube_it gem for Ruby on Rails从youtube频道( https://www.youtube.com/channel/UCwHnsUEYrQUTUxC4dvrv0QQ)获取视频? 或者你能告诉我另一个可以帮助我的宝石吗? 解决方法 这就是我的方式. 我在config / initializers / youtube_it.rb中有这个
如何使用youtube_it gem for Ruby on Rails从youtube频道( https://www.youtube.com/channel/UCwHnsUEYrQUTUxC4dvrv0QQ)获取视频?

或者你能告诉我另一个可以帮助我的宝石吗?

解决方法

这就是我的方式.

我在config / initializers / youtube_it.rb中有这个:

$youtube_it = YouTubeIt::Client.new(dev_key: ENV['YOUTUBE_KEY'])

获取视频的第一页:

query = {
      author: channel_url.split('/').last,order_by: 'published',page: 1,}

    # scraping from newesr to oldest
    videos = $youtube_it.videos_by(query).videos

这里有一个刮擦的例子,你可以安排一个工作来定期调用scrape方法.

该方法首先从最新的视频刮到最旧的视频.然后将backward_scrape_done设置为true,然后仅搜索新视频.

class Import < ActiveRecord::Base

  def scrape
    query = {
      author: channel_url.split('/').last,}

    query[:page] = cursor

    # scraping from newesr to oldest
    videos = fetch_videos(query)


    if videos.count == 0
      # we've reached the end
      self.backward_scrape_done = true
      self.cursor = 0
    end

    for video in videos
      add_video video
    end

    # next time scrape next page
    self.cursor = cursor + 1

  ensure
    self.scraped_at = Time.now
    self.save!
  end

  def fetch_videos(query)
    $youtube_it.videos_by(query).videos
  end


  def add_video video
    url = video.player_url.
      gsub(/[?&]feature=youtube_gdata_player/,'')

    # skip this video if its already there
    if Video.where(youtube_url: url).first
      self.cursor = 0
      save
      return
    end

    video = YoutubeVideo.create!(
      title: video.title,duration: video.duration,description: video.description,youtube_url: url,)
  end
end

希望有所帮助!

更新:由于youtube很快就会摆脱它的API V2,你应该切换到支持最新API的东西,比如我现在使用的yt gem:

https://github.com/Fullscreen/yt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读