Fix fetching of large playlist

This commit is contained in:
Samantaz Fox 2021-03-18 23:11:46 +00:00
parent 3286328de4
commit fec82df451

View File

@ -441,17 +441,8 @@ def fetch_playlist_videos(plid, video_count, offset = 0, locale = nil, continuat
offset = initial_data["currentVideoEndpoint"]?.try &.["watchEndpoint"]?.try &.["index"]?.try &.as_i64 || offset offset = initial_data["currentVideoEndpoint"]?.try &.["watchEndpoint"]?.try &.["index"]?.try &.as_i64 || offset
end end
if video_count > 100
url = produce_playlist_url(plid, offset)
response = YT_POOL.client &.get(url)
initial_data = JSON.parse(response.body).as_a.find(&.as_h.["response"]?).try &.as_h
elsif offset > 100
return [] of PlaylistVideo
else # Extract first page of videos
response = YT_POOL.client &.get("/playlist?list=#{plid}&gl=US&hl=en") response = YT_POOL.client &.get("/playlist?list=#{plid}&gl=US&hl=en")
initial_data = extract_initial_data(response.body) initial_data = extract_initial_data(response.body)
end
return [] of PlaylistVideo if !initial_data return [] of PlaylistVideo if !initial_data
videos = extract_playlist_videos(initial_data) videos = extract_playlist_videos(initial_data)