Class: YoutubeVideo::Video

Inherits:
Object
  • Object
show all
Defined in:
lib/YPBT/video.rb

Overview

Main class to setup a Video

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data:) ⇒ Video

Returns a new instance of Video.



11
12
13
14
15
16
17
18
19
# File 'lib/YPBT/video.rb', line 11

def initialize(data:)
  @id = data['id']
  @title = data['snippet']['title']
  @description = data['snippet']['description']
  @dislike_count = data['statistics']['dislikeCount'].to_i
  @like_count = data['statistics']['likeCount'].to_i
  @view_count = data['statistics']['viewCount'].to_i
  @duration = data['contentDetails']['duration']
end

Instance Attribute Details

#comment_countObject (readonly)

Returns the value of attribute comment_count.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def comment_count
  @comment_count
end

#descriptionObject (readonly)

Returns the value of attribute description.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def description
  @description
end

#dislike_countObject (readonly)

Returns the value of attribute dislike_count.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def dislike_count
  @dislike_count
end

#like_countObject (readonly)

Returns the value of attribute like_count.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def like_count
  @like_count
end

#titleObject (readonly)

Returns the value of attribute title.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def title
  @title
end

#view_countObject (readonly)

Returns the value of attribute view_count.



8
9
10
# File 'lib/YPBT/video.rb', line 8

def view_count
  @view_count
end

Class Method Details

.find(video_id:) ⇒ Object



33
34
35
36
# File 'lib/YPBT/video.rb', line 33

def self.find(video_id:)
  video_data = YtApi.video_info(video_id)
  new(data: video_data)
end

Instance Method Details

#commentsObject



21
22
23
24
25
26
# File 'lib/YPBT/video.rb', line 21

def comments
  # contain only the comments which have time tag.
  return @comments if @comments
  raw_comments = YtApi.time_tags_info(@id)
  @comments = raw_comments.map { |comment| Comment.new(data: comment) }
end

#embed_urlObject



28
29
30
31
# File 'lib/YPBT/video.rb', line 28

def embed_url
  return @embed_url if @embed_url
  @embed_url = "https://www.youtube.com/embed/#{@id}"
end