Skip to content

Commit 43d1c1f

Browse files
authored
Merge pull request #880 from Isira-Seneviratne/Use_StandardCharsets
Use StandardCharsets.UTF_8.
2 parents 0ea16c0 + e4d982c commit 43d1c1f

23 files changed

+139
-137
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ If you're using Gradle, you could add NewPipe Extractor as a dependency with the
1313
1. Add `maven { url 'https://jitpack.io' }` to the `repositories` in your `build.gradle`.
1414
2. Add `implementation 'com.github.TeamNewPipe:NewPipeExtractor:INSERT_VERSION_HERE'` to the `dependencies` in your `build.gradle`. Replace `INSERT_VERSION_HERE` with the [latest release](https://github.com/TeamNewPipe/NewPipeExtractor/releases/latest).
1515

16-
**Note:** To use NewPipe Extractor in projects with a `minSdkVersion` below 26, [API desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) is required.
16+
**Note:** To use NewPipe Extractor in projects with a `minSdk` below 26, [API desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) is required. If the `minSdk` is below 19, the `desugar_jdk_libs_nio` artifact is required, which requires Android Gradle Plugin (AGP) version 7.4.0.
1717

1818
### Testing changes
1919

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 & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@
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;
88
import java.util.List;
99

10-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
11-
1210
public class MediaCCCSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
1311
public static final String ALL = "all";
1412
public static final String CONFERENCES = "conferences";
@@ -32,8 +30,7 @@ public String[] getAvailableSortFilter() {
3230
public String getUrl(final String query, final List<String> contentFilter,
3331
final String sortFilter) throws ParsingException {
3432
try {
35-
return "https://media.ccc.de/public/events/search?q="
36-
+ URLEncoder.encode(query, UTF_8);
33+
return "https://media.ccc.de/public/events/search?q=" + Utils.encodeUrlUtf8(query);
3734
} catch (final UnsupportedEncodingException e) {
3835
throw new ParsingException("Could not create search string with query: " + query, e);
3936
}

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
@@ -1,7 +1,6 @@
11
package org.schabi.newpipe.extractor.services.peertube.extractors;
22

33
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
4-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
54
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
65

76
import com.grack.nanojson.JsonArray;
@@ -36,7 +35,6 @@
3635

3736
import java.io.IOException;
3837
import java.io.UnsupportedEncodingException;
39-
import java.net.URLEncoder;
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, UTF_8));
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,13 +3,11 @@
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;
99
import java.util.List;
1010

11-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
12-
1311
public final class PeertubeSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
1412

1513
public static final String VIDEOS = "videos";
@@ -43,7 +41,7 @@ public String getUrl(final String searchString,
4341
final String sortFilter,
4442
final String baseUrl) throws ParsingException {
4543
try {
46-
return baseUrl + SEARCH_ENDPOINT + "?search=" + URLEncoder.encode(searchString, UTF_8);
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 & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.schabi.newpipe.extractor.services.soundcloud;
22

33
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
4-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
54
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
65
import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps;
76

@@ -32,7 +31,6 @@
3231
import java.io.IOException;
3332
import java.net.MalformedURLException;
3433
import java.net.URL;
35-
import java.net.URLEncoder;
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, UTF_8)
110+
+ "?url=" + Utils.encodeUrlUtf8(url)
113111
+ "&client_id=" + clientId();
114112

115113
try {
@@ -131,7 +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, UTF_8), SoundCloud.getLocalization()).responseBody();
132+
+ Utils.encodeUrlUtf8(apiUrl), SoundCloud.getLocalization()).responseBody();
135133

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

163161
try {
164162
final String widgetUrl = "https://api-widget.soundcloud.com/resolve?url="
165-
+ URLEncoder.encode(url.toString(), UTF_8)
163+
+ Utils.encodeUrlUtf8(url.toString())
166164
+ "&format=json&client_id=" + SoundcloudParsingHelper.clientId();
167165
final String response = NewPipe.getDownloader().get(widgetUrl,
168166
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
@@ -4,7 +4,6 @@
44
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.clientId;
55
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
66
import static org.schabi.newpipe.extractor.stream.Stream.ID_UNKNOWN;
7-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
87
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
98

109
import com.grack.nanojson.JsonArray;
@@ -32,10 +31,10 @@
3231
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
3332
import org.schabi.newpipe.extractor.stream.StreamType;
3433
import org.schabi.newpipe.extractor.stream.VideoStream;
34+
import org.schabi.newpipe.extractor.utils.Utils;
3535

3636
import java.io.IOException;
3737
import java.io.UnsupportedEncodingException;
38-
import java.net.URLEncoder;
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, UTF_8);
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: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
package org.schabi.newpipe.extractor.services.soundcloud.extractors;
22

3+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
4+
35
import com.grack.nanojson.JsonArray;
46
import com.grack.nanojson.JsonObject;
57
import com.grack.nanojson.JsonParser;
68
import com.grack.nanojson.JsonParserException;
9+
710
import org.schabi.newpipe.extractor.NewPipe;
811
import org.schabi.newpipe.extractor.StreamingService;
912
import org.schabi.newpipe.extractor.downloader.Downloader;
1013
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1114
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1215
import org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper;
1316
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
17+
import org.schabi.newpipe.extractor.utils.Utils;
1418

1519
import java.io.IOException;
16-
import java.net.URLEncoder;
1720
import java.util.ArrayList;
1821
import java.util.List;
1922

20-
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
21-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
22-
2323
public class SoundcloudSuggestionExtractor extends SuggestionExtractor {
2424

2525
public SoundcloudSuggestionExtractor(final StreamingService service) {
@@ -31,9 +31,9 @@ public List<String> suggestionList(final String query) throws IOException,
3131
ExtractionException {
3232
final List<String> suggestions = new ArrayList<>();
3333
final Downloader dl = NewPipe.getDownloader();
34-
final String url = SOUNDCLOUD_API_V2_URL + "search/queries" + "?q="
35-
+ URLEncoder.encode(query, UTF_8) + "&client_id="
36-
+ 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";
3737
final String response = dl.get(url, getExtractorLocalization()).responseBody();
3838

3939
try {

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package org.schabi.newpipe.extractor.services.soundcloud.linkHandler;
22

3+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
4+
35
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
46
import org.schabi.newpipe.extractor.exceptions.ParsingException;
57
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
68
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
79
import org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper;
10+
import org.schabi.newpipe.extractor.utils.Utils;
811

912
import java.io.IOException;
1013
import java.io.UnsupportedEncodingException;
11-
import java.net.URLEncoder;
1214
import java.util.List;
1315

14-
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
15-
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
16-
1716
public class SoundcloudSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
1817

1918
public static final String TRACKS = "tracks";
@@ -48,9 +47,9 @@ public String getUrl(final String id,
4847
}
4948
}
5049

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

5554
} catch (final UnsupportedEncodingException e) {
5655
throw new ParsingException("Could not encode query", e);

0 commit comments

Comments
 (0)