diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a5db2b918..60ed8c9dc1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,9 @@ name: CI on: - schedule: - # once per day - - cron: 0 0 * * * + # schedule: + # # once per day + # - cron: 0 0 * * * push: branches: - dev diff --git a/build.gradle b/build.gradle index 065df11c5b..e478a66f67 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ allprojects { nanojsonVersion = "1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751" spotbugsVersion = "4.8.6" junitVersion = "5.10.3" - checkstyleVersion = "10.4" + checkstyleVersion = "10.12.2" } } diff --git a/extractor/build.gradle b/extractor/build.gradle index aab2494fe5..c539ff4f22 100644 --- a/extractor/build.gradle +++ b/extractor/build.gradle @@ -26,7 +26,7 @@ dependencies { implementation project(':timeago-parser') implementation "com.github.TeamNewPipe:nanojson:$nanojsonVersion" - implementation 'org.jsoup:jsoup:1.17.2' + implementation 'org.jsoup:jsoup:1.18.1' implementation "com.github.spotbugs:spotbugs-annotations:$spotbugsVersion" // do not upgrade to 1.7.14, since in 1.7.14 Rhino uses the `SourceVersion` class, which is not diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelHelper.java index 31cfa28565..9d48f572d0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelHelper.java @@ -9,13 +9,13 @@ import javax.annotation.Nonnull; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.Optional; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.defaultAlertsCheck; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; /** * Shared functions for extracting YouTube channel pages and tabs. @@ -51,7 +51,7 @@ public static String resolveChannelId(@Nonnull final String idOrPath) prepareDesktopJsonBuilder(Localization.DEFAULT, ContentCountry.DEFAULT) .value("url", "https://www.youtube.com/" + idOrPath) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); final JsonObject jsonResponse = getJsonPostResponse( "navigation/resolve_url", body, Localization.DEFAULT); @@ -143,7 +143,7 @@ public static ChannelResponseData getChannelResponse(@Nonnull final String chann .value("browseId", id) .value("params", parameters) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); final JsonObject jsonResponse = getJsonPostResponse( "browse", body, localization); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java index 3579c765b8..e0d7efe9a1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java @@ -25,6 +25,7 @@ import static org.schabi.newpipe.extractor.utils.Utils.HTTPS; import static org.schabi.newpipe.extractor.utils.Utils.getStringResultFromRegexArray; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonBuilder; @@ -55,7 +56,6 @@ import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; -import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.ZoneOffset; @@ -560,7 +560,7 @@ public static boolean isHardcodedClientVersionValid() .end() .end() .value("fetchLiveState", true) - .end().done().getBytes(StandardCharsets.UTF_8); + .end().done().getBytes(UTF_8); // @formatter:on final var headers = getClientHeaders(WEB_CLIENT_ID, HARDCODED_CLIENT_VERSION); @@ -753,7 +753,7 @@ public static boolean isHardcodedYoutubeMusicClientVersionValid() throws IOExcep .end() .end() .value("input", "") - .end().done().getBytes(StandardCharsets.UTF_8); + .end().done().getBytes(UTF_8); // @formatter:on final var headers = new HashMap<>(getOriginReferrerHeaders(YOUTUBE_MUSIC_URL)); @@ -1330,7 +1330,7 @@ public static byte[] createDesktopPlayerBody( .value(CONTENT_CHECK_OK, true) .value(RACY_CHECK_OK, true) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreators/YoutubeDashManifestCreatorsUtils.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreators/YoutubeDashManifestCreatorsUtils.java index 5e0fb6d4cf..16743d3b1a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreators/YoutubeDashManifestCreatorsUtils.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreators/YoutubeDashManifestCreatorsUtils.java @@ -8,6 +8,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isTvHtml5SimplyEmbeddedPlayerStreamingUrl; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isWebStreamingUrl; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import org.schabi.newpipe.extractor.MediaFormat; import org.schabi.newpipe.extractor.NewPipe; @@ -25,7 +26,6 @@ import java.io.IOException; import java.io.StringWriter; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Locale; import java.util.Map; @@ -620,7 +620,7 @@ public static Response getInitializationResponse(@Nonnull String baseStreamingUr final var headers = Map.of("User-Agent", List.of(isAndroidStreamingUrl ? getAndroidUserAgent(null) : getIosUserAgent(null))); - final byte[] emptyBody = "".getBytes(StandardCharsets.UTF_8); + final byte[] emptyBody = "".getBytes(UTF_8); return downloader.post(baseStreamingUrl, headers, emptyBody); } catch (final IOException | ExtractionException e) { throw new CreationException("Could not get the " diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java index d2ec32ca60..0b2c78097c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java @@ -20,7 +20,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; @@ -32,6 +31,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; /** * A {@link ChannelTabExtractor} implementation for the YouTube service. @@ -419,7 +419,7 @@ private Page getNextPageFrom(final JsonObject continuations, useVisitorData && channelIds.size() >= 3 ? channelIds.get(2) : null) .value("continuation", continuation) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); return new Page(YOUTUBEI_V1_URL + "browse?" + DISABLE_PRETTY_PRINT_PARAMETER, null, channelIds, null, body); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java index 8667768a4b..353ee42ada 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeCommentsExtractor.java @@ -3,6 +3,7 @@ import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonWriter; + import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.comments.CommentsExtractor; @@ -20,12 +21,12 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.Collections; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; public class YoutubeCommentsExtractor extends CommentsExtractor { @@ -208,7 +209,7 @@ public InfoItemsPage getPage(final Page page) prepareDesktopJsonBuilder(localization, getExtractorContentCountry()) .value("continuation", page.getId()) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on final JsonObject jsonObject = getJsonPostResponse("next", body, localization); @@ -348,7 +349,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) prepareDesktopJsonBuilder(localization, getExtractorContentCountry()) .value("videoId", getId()) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on final String initialToken = @@ -363,7 +364,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) prepareDesktopJsonBuilder(localization, getExtractorContentCountry()) .value("continuation", initialToken) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on ajaxJson = getJsonPostResponse("next", ajaxBody, localization); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMixPlaylistExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMixPlaylistExtractor.java index 1df90f967f..8777fda19a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMixPlaylistExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMixPlaylistExtractor.java @@ -10,6 +10,7 @@ import static org.schabi.newpipe.extractor.utils.Utils.getQueryValue; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; import static org.schabi.newpipe.extractor.utils.Utils.stringToURL; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonBuilder; @@ -40,7 +41,6 @@ import java.io.IOException; import java.net.URL; -import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -96,7 +96,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) jsonBody.value("playlistIndex", Integer.parseInt(playlistIndexString)); } - final byte[] body = JsonWriter.string(jsonBody.done()).getBytes(StandardCharsets.UTF_8); + final byte[] body = JsonWriter.string(jsonBody.done()).getBytes(UTF_8); // Cookie is required due to consent final var headers = getYouTubeHeaders(); @@ -222,7 +222,7 @@ private Page getNextPageFrom(@Nonnull final JsonObject playlistJson, .value("playlistIndex", index) .value("params", params) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); return new Page(YOUTUBEI_V1_URL + "next?" + DISABLE_PRETTY_PRINT_PARAMETER, null, null, cookies, body); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java index 4ed5449fc9..fc88cf68a0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java @@ -11,6 +11,7 @@ import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_SONGS; import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_VIDEOS; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -31,7 +32,6 @@ import org.schabi.newpipe.extractor.utils.JsonUtils; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -102,7 +102,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) .end() .value("query", getSearchString()) .value("params", params) - .end().done().getBytes(StandardCharsets.UTF_8); + .end().done().getBytes(UTF_8); // @formatter:on final String responseBody = getValidJsonResponseBody( @@ -226,7 +226,7 @@ public InfoItemsPage getPage(final Page page) .value("lockedSafetyMode", false) .end() .end() - .end().done().getBytes(StandardCharsets.UTF_8); + .end().done().getBytes(UTF_8); // @formatter:on final String responseBody = getValidJsonResponseBody( diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java index 79afd55421..ba40dc31ef 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java @@ -9,6 +9,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -32,7 +33,6 @@ import org.schabi.newpipe.extractor.utils.Utils; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import javax.annotation.Nonnull; @@ -70,7 +70,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) throws IOException .value("browseId", "VL" + getId()) .value("params", "wgYCCAA%3D") // Show unavailable videos .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); browseResponse = getJsonPostResponse("browse", body, localization); YoutubeParsingHelper.defaultAlertsCheck(browseResponse); @@ -384,7 +384,7 @@ private Page getNextPageFrom(final JsonArray contents) getExtractorLocalization(), getExtractorContentCountry()) .value("continuation", continuation) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); return new Page(YOUTUBEI_V1_URL + "browse?" + DISABLE_PRETTY_PRINT_PARAMETER, body); } else { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java index 491d53164d..c1b727f8d8 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java @@ -11,6 +11,7 @@ import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.VIDEOS; import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.getSearchParameter; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonBuilder; @@ -33,7 +34,6 @@ import org.schabi.newpipe.extractor.utils.JsonUtils; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Objects; @@ -100,7 +100,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) throws IOException jsonBody.value("params", params); } - final byte[] body = JsonWriter.string(jsonBody.done()).getBytes(StandardCharsets.UTF_8); + final byte[] body = JsonWriter.string(jsonBody.done()).getBytes(UTF_8); initialData = getJsonPostResponse("search", body, localization); } @@ -202,7 +202,7 @@ public InfoItemsPage getPage(final Page page) throws IOException, getExtractorContentCountry()) .value("continuation", page.getId()) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on final JsonObject ajaxJson = getJsonPostResponse("search", json, localization); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java index 0cf2e138ef..b36ccb0bfd 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java @@ -40,6 +40,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareIosMobileJsonBuilder; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -87,7 +88,6 @@ import org.schabi.newpipe.extractor.utils.Utils; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; @@ -860,7 +860,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) .value(CONTENT_CHECK_OK, true) .value(RACY_CHECK_OK, true) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); nextResponse = getJsonPostResponse(NEXT, body, localization); // streamType can only have LIVE_STREAM, POST_LIVE_STREAM and VIDEO_STREAM values (see @@ -967,7 +967,7 @@ private void fetchAndroidMobileJsonPlayer(@Nonnull final ContentCountry contentC // using some parameters for Android client requests .value("params", "CgIIAQ%3D%3D") .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); final JsonObject androidPlayerResponse = getJsonAndroidPostResponse(PLAYER, mobileBody, localization, "&t=" + generateTParameter() @@ -1002,7 +1002,7 @@ private void fetchIosMobileJsonPlayer(@Nonnull final ContentCountry contentCount .value(CONTENT_CHECK_OK, true) .value(RACY_CHECK_OK, true) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); final JsonObject iosPlayerResponse = getJsonIosPostResponse(PLAYER, mobileBody, localization, "&t=" + generateTParameter() diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeTrendingExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeTrendingExtractor.java index 2976edc4db..62953ce137 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeTrendingExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeTrendingExtractor.java @@ -24,6 +24,7 @@ import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextAtKey; import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.utils.Utils.UTF_8; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonWriter; @@ -40,7 +41,6 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.stream.Stream; import javax.annotation.Nonnull; @@ -68,7 +68,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) .value("browseId", "FEtrending") .value("params", VIDEOS_TAB_PARAMS) .done()) - .getBytes(StandardCharsets.UTF_8); + .getBytes(UTF_8); // @formatter:on initialData = getJsonPostResponse("browse", body, getExtractorLocalization()); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java b/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java index dd990c0ead..18a613258b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java @@ -7,7 +7,6 @@ import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collection; import java.util.Map; @@ -23,6 +22,7 @@ public final class Utils { public static final String HTTPS = "https://"; private static final Pattern M_PATTERN = Pattern.compile("(https?)?://m\\."); private static final Pattern WWW_PATTERN = Pattern.compile("(https?)?://www\\."); + public static final String UTF_8 = "UTF-8"; private Utils() { // no instance @@ -37,7 +37,7 @@ private Utils() { */ public static String encodeUrlUtf8(final String string) throws UnsupportedEncodingException { // TODO: Switch to URLEncoder.encode(String, Charset) in Java 10. - return URLEncoder.encode(string, StandardCharsets.UTF_8.name()); + return URLEncoder.encode(string, UTF_8); } /** @@ -48,7 +48,7 @@ public static String encodeUrlUtf8(final String string) throws UnsupportedEncodi */ public static String decodeUrlUtf8(final String url) throws UnsupportedEncodingException { // TODO: Switch to URLDecoder.decode(String, Charset) in Java 10. - return URLDecoder.decode(url, StandardCharsets.UTF_8.name()); + return URLDecoder.decode(url, UTF_8); } /**