From b76abe3cb498bbb3f46be43975ccc466b55aa81f Mon Sep 17 00:00:00 2001 From: skbeh <60107333+skbeh@users.noreply.github.com> Date: Thu, 4 Sep 2025 20:02:18 +0000 Subject: [PATCH] refactor: simplify Bilibili URL construction This commit refactors the Bilibili URL construction by introducing a new `createUrlWithPage` function. This function centralizes the logic for adding the `p` query parameter to Bilibili URLs, and only adds it when the page number is not "1". --- .../BilibiliChannelInfoItemClientAPIExtractor.java | 2 +- .../BilibiliChannelInfoItemWebAPIExtractor.java | 2 +- .../BilibiliRecommendedVideosInfoItemExtractor.java | 2 +- .../extractors/BilibiliRelatedInfoItemExtractor.java | 4 +++- .../extractors/BilibiliTrendingInfoItemExtractor.java | 2 +- .../linkHandler/BilibiliStreamLinkHandlerFactory.java | 9 +++++---- .../newpipe/extractor/services/bilibili/utils.java | 4 ++++ 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemClientAPIExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemClientAPIExtractor.java index 5139bb7a..e597f5c9 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemClientAPIExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemClientAPIExtractor.java @@ -36,7 +36,7 @@ public String getName() throws ParsingException { @Override public String getUrl() throws ParsingException { - return "https://www.bilibili.com/video/" + item.getString("bvid") + "?p=1"; + return "https://www.bilibili.com/video/" + item.getString("bvid"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemWebAPIExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemWebAPIExtractor.java index f14ac9cf..43e22380 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemWebAPIExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliChannelInfoItemWebAPIExtractor.java @@ -35,7 +35,7 @@ public String getName() throws ParsingException { @Override public String getUrl() throws ParsingException { - return "https://www.bilibili.com/video/" + item.getString("bvid") + "?p=1"; + return "https://www.bilibili.com/video/" + item.getString("bvid"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRecommendedVideosInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRecommendedVideosInfoItemExtractor.java index 3c4eefaa..e7044de8 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRecommendedVideosInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRecommendedVideosInfoItemExtractor.java @@ -29,7 +29,7 @@ public String getName() throws ParsingException { @Override public String getUrl() throws ParsingException { - return item.getString("uri") + "?p=1"; + return item.getString("uri"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRelatedInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRelatedInfoItemExtractor.java index 7fdf1b47..f698bef7 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRelatedInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliRelatedInfoItemExtractor.java @@ -14,6 +14,8 @@ import java.util.Date; import java.util.Objects; +import static org.schabi.newpipe.extractor.services.bilibili.utils.createUrlWithPage; + public class BilibiliRelatedInfoItemExtractor implements StreamInfoItemExtractor { protected final JsonObject item; @@ -51,7 +53,7 @@ public String getName() throws ParsingException { @Override public String getUrl() throws ParsingException { - return "https://www.bilibili.com/video/" + id + "?p=" + p; + return createUrlWithPage("https://www.bilibili.com/video/" + id, p); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliTrendingInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliTrendingInfoItemExtractor.java index a76c316d..367f5425 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliTrendingInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/extractors/BilibiliTrendingInfoItemExtractor.java @@ -29,7 +29,7 @@ public String getName() throws ParsingException { @Override public String getUrl() throws ParsingException { - return "https://www.bilibili.com/video/" + item.getString("bvid") + "?p=1"; + return "https://www.bilibili.com/video/" + item.getString("bvid"); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/linkHandler/BilibiliStreamLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/linkHandler/BilibiliStreamLinkHandlerFactory.java index f540c9d9..40ae2009 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/linkHandler/BilibiliStreamLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/linkHandler/BilibiliStreamLinkHandlerFactory.java @@ -12,6 +12,7 @@ import org.schabi.newpipe.extractor.services.bilibili.utils; import static org.schabi.newpipe.extractor.services.bilibili.BilibiliService.LIVE_BASE_URL; +import static org.schabi.newpipe.extractor.services.bilibili.utils.createUrlWithPage; /* General form of stream link url: https://m.bilibili.com/video/ (mobile) and https://www.bilibili.com/video/ (PC) @@ -48,16 +49,16 @@ public String getId(String url) throws ParsingException { if (url.split("/")[url.split("/").length - 1].startsWith("BV")) { String parseResult = url.split(Pattern.quote("/BV"))[1].split("\\?")[0].split("/")[0]; - url = "BV" + parseResult + "?p=" + p; + url = createUrlWithPage("BV" + parseResult, p); } else if (url.contains("bvid=")) { String parseResult = url.split(Pattern.quote("bvid="))[1].split("&")[0]; - url = parseResult + "?p=" + p; + url = createUrlWithPage(parseResult, p); } else if (url.split("/")[url.split("/").length - 1].startsWith("av")) { String parseResult = url.split(Pattern.quote("av"))[1].split("\\?")[0]; - url = utils.av2bv(Long.parseLong(parseResult)) + "?p=" + p; + url = createUrlWithPage(utils.av2bv(Long.parseLong(parseResult)), p); } else if (url.contains("aid=")) { String parseResult = url.split(Pattern.quote("aid="))[1].split("&")[0]; - url = utils.av2bv(Long.parseLong(parseResult)) + "?p=" + p; + url = createUrlWithPage(utils.av2bv(Long.parseLong(parseResult)), p); } else if (url.contains(LIVE_BASE_URL) || url.contains("bangumi/play/")) { url = url.split("/")[url.split("/").length - 1].split("\\?")[0]; } else { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/utils.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/utils.java index 81a0ee07..b3b830ef 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/utils.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bilibili/utils.java @@ -372,6 +372,10 @@ private static String getMixinKey(String ae) { return le.substring(0, 32); } + public static String createUrlWithPage(String url, String p) { + return p.equals("1") ? url : (url + "?p=" + p); + } + public static String formatParamWithPercentSpace(String value) { try { return URLEncoder.encode(value, StandardCharsets.UTF_8.name()).replace("+", "%20");