summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvallinn <41585298+Svallinn@users.noreply.github.com>2021-03-26 03:52:28 +0000
committerSvallinn <41585298+Svallinn@users.noreply.github.com>2021-03-26 03:52:28 +0000
commitc5ccefe6f7c127625c821d3b6836c23962a2b5b0 (patch)
treecbb71b9c264aea62be56aff53c9c8680c4dd1c49
parente248e7ebaf2ec32d790f7e88a96421cc2d418c9d (diff)
downloadinvidious-c5ccefe6f7c127625c821d3b6836c23962a2b5b0.tar.gz
invidious-c5ccefe6f7c127625c821d3b6836c23962a2b5b0.tar.bz2
invidious-c5ccefe6f7c127625c821d3b6836c23962a2b5b0.zip
Parse response to JSON instead of using regex
-rw-r--r--src/invidious/channels.cr12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/invidious/channels.cr b/src/invidious/channels.cr
index 30138d82..2d5b4475 100644
--- a/src/invidious/channels.cr
+++ b/src/invidious/channels.cr
@@ -358,16 +358,20 @@ end
def fetch_channel_playlists(ucid, author, continuation, sort_by)
if continuation
response_json = request_youtube_api_browse(continuation)
- result = JSON.parse(response_json.match(/"continuationItems": (?<items>\[.*\]),/m).try &.["items"] || "{}")
+ # result = JSON.parse(response_json.match(/"continuationItems": (?<items>\[.*\]),/m).try &.["items"] || "{}")
+ result = JSON.parse(response_json)
+ continuationItems = result["onResponseReceivedActions"]?
+ .try &.[0]["appendContinuationItemsAction"]["continuationItems"]
- return [] of SearchItem, nil if result.size == 0
+ return [] of SearchItem, nil if !continuationItems
items = [] of SearchItem
- result.as_a.select(&.as_h.has_key?("gridPlaylistRenderer")).each { |item|
+ continuationItems.as_a.select(&.as_h.has_key?("gridPlaylistRenderer")).each { |item|
extract_item(item, author, ucid).try { |t| items << t }
}
- continuation = result.as_a.last["continuationItemRenderer"]?.try &.["continuationEndpoint"]["continuationCommand"]["token"].as_s
+ continuation = continuationItems.as_a.last["continuationItemRenderer"]?
+ .try &.["continuationEndpoint"]["continuationCommand"]["token"].as_s
else
url = "/channel/#{ucid}/playlists?flow=list&view=1"