diff --git a/build/DailymotionScript.js b/build/DailymotionScript.js index 7429c5b35ca474e2a7c5c5e45f8a8b42259f2617..a93c62ef8337806601feaa5be73e65d02266a669 100644 --- a/build/DailymotionScript.js +++ b/build/DailymotionScript.js @@ -1478,6 +1478,7 @@ const state = { anonymousUserAuthorizationToken: '', anonymousUserAuthorizationTokenExpirationDate: 0, commentWebServiceToken: '', + channelsCache: {} }; source.setSettings = function (settings) { _settings = settings; @@ -1555,6 +1556,7 @@ source.enable = function (conf, settings, saveStateStr) { console.error('Failed to get token'); throw new ScriptException('Failed to get authentication token'); } + state.channelsCache = {}; state.anonymousUserAuthorizationToken = anonymousUserAuthorizationToken ?? ''; state.anonymousUserAuthorizationTokenExpirationDate = @@ -1608,6 +1610,12 @@ source.isChannelUrl = function (url) { return REGEX_VIDEO_CHANNEL_URL.test(url); }; source.getChannel = function (url) { + if (!state?.channelsCache) { + state.channelsCache = {}; + } + if (state.channelsCache[url]) { + return state.channelsCache[url]; + } const channel_name = getChannelNameFromUrl(url); const channelDetails = executeGqlQuery(http, { operationName: 'CHANNEL_QUERY_DESKTOP', @@ -1617,7 +1625,8 @@ source.getChannel = function (url) { }, query: CHANNEL_QUERY_DESKTOP, }); - return SourceChannelToGrayjayChannel(config.id, channelDetails.data.channel); + state.channelsCache[url] = SourceChannelToGrayjayChannel(config.id, channelDetails.data.channel); + return state.channelsCache[url]; }; source.getChannelContents = function (url, type, order, filters) { const page = 1; diff --git a/src/DailymotionScript.ts b/src/DailymotionScript.ts index cf178184d9df142bbd305c773b27d738a5417e61..57cd491a3d0c177302edfdd73fa5af4dbc2dd88e 100644 --- a/src/DailymotionScript.ts +++ b/src/DailymotionScript.ts @@ -5,6 +5,7 @@ const state = { anonymousUserAuthorizationToken: '', anonymousUserAuthorizationTokenExpirationDate: 0, commentWebServiceToken: '', + channelsCache: {} as Record<string, PlatformChannel> }; import { @@ -188,6 +189,8 @@ source.enable = function (conf, settings, saveStateStr) { throw new ScriptException('Failed to get authentication token'); } + state.channelsCache = {}; + state.anonymousUserAuthorizationToken = anonymousUserAuthorizationToken ?? ''; state.anonymousUserAuthorizationTokenExpirationDate = @@ -259,6 +262,15 @@ source.isChannelUrl = function (url) { }; source.getChannel = function (url) { + + if(!state?.channelsCache){ + state.channelsCache = {}; + } + + if(state.channelsCache[url]){ + return state.channelsCache[url]; + } + const channel_name = getChannelNameFromUrl(url); const channelDetails = executeGqlQuery(http, { @@ -270,10 +282,12 @@ source.getChannel = function (url) { query: CHANNEL_QUERY_DESKTOP, }); - return SourceChannelToGrayjayChannel( + state.channelsCache[url] = SourceChannelToGrayjayChannel( config.id, channelDetails.data.channel as Channel, ); + + return state.channelsCache[url]; }; source.getChannelContents = function (url, type, order, filters) {