Выясните целевой URL YouTube при загрузке видео на YouTube через гем youtube_it с помощью Rails - PullRequest
0 голосов
/ 12 мая 2011

Я получил отличную работу youtube_it в сочетании с Paperclip для обработки загрузки видео через браузер, используя следующий код:

videos_controller.rb

  def create
    @video = Video.new(params[:video])
    if @video.save
      uploader = YouTubeIt::Upload::VideoUpload.new( :username => AppConfig[:youtube_user], 
                                                     :password =>  AppConfig[:youtube_pass], 
                                                     :dev_key => AppConfig[:youtube_api_key])
      uploader.upload open( params[:video][:attachment] ), :title => @video.title,
                                                           :description => @video.description,
                                                           :category => 'some category',
                                                           :keywords => ['some keyword 1', "some keyword 2"]
      @video.deliver_video_notification
      flash[:notice] = 'Your video is under review for approval.<br/> Please check back in 48 hours.'
      redirect_to videos_url
    else
      @errors = @video.errors
      @current_video = params[:v].blank? ? Video.newest : Video.find(params[:v])
      render :action => :index
    end
  end

Однако, как только видео загружено, я понятия не имею, какой URL YouTube создал для видео, не входя вручную на канал YouTube и не просматривая его. Я не видел никакого обратного вызова в журналах или в файле response.body, который выявил пункт назначения. Я хотел бы программно сохранить место назначения в каком-то методе after_save. Как он работает сейчас, он сохраняет видеообъект, а после сохранения загружает видео на YouTube.

Ответы [ 2 ]

3 голосов
/ 09 июля 2011

Метод upload возвращает YouTubeIt::Model::Video, который имеет атрибут player_url.Так что просто поймайте возвращаемое значение из метода upload и вызовите player_url для этого, и вуаля, у вас есть URL для видео.Для получения списка других атрибутов, которые имеет модель, проверьте исходный код .

Пример:

def create
  @video = Video.new(params[:video])
  if @video.save
    uploader = YouTubeIt::Upload::VideoUpload.new( :username => AppConfig[:youtube_user], 
                                                   :password =>  AppConfig[:youtube_pass], 
                                                   :dev_key => AppConfig[:youtube_api_key])
    uploaded_video = uploader.upload open( params[:video][:attachment] ), :title => @video.title,
                                                         :description => @video.description,
                                                         :category => 'some category',
                                                         :keywords => ['some keyword 1', "some keyword 2"]

    puts uploaded_video.player_url # This will print the URL to the log

    @video.deliver_video_notification
    flash[:notice] = 'Your video is under review for approval.<br/> Please check back in 48 hours.'
    redirect_to videos_url
  else
    @errors = @video.errors
    @current_video = params[:v].blank? ? Video.newest : Video.find(params[:v])
    render :action => :index
  end
end
0 голосов
/ 06 июля 2011

Как насчет получения списка видео, загруженных пользователем, и выбора самого последнего?

$ client.my_videos

https://github.com/kylejginavan/youtube_it

...