From caca3982bc8e4052b1b8d038084c6936cc25877b Mon Sep 17 00:00:00 2001 From: Ivan Paramonau Date: Thu, 1 Oct 2026 15:30:29 -0400 Subject: [PATCH 1/2] Dailymotion now requires partner player ID --- .../dailymotion.com/dailymotion.com.js | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/plugins/domains/dailymotion.com/dailymotion.com.js b/plugins/domains/dailymotion.com/dailymotion.com.js index c1aa6ef03..99ef10b94 100644 --- a/plugins/domains/dailymotion.com/dailymotion.com.js +++ b/plugins/domains/dailymotion.com/dailymotion.com.js @@ -1,5 +1,4 @@ -import * as querystring from 'querystring'; -import got from 'got'; +// import got from 'got'; // was required for tests export default { @@ -16,16 +15,32 @@ export default { "video" ], + // Dailymotion now requires Player ID that requires a partner account + // https://developers.dailymotion.com/changelog/api-player-id-required-in-embed-urls + // https://developers.dailymotion.com/docs/getting-started-with-the-web-sdk getLink: function (url, iframe, options) { - var playlistParams = querystring.parse(options.getProviderOptions('dailymotion.get_params', '').replace(/^\?/, '')); + const playerMatch = iframe.src?.match(/^https:\/\/geo\.dailymotion\.com\/player\/([a-zA-Z\-_]+)\.html/i) + if (!playerMatch) { + const playerId = options.getRequestOptions('dailymotion.player'); + if (playerId) { + console.log(21, iframe.src.replace(/\/player\.html/i, `/player/${playerId}.html`)) + iframe.src = iframe.src.replace(/\/player\.html/i, `/player/${playerId}.html`); + console.log(22, iframe.src) + } else { + return { + message: 'Dailymotion now requires partner player ID https://developers.dailymotion.com/changelog/api-player-id-required-in-embed-urls' + } + } + } + if (iframe.src && iframe.height) { var player = { - href: iframe.replaceQuerystring(playlistParams), + href: iframe.src, type: CONFIG.T.text_html, "rel": [CONFIG.R.player, CONFIG.R.autoplay, CONFIG.R.oembed], "aspect-ratio": iframe.width / iframe.height, - // autoplay: "mute=false" // obsolete now, autoplay muted is still autoplay, and requires our cover. + autoplay: "mute=false" }; // Do not replace direct link to custom players @@ -51,6 +66,7 @@ export default { } }, + /* Tests will fail without Player ID tests: [{ getUrls: function(cb) { got('https://api.dailymotion.com/videos', { responseType: 'json' }) @@ -74,4 +90,5 @@ export default { "https://www.dailymotion.com/embed/video/xcv6dv_pixels-by-patrick-jean_creation", "https://dailymotion.com/embed/video/x5yiamz?queue-enable=false" ] + */ }; \ No newline at end of file From f90733356a4968524b1fa1e07d292d9e3e483ee9 Mon Sep 17 00:00:00 2001 From: Ivan Paramonau Date: Thu, 1 Oct 2026 16:21:27 -0400 Subject: [PATCH 2/2] fixes --- plugins/domains/dailymotion.com/dailymotion.com.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/domains/dailymotion.com/dailymotion.com.js b/plugins/domains/dailymotion.com/dailymotion.com.js index 99ef10b94..9a6a9cc07 100644 --- a/plugins/domains/dailymotion.com/dailymotion.com.js +++ b/plugins/domains/dailymotion.com/dailymotion.com.js @@ -19,14 +19,12 @@ export default { // https://developers.dailymotion.com/changelog/api-player-id-required-in-embed-urls // https://developers.dailymotion.com/docs/getting-started-with-the-web-sdk getLink: function (url, iframe, options) { - const playerMatch = iframe.src?.match(/^https:\/\/geo\.dailymotion\.com\/player\/([a-zA-Z\-_]+)\.html/i) + const playerMatch = iframe.src?.match(/^https:\/\/geo\.dailymotion\.com\/player\/([a-zA-Z0-9\-_]+)\.html/i) if (!playerMatch) { const playerId = options.getRequestOptions('dailymotion.player'); - if (playerId) { - console.log(21, iframe.src.replace(/\/player\.html/i, `/player/${playerId}.html`)) + if (playerId && /^[a-zA-Z0-9\-_]+$/.test(playerId)) { iframe.src = iframe.src.replace(/\/player\.html/i, `/player/${playerId}.html`); - console.log(22, iframe.src) } else { return { message: 'Dailymotion now requires partner player ID https://developers.dailymotion.com/changelog/api-player-id-required-in-embed-urls'