diff --git a/YoutubeConfig.json b/YoutubeConfig.json index 5535a93e2609131dbb1b0139ada3b51c74661192..902f5738e5e8dd4cf84b99996b83b474486db2fd 100644 --- a/YoutubeConfig.json +++ b/YoutubeConfig.json @@ -7,7 +7,7 @@ "sourceUrl": "https://plugins.grayjay.app/Youtube/YoutubeConfig.json", "repositoryUrl": "https://futo.org", "scriptUrl": "./YoutubeScript.js", - "version": 102, + "version": 103, "iconUrl": "./youtube.png", "id": "35ae969a-a7db-11ed-afa1-0242ac120002", diff --git a/YoutubeScript.js b/YoutubeScript.js index f62437afb4e9f3ebca518470043ec5ea4fe23311..a751ff24998a4f946c1fd469c68cd83226ad7f6d 100644 --- a/YoutubeScript.js +++ b/YoutubeScript.js @@ -1246,7 +1246,7 @@ class RichGridPager extends VideoPager { const newData = validateContinuation(()=>requestBrowse({ continuation: this.continuation.token }, !!this.useMobile, !!this.useAuth)); - if(newData.length > 0) { + if(newData && newData.length > 0) { const fakeRichGrid = { contents: newData }; @@ -3189,16 +3189,32 @@ function validateContinuation(reqcb, useAuth = false) { const clientContext = getClientContext(useAuth); const result = reqcb(); const append = result?.onResponseReceivedCommands ?? result?.onResponseReceivedActions; - if(append && append.length > 0 && append[0].appendContinuationItemsAction) - return append[0].appendContinuationItemsAction.continuationItems; + if(append && append.length > 0 && append[0].appendContinuationItemsAction) { + const appendResults = append[0].appendContinuationItemsAction.continuationItems; + if(!appendResults) { + if(IS_TESTING) + console.log("Continuation found without items?", result); + return []; + } + else + return appendResults; + } else if(!clientContext.INNERTUBE_CONTEXT.client.visitorData && result.responseContext?.visitorData) { log("[validateContinuation] No visitor data set, found visitor data in response, retrying"); clientContext.INNERTUBE_CONTEXT.client.visitorData = result.responseContext.visitorData; //Retry with visitorData const reResult = reqcb(); log("[validateContinuation] retry result"); - if(append && append.length > 0 && append[0].appendContinuationItemsAction) - return append[0].appendContinuationItemsAction.continuationItems; + if(append && append.length > 0 && append[0].appendContinuationItemsAction) { + const appendResults = append[0].appendContinuationItemsAction.continuationItems; + if(!appendResults) { + if(IS_TESTING) + console.log("Continuation found without items?", result); + return []; + } + else + return appendResults; + } else return []; }