mirror of https://github.com/iv-org/invidious.git
Add logic to fetch transcripts from label
Although available this method should be discouraged as it requires an extra request to YouTube to get caption data in order to map label -> language code and auto-generated status, which are needed to fetch transcripts.
This commit is contained in:
parent
7693f61e44
commit
b2f5b1eb68
|
@ -421,10 +421,11 @@ module Invidious::Routes::API::V1::Videos
|
|||
|
||||
id = env.params.url["id"]
|
||||
lang = env.params.query["lang"]?
|
||||
label = env.params.query["label"]?
|
||||
auto_generated = env.params.query["autogen"]? ? true : false
|
||||
|
||||
# Return all available transcript options when none is given
|
||||
if !lang
|
||||
if !label && !lang
|
||||
begin
|
||||
video = get_video(id)
|
||||
rescue ex : NotFoundException
|
||||
|
@ -462,6 +463,26 @@ module Invidious::Routes::API::V1::Videos
|
|||
return response
|
||||
end
|
||||
|
||||
# If lang is not given then we attempt to fetch
|
||||
# the transcript through the given label
|
||||
if lang.nil?
|
||||
begin
|
||||
video = get_video(id)
|
||||
rescue ex : NotFoundException
|
||||
return error_json(404, ex)
|
||||
rescue ex
|
||||
return error_json(500, ex)
|
||||
end
|
||||
|
||||
target_transcript = video.captions.select(&.name.== label)
|
||||
if target_transcript.empty?
|
||||
return error_json(404, NotFoundException.new("Requested transcript does not exist"))
|
||||
else
|
||||
target_transcript = target_transcript[0]
|
||||
lang, auto_generated = target_transcript.language_code, target_transcript.auto_generated
|
||||
end
|
||||
end
|
||||
|
||||
params = Invidious::Videos::Transcript.generate_param(id, lang, auto_generated)
|
||||
|
||||
begin
|
||||
|
|
Loading…
Reference in New Issue