Skip to content

Commit 6956b72

Browse files
committed
Fix YoutubeThrottlingDecoder.replaceNParam
Previously it replaced the parameter itself not the value of the parameter.
1 parent a189f68 commit 6956b72

2 files changed

Lines changed: 39 additions & 10 deletions

File tree

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ public String decodeNParam(String nParam) {
9898
return javascript.run(function, functionName, nParam);
9999
}
100100

101-
public String replaceNParam(String url, String newValue) {
102-
Pattern nValuePattern = Pattern.compile(N_PARAM_REGEX);
103-
return nValuePattern.matcher(url).replaceFirst(newValue);
101+
public String replaceNParam(String url, String oldValue, String newValue) {
102+
return url.replace(oldValue, newValue);
104103
}
105104
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.grack.nanojson.JsonObject;
55
import com.grack.nanojson.JsonParser;
66
import com.grack.nanojson.JsonParserException;
7+
78
import org.jsoup.Jsoup;
89
import org.jsoup.nodes.Document;
910
import org.jsoup.nodes.Element;
@@ -17,7 +18,15 @@
1718
import org.schabi.newpipe.extractor.StreamingService;
1819
import org.schabi.newpipe.extractor.downloader.Downloader;
1920
import org.schabi.newpipe.extractor.downloader.Response;
20-
import org.schabi.newpipe.extractor.exceptions.*;
21+
import org.schabi.newpipe.extractor.exceptions.AgeRestrictedContentException;
22+
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
23+
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
24+
import org.schabi.newpipe.extractor.exceptions.GeographicRestrictionException;
25+
import org.schabi.newpipe.extractor.exceptions.PaidContentException;
26+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
27+
import org.schabi.newpipe.extractor.exceptions.PrivateContentException;
28+
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
29+
import org.schabi.newpipe.extractor.exceptions.YoutubeMusicPremiumContentException;
2130
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
2231
import org.schabi.newpipe.extractor.localization.DateWrapper;
2332
import org.schabi.newpipe.extractor.localization.Localization;
@@ -27,21 +36,42 @@
2736
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
2837
import org.schabi.newpipe.extractor.services.youtube.YoutubeThrottlingDecoder;
2938
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
30-
import org.schabi.newpipe.extractor.stream.*;
39+
import org.schabi.newpipe.extractor.stream.AudioStream;
40+
import org.schabi.newpipe.extractor.stream.Description;
41+
import org.schabi.newpipe.extractor.stream.Frameset;
42+
import org.schabi.newpipe.extractor.stream.Stream;
43+
import org.schabi.newpipe.extractor.stream.StreamExtractor;
44+
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
45+
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
46+
import org.schabi.newpipe.extractor.stream.StreamSegment;
47+
import org.schabi.newpipe.extractor.stream.StreamType;
48+
import org.schabi.newpipe.extractor.stream.SubtitlesStream;
49+
import org.schabi.newpipe.extractor.stream.VideoStream;
3150
import org.schabi.newpipe.extractor.utils.JsonUtils;
3251
import org.schabi.newpipe.extractor.utils.Parser;
3352
import org.schabi.newpipe.extractor.utils.Utils;
3453

35-
import javax.annotation.Nonnull;
36-
import javax.annotation.Nullable;
3754
import java.io.IOException;
3855
import java.io.UnsupportedEncodingException;
3956
import java.time.LocalDate;
4057
import java.time.OffsetDateTime;
4158
import java.time.format.DateTimeFormatter;
42-
import java.util.*;
59+
import java.util.ArrayList;
60+
import java.util.Collections;
61+
import java.util.HashMap;
62+
import java.util.LinkedHashMap;
63+
import java.util.List;
64+
import java.util.Locale;
65+
import java.util.Map;
66+
import java.util.Objects;
67+
68+
import javax.annotation.Nonnull;
69+
import javax.annotation.Nullable;
4370

44-
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.*;
71+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
72+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonResponse;
73+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
74+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getUrlFromNavigationEndpoint;
4575
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
4676
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
4777

@@ -532,7 +562,7 @@ public List<VideoStream> getVideoStreams() throws ExtractionException {
532562

533563
String oldNParam = throttlingDecoder.parseNParam(url);
534564
String newNParam = throttlingDecoder.decodeNParam(oldNParam);
535-
String newUrl = throttlingDecoder.replaceNParam(url, newNParam);
565+
String newUrl = throttlingDecoder.replaceNParam(url, oldNParam, newNParam);
536566

537567
final VideoStream videoStream = new VideoStream(newUrl, false, itag);
538568
if (!Stream.containSimilarStream(videoStream, videoStreams)) {

0 commit comments

Comments
 (0)