From 07a90d116a0059a027f158f59b5fe9d2720f361f Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 11 Apr 2020 16:57:31 +0200 Subject: [PATCH] [MediaCCC] Use regex to parse stream and conference urls --- .../MediaCCCConferenceLinkHandlerFactory.java | 18 +++------ .../MediaCCCStreamLinkHandlerFactory.java | 40 +++---------------- 2 files changed, 10 insertions(+), 48 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferenceLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferenceLinkHandlerFactory.java index 57591ae1..e5e9b158 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferenceLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferenceLinkHandlerFactory.java @@ -9,32 +9,24 @@ import java.util.List; public class MediaCCCConferenceLinkHandlerFactory extends ListLinkHandlerFactory { public static final String CONFERENCE_API_ENDPOINT = "https://api.media.ccc.de/public/conferences/"; public static final String CONFERENCE_PATH = "https://media.ccc.de/c/"; + private static final String ID_PATTERN = "(?:(?:(?:api\\.)?media\\.ccc\\.de/public/conferences/)|(?:media\\.ccc\\.de/[bc]/))([^/?&#]*)"; @Override - public String getUrl(final String id, final List contentFilter, + public String getUrl(final String id, + final List contentFilter, final String sortFilter) throws ParsingException { return CONFERENCE_PATH + id; } @Override public String getId(final String url) throws ParsingException { - if (url.startsWith(CONFERENCE_API_ENDPOINT)) { - return url.replace(CONFERENCE_API_ENDPOINT, ""); - } else if (url.startsWith("https://media.ccc.de/public/conferences/")) { - return url.replace("https://media.ccc.de/public/conferences/", ""); - } else if (url.startsWith(CONFERENCE_PATH)) { - return Parser.matchGroup1(CONFERENCE_PATH + "([^?#]*)", url); - } else if (url.startsWith("https://media.ccc.de/b/")) { - return Parser.matchGroup1("https://media.ccc.de/b/([^?#]*)", url); - } - throw new ParsingException("Could not get id from url: " + url); + return Parser.matchGroup1(ID_PATTERN, url); } @Override public boolean onAcceptUrl(final String url) { try { - getId(url); - return true; + return getId(url) != null; } catch (ParsingException e) { return false; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCStreamLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCStreamLinkHandlerFactory.java index d7ecdc3c..fa9ac482 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCStreamLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCStreamLinkHandlerFactory.java @@ -2,45 +2,16 @@ package org.schabi.newpipe.extractor.services.media_ccc.linkHandler; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory; -import org.schabi.newpipe.extractor.utils.Utils; - -import java.net.MalformedURLException; -import java.net.URL; +import org.schabi.newpipe.extractor.utils.Parser; public class MediaCCCStreamLinkHandlerFactory extends LinkHandlerFactory { public static final String VIDEO_API_ENDPOINT = "https://api.media.ccc.de/public/events/"; private static final String VIDEO_PATH = "https://media.ccc.de/v/"; + private static final String ID_PATTERN = "(?:(?:(?:api\\.)?media\\.ccc\\.de/public/events/)|(?:media\\.ccc\\.de/v/))([^/?&#]*)"; @Override - public String getId(final String urlString) throws ParsingException { - if (urlString.startsWith("https://media.ccc.de/public/events/") - && !urlString.contains("?q=")) { - return urlString.substring(35); //remove …/public/events part - } - - if (urlString.startsWith(VIDEO_API_ENDPOINT) - && !urlString.contains("?q=")) { - return urlString.substring(39); //remove api…/public/events part - } - - URL url; - try { - url = Utils.stringToURL(urlString); - } catch (MalformedURLException e) { - throw new IllegalArgumentException("The given URL is not valid"); - } - - String path = url.getPath(); - // remove leading "/" of URL-path if URL-path is given - if (!path.isEmpty()) { - path = path.substring(1); - } - - if (path.startsWith("v/")) { - return path.substring(2); - } - - throw new ParsingException("Could not get id from url: " + url); + public String getId(final String url) throws ParsingException { + return Parser.matchGroup1(ID_PATTERN, url); } @Override @@ -51,8 +22,7 @@ public class MediaCCCStreamLinkHandlerFactory extends LinkHandlerFactory { @Override public boolean onAcceptUrl(final String url) { try { - getId(url); - return true; + return getId(url) != null; } catch (ParsingException e) { return false; }