Class: Bilibili::Video
Overview
bilibili video interfaces
Instance Attribute Summary
Attributes inherited from BilibiliBase
#http_client, #options
Instance Method Summary
collapse
#clean_cookie, #initialize, #load_cookie, #save_cookie
Instance Method Details
#download_video_by_bv(bv_id, options) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/bilibili_console/video.rb', line 80
def download_video_by_bv(bv_id, options)
urls = video_url_list(bv_id, options[:qn])
return nil if urls.empty?
urls = page_slice(urls, options[:start], options[:end], options[:page])
download_path = "#{File.expand_path(@options['download_path'].to_s, __dir__)}/#{bv_id}/"
url_array = []
urls.map { |url| download_file(url, download_path) }.each_with_index do |u, i|
same_part = same_part?(u, i)
url_array << u[:file_path]
combine_media(url_array, "#{download_path}#{u[:prefix]}.flv") unless same_part
end
end
|
#get_video_url(bv_id, cid, video_qn = '720') ⇒ Object
58
59
60
61
62
63
|
# File 'lib/bilibili_console/video.rb', line 58
def get_video_url(bv_id, cid, video_qn = '720')
qn = BilibiliBase.video_qn[video_qn]
url = "#{Api::Video::PLAY_URL}?bvid=#{bv_id}&cid=#{cid}&qn=#{qn}&fnval=0&fnver=0&fourk=1"
data = get_jsona(url)
data[:durl]
end
|
#video_page_list(bv_id) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/bilibili_console/video.rb', line 46
def video_page_list(bv_id)
return nil if bv_id.nil?
url = "#{Api::Video::PAGE_LIST}?bvid=#{bv_id}"
datas = get_jsona(url)
return nil if datas.nil?
datas.map do |d|
Bilibili::PageInfo.new(d)
end
end
|
#video_url_list(bv_id, video_qn = '720') ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/bilibili_console/video.rb', line 65
def video_url_list(bv_id, video_qn = '720')
result = []
page_list = video_page_list(bv_id)
return nil if page_list.nil?
page_list.each do |page|
get_video_url(bv_id, page.cid, video_qn).each do |down_url|
order = down_url[:order] < 10 ? "0#{down_url[:order]}" : down_url[:order]
result << { 'name': "#{page.part}_#{order}.flv", 'url': down_url[:url].to_s, 'prefix': page.part,
'order': "#{page.page}#{order}", 'bv': bv_id.to_s }
end
end
result
end
|