From f9e3b00ab2eb211150dc10322bdabe85fcb4c224 Mon Sep 17 00:00:00 2001 From: charles7668 Date: Mon, 5 May 2025 14:55:46 +0800 Subject: [PATCH 1/7] api/bilibili: support download episode in collection --- api/src/processing/service-config.js | 1 + api/src/processing/services/bilibili.js | 12 ++++++++---- api/src/processing/url.js | 5 +++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/api/src/processing/service-config.js b/api/src/processing/service-config.js index a6128f19..a1620644 100644 --- a/api/src/processing/service-config.js +++ b/api/src/processing/service-config.js @@ -7,6 +7,7 @@ export const services = { bilibili: { patterns: [ "video/:comId", + "video/:comId?p=:episode", "_shortLink/:comShortLink", "_tv/:lang/video/:tvId", "_tv/video/:tvId" diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 4ee148db..695855be 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -17,8 +17,12 @@ function extractBestQuality(dashData) { return [ bestVideo, bestAudio ]; } -async function com_download(id) { - let html = await fetch(`https://bilibili.com/video/${id}`, { +async function com_download(id , episode = 1) { + let fetchUrl = `https://bilibili.com/video/${id}`; + if (episode > 1) { + fetchUrl += `?p=${episode}` + } + let html = await fetch(fetchUrl, { headers: { "user-agent": genericUserAgent } @@ -86,14 +90,14 @@ async function tv_download(id) { }; } -export default async function({ comId, tvId, comShortLink }) { +export default async function ({comId, tvId, comShortLink, episode}) { if (comShortLink) { const patternMatch = await resolveRedirectingURL(`https://b23.tv/${comShortLink}`); comId = patternMatch?.comId; } if (comId) { - return com_download(comId); + return com_download(comId, episode ? episode : 1); } else if (tvId) { return tv_download(tvId); } diff --git a/api/src/processing/url.js b/api/src/processing/url.js index 86c333f6..8d860a4c 100644 --- a/api/src/processing/url.js +++ b/api/src/processing/url.js @@ -159,6 +159,11 @@ function cleanURL(url) { limitQuery('xsec_token'); } break; + case "bilibili": + if (url.searchParams.get('p')) { + limitQuery('p'); + } + break; } if (stripQuery) { From 86c4f2da15c5b91b6c1d285e1645824ee955ee29 Mon Sep 17 00:00:00 2001 From: charles <30816317+charles7668@users.noreply.github.com> Date: Mon, 5 May 2025 16:52:09 +0800 Subject: [PATCH 2/7] Update api/src/processing/services/bilibili.js Co-authored-by: wukko --- api/src/processing/services/bilibili.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 695855be..51041628 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -17,7 +17,7 @@ function extractBestQuality(dashData) { return [ bestVideo, bestAudio ]; } -async function com_download(id , episode = 1) { +async function com_download(id, episode = 1) { let fetchUrl = `https://bilibili.com/video/${id}`; if (episode > 1) { fetchUrl += `?p=${episode}` From e5fa1a7ce20731841f8d33c8998bf41bfee76580 Mon Sep 17 00:00:00 2001 From: charles <30816317+charles7668@users.noreply.github.com> Date: Mon, 5 May 2025 16:52:24 +0800 Subject: [PATCH 3/7] Update api/src/processing/services/bilibili.js Co-authored-by: wukko --- api/src/processing/services/bilibili.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 51041628..b4920f44 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -97,7 +97,7 @@ export default async function ({comId, tvId, comShortLink, episode}) { } if (comId) { - return com_download(comId, episode ? episode : 1); + return com_download(comId, episode); } else if (tvId) { return tv_download(tvId); } From d29584ea21405d81553ee83838ea35cb5a76bb9f Mon Sep 17 00:00:00 2001 From: charles <30816317+charles7668@users.noreply.github.com> Date: Mon, 5 May 2025 16:52:36 +0800 Subject: [PATCH 4/7] Update api/src/processing/services/bilibili.js Co-authored-by: wukko --- api/src/processing/services/bilibili.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index b4920f44..67ec0acd 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -90,7 +90,7 @@ async function tv_download(id) { }; } -export default async function ({comId, tvId, comShortLink, episode}) { +export default async function ({ comId, tvId, comShortLink, episode }) { if (comShortLink) { const patternMatch = await resolveRedirectingURL(`https://b23.tv/${comShortLink}`); comId = patternMatch?.comId; From 3204b82dfd81bbc347d3bf4e04f83297380ff0fb Mon Sep 17 00:00:00 2001 From: charles <30816317+charles7668@users.noreply.github.com> Date: Mon, 5 May 2025 16:52:43 +0800 Subject: [PATCH 5/7] Update api/src/processing/services/bilibili.js Co-authored-by: wukko --- api/src/processing/services/bilibili.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 67ec0acd..0ad1af4b 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -18,11 +18,7 @@ function extractBestQuality(dashData) { } async function com_download(id, episode = 1) { - let fetchUrl = `https://bilibili.com/video/${id}`; - if (episode > 1) { - fetchUrl += `?p=${episode}` - } - let html = await fetch(fetchUrl, { + const html = await fetch(`https://bilibili.com/video/${id}?p=${episode}`, { headers: { "user-agent": genericUserAgent } From 6af81b02665a1b2b64e2890f14f3e2f8db308f76 Mon Sep 17 00:00:00 2001 From: charles7668 Date: Mon, 5 May 2025 16:57:04 +0800 Subject: [PATCH 6/7] Update api/src/processing/services/bilibili.js --- api/src/processing/services/bilibili.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 0ad1af4b..0dba7ee5 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -86,7 +86,7 @@ async function tv_download(id) { }; } -export default async function ({ comId, tvId, comShortLink, episode }) { +export default async function({ comId, tvId, comShortLink, episode }) { if (comShortLink) { const patternMatch = await resolveRedirectingURL(`https://b23.tv/${comShortLink}`); comId = patternMatch?.comId; From f0569d7aebee9d0d7958d2aa68077ef1906ef8ac Mon Sep 17 00:00:00 2001 From: charles <30816317+charles7668@users.noreply.github.com> Date: Mon, 5 May 2025 17:08:45 +0800 Subject: [PATCH 7/7] Update api/src/processing/services/bilibili.js Co-authored-by: wukko --- api/src/processing/services/bilibili.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/processing/services/bilibili.js b/api/src/processing/services/bilibili.js index 0dba7ee5..0ad1af4b 100644 --- a/api/src/processing/services/bilibili.js +++ b/api/src/processing/services/bilibili.js @@ -86,7 +86,7 @@ async function tv_download(id) { }; } -export default async function({ comId, tvId, comShortLink, episode }) { +export default async function ({ comId, tvId, comShortLink, episode }) { if (comShortLink) { const patternMatch = await resolveRedirectingURL(`https://b23.tv/${comShortLink}`); comId = patternMatch?.comId;