Skip to content

Commit ddbce3b

Browse files
Add Utils methods for URL encoding/decoding using UTF-8.
1 parent 366f5c1 commit ddbce3b

16 files changed

Lines changed: 84 additions & 94 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSuggestionExtractor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import org.schabi.newpipe.extractor.downloader.Downloader;
1414
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1515
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
16+
import org.schabi.newpipe.extractor.utils.Utils;
1617

1718
import java.io.IOException;
18-
import java.net.URLEncoder;
1919
import java.util.Collections;
2020
import java.util.List;
2121
import java.util.stream.Collectors;
@@ -33,7 +33,7 @@ public List<String> suggestionList(final String query) throws IOException, Extra
3333

3434
try {
3535
final JsonObject fuzzyResults = JsonParser.object().from(downloader
36-
.get(AUTOCOMPLETE_URL + URLEncoder.encode(query, "UTF-8")).responseBody());
36+
.get(AUTOCOMPLETE_URL + Utils.encodeUrlUtf8(query)).responseBody());
3737

3838
return fuzzyResults.getObject("auto").getArray("results").stream()
3939
.filter(JsonObject.class::isInstance)
@@ -44,6 +44,5 @@ public List<String> suggestionList(final String query) throws IOException, Extra
4444
} catch (final JsonParserException e) {
4545
return Collections.emptyList();
4646
}
47-
4847
}
4948
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/linkHandler/BandcampSearchQueryHandlerFactory.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@
22

33
package org.schabi.newpipe.extractor.services.bandcamp.linkHandler;
44

5+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
6+
57
import org.schabi.newpipe.extractor.exceptions.ParsingException;
68
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
9+
import org.schabi.newpipe.extractor.utils.Utils;
710

811
import java.io.UnsupportedEncodingException;
9-
import java.net.URLEncoder;
1012
import java.util.List;
1113

12-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
13-
1414
public class BandcampSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
15-
16-
1715
@Override
1816
public String getUrl(final String query,
1917
final List<String> contentFilter,
2018
final String sortFilter) throws ParsingException {
2119
try {
22-
return BASE_URL + "/search?q=" + URLEncoder.encode(query, "UTF-8") + "&page=1";
20+
return BASE_URL + "/search?q=" + Utils.encodeUrlUtf8(query) + "&page=1";
2321
} catch (final UnsupportedEncodingException e) {
2422
throw new ParsingException("query \"" + query + "\" could not be encoded", e);
2523
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCSearchQueryHandlerFactory.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
44
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
5+
import org.schabi.newpipe.extractor.utils.Utils;
56

67
import java.io.UnsupportedEncodingException;
7-
import java.net.URLEncoder;
8-
import java.nio.charset.StandardCharsets;
98
import java.util.List;
109

1110
public class MediaCCCSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
@@ -31,8 +30,7 @@ public String[] getAvailableSortFilter() {
3130
public String getUrl(final String query, final List<String> contentFilter,
3231
final String sortFilter) throws ParsingException {
3332
try {
34-
return "https://media.ccc.de/public/events/search?q="
35-
+ URLEncoder.encode(query, StandardCharsets.UTF_8.name());
33+
return "https://media.ccc.de/public/events/search?q=" + Utils.encodeUrlUtf8(query);
3634
} catch (final UnsupportedEncodingException e) {
3735
throw new ParsingException("Could not create search string with query: " + query, e);
3836
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535

3636
import java.io.IOException;
3737
import java.io.UnsupportedEncodingException;
38-
import java.net.URLEncoder;
39-
import java.nio.charset.StandardCharsets;
4038
import java.util.ArrayList;
4139
import java.util.Collections;
4240
import java.util.List;
@@ -327,8 +325,7 @@ private String getRelatedItemsUrl(@Nonnull final List<String> tags)
327325
final StringBuilder params = new StringBuilder();
328326
params.append("start=0&count=8&sort=-createdAt");
329327
for (final String tag : tags) {
330-
params.append("&tagsOneOf=");
331-
params.append(URLEncoder.encode(tag, StandardCharsets.UTF_8.name()));
328+
params.append("&tagsOneOf=").append(Utils.encodeUrlUtf8(tag));
332329
}
333330
return url + "?" + params;
334331
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerFactory.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
import org.schabi.newpipe.extractor.ServiceList;
44
import org.schabi.newpipe.extractor.exceptions.ParsingException;
55
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
6+
import org.schabi.newpipe.extractor.utils.Utils;
67

78
import java.io.UnsupportedEncodingException;
8-
import java.net.URLEncoder;
9-
import java.nio.charset.StandardCharsets;
109
import java.util.List;
1110

1211
public final class PeertubeSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
@@ -42,8 +41,7 @@ public String getUrl(final String searchString,
4241
final String sortFilter,
4342
final String baseUrl) throws ParsingException {
4443
try {
45-
return baseUrl + SEARCH_ENDPOINT + "?search=" + URLEncoder.encode(searchString,
46-
StandardCharsets.UTF_8.name());
44+
return baseUrl + SEARCH_ENDPOINT + "?search=" + Utils.encodeUrlUtf8(searchString);
4745
} catch (final UnsupportedEncodingException e) {
4846
throw new ParsingException("Could not encode query", e);
4947
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudParsingHelper.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
import java.io.IOException;
3232
import java.net.MalformedURLException;
3333
import java.net.URL;
34-
import java.net.URLEncoder;
35-
import java.nio.charset.StandardCharsets;
3634
import java.time.OffsetDateTime;
3735
import java.time.format.DateTimeFormatter;
3836
import java.time.format.DateTimeParseException;
@@ -109,7 +107,7 @@ public static OffsetDateTime parseDateFrom(final String textualUploadDate)
109107
public static JsonObject resolveFor(@Nonnull final Downloader downloader, final String url)
110108
throws IOException, ExtractionException {
111109
final String apiUrl = SOUNDCLOUD_API_V2_URL + "resolve"
112-
+ "?url=" + URLEncoder.encode(url, StandardCharsets.UTF_8.name())
110+
+ "?url=" + Utils.encodeUrlUtf8(url)
113111
+ "&client_id=" + clientId();
114112

115113
try {
@@ -131,8 +129,7 @@ public static String resolveUrlWithEmbedPlayer(final String apiUrl) throws IOExc
131129
ReCaptchaException {
132130

133131
final String response = NewPipe.getDownloader().get("https://w.soundcloud.com/player/?url="
134-
+ URLEncoder.encode(apiUrl, StandardCharsets.UTF_8.name()),
135-
SoundCloud.getLocalization()).responseBody();
132+
+ Utils.encodeUrlUtf8(apiUrl), SoundCloud.getLocalization()).responseBody();
136133

137134
return Jsoup.parse(response).select("link[rel=\"canonical\"]").first()
138135
.attr("abs:href");
@@ -163,7 +160,7 @@ public static String resolveIdWithWidgetApi(final String urlString) throws IOExc
163160

164161
try {
165162
final String widgetUrl = "https://api-widget.soundcloud.com/resolve?url="
166-
+ URLEncoder.encode(url.toString(), StandardCharsets.UTF_8.name())
163+
+ Utils.encodeUrlUtf8(url.toString())
167164
+ "&format=json&client_id=" + SoundcloudParsingHelper.clientId();
168165
final String response = NewPipe.getDownloader().get(widgetUrl,
169166
SoundCloud.getLocalization()).responseBody();

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@
3131
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
3232
import org.schabi.newpipe.extractor.stream.StreamType;
3333
import org.schabi.newpipe.extractor.stream.VideoStream;
34+
import org.schabi.newpipe.extractor.utils.Utils;
3435

3536
import java.io.IOException;
3637
import java.io.UnsupportedEncodingException;
37-
import java.net.URLEncoder;
38-
import java.nio.charset.StandardCharsets;
3938
import java.util.ArrayList;
4039
import java.util.Collections;
4140
import java.util.List;
@@ -320,7 +319,7 @@ public void extractDownloadableFileIfAvailable(final List<AudioStream> audioStre
320319

321320
private static String urlEncode(final String value) {
322321
try {
323-
return URLEncoder.encode(value, StandardCharsets.UTF_8.name());
322+
return Utils.encodeUrlUtf8(value);
324323
} catch (final UnsupportedEncodingException e) {
325324
throw new IllegalStateException(e);
326325
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSuggestionExtractor.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1515
import org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper;
1616
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
17+
import org.schabi.newpipe.extractor.utils.Utils;
1718

1819
import java.io.IOException;
19-
import java.net.URLEncoder;
20-
import java.nio.charset.StandardCharsets;
2120
import java.util.ArrayList;
2221
import java.util.List;
2322

@@ -32,9 +31,9 @@ public List<String> suggestionList(final String query) throws IOException,
3231
ExtractionException {
3332
final List<String> suggestions = new ArrayList<>();
3433
final Downloader dl = NewPipe.getDownloader();
35-
final String url = SOUNDCLOUD_API_V2_URL + "search/queries" + "?q="
36-
+ URLEncoder.encode(query, StandardCharsets.UTF_8.name()) + "&client_id="
37-
+ SoundcloudParsingHelper.clientId() + "&limit=10";
34+
final String url = SOUNDCLOUD_API_V2_URL + "search/queries?q="
35+
+ Utils.encodeUrlUtf8(query) + "&client_id=" + SoundcloudParsingHelper.clientId()
36+
+ "&limit=10";
3837
final String response = dl.get(url, getExtractorLocalization()).responseBody();
3938

4039
try {

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/linkHandler/SoundcloudSearchQueryHandlerFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
88
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
99
import org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper;
10+
import org.schabi.newpipe.extractor.utils.Utils;
1011

1112
import java.io.IOException;
1213
import java.io.UnsupportedEncodingException;
13-
import java.net.URLEncoder;
14-
import java.nio.charset.StandardCharsets;
1514
import java.util.List;
1615

1716
public class SoundcloudSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
@@ -48,7 +47,7 @@ public String getUrl(final String id,
4847
}
4948
}
5049

51-
return url + "?q=" + URLEncoder.encode(id, StandardCharsets.UTF_8.name())
50+
return url + "?q=" + Utils.encodeUrlUtf8(id)
5251
+ "&client_id=" + SoundcloudParsingHelper.clientId()
5352
+ "&limit=" + ITEMS_PER_PAGE + "&offset=0";
5453

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import java.io.UnsupportedEncodingException;
5555
import java.net.MalformedURLException;
5656
import java.net.URL;
57-
import java.net.URLDecoder;
5857
import java.nio.charset.StandardCharsets;
5958
import java.security.SecureRandom;
6059
import java.time.LocalDate;
@@ -891,8 +890,7 @@ public static String getUrlFromNavigationEndpoint(@Nonnull final JsonObject navi
891890
for (final String param : params) {
892891
if (param.split("=")[0].equals("q")) {
893892
try {
894-
return URLDecoder.decode(param.split("=")[1],
895-
StandardCharsets.UTF_8.name());
893+
return Utils.decodeUrlUtf8(param.split("=")[1]);
896894
} catch (final UnsupportedEncodingException e) {
897895
return null;
898896
}

0 commit comments

Comments
 (0)