Skip to content

Commit 9ad102d

Browse files
committed
fixed fetching youtube client name
1 parent 4c49a34 commit 9ad102d

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.util.HashMap;
88
import java.util.List;
99
import java.util.Map;
10+
import java.util.regex.Matcher;
11+
import java.util.regex.Pattern;
1012

1113
import javax.annotation.Nonnull;
1214

@@ -25,6 +27,7 @@
2527
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
2628
import org.schabi.newpipe.extractor.utils.JsonUtils;
2729
import org.schabi.newpipe.extractor.utils.Localization;
30+
import org.schabi.newpipe.extractor.utils.Parser;
2831

2932
import com.grack.nanojson.JsonArray;
3033
import com.grack.nanojson.JsonObject;
@@ -34,6 +37,7 @@
3437
public class YoutubeCommentsExtractor extends CommentsExtractor {
3538

3639
private static final String USER_AGENT = "Mozilla/5.0 (Android 8.1.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0";
40+
private static final Pattern YT_CLIENT_NAME_PATTERN = Pattern.compile("INNERTUBE_CONTEXT_CLIENT_NAME\\\":(.*?)[,}]");
3741

3842
private String ytClientVersion;
3943
private String ytClientName;
@@ -150,7 +154,7 @@ public void onFetchPage(Downloader downloader) throws IOException, ExtractionExc
150154
DownloadResponse response = downloader.get(getUrl(), request);
151155
String responseBody = response.getResponseBody();
152156
ytClientVersion = findValue(responseBody, "INNERTUBE_CONTEXT_CLIENT_VERSION\":\"", "\"");
153-
ytClientName = findValue(responseBody, "INNERTUBE_CONTEXT_CLIENT_NAME\":", ",");
157+
ytClientName = Parser.matchGroup1(YT_CLIENT_NAME_PATTERN, responseBody);
154158
String commentsTokenInside = findValue(responseBody, "commentSectionRenderer", "}");
155159
String commentsToken = findValue(commentsTokenInside, "continuation\":\"", "\"");
156160
initPage = getPage(getNextPageUrl(commentsToken));

extractor/src/main/java/org/schabi/newpipe/extractor/utils/Parser.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
package org.schabi.newpipe.extractor.utils;
22

3-
import org.nibor.autolink.LinkExtractor;
4-
import org.nibor.autolink.LinkSpan;
5-
import org.nibor.autolink.LinkType;
6-
import org.schabi.newpipe.extractor.exceptions.ParsingException;
7-
83
import java.io.UnsupportedEncodingException;
94
import java.net.URLDecoder;
105
import java.util.ArrayList;
@@ -14,6 +9,11 @@
149
import java.util.regex.Matcher;
1510
import java.util.regex.Pattern;
1611

12+
import org.nibor.autolink.LinkExtractor;
13+
import org.nibor.autolink.LinkSpan;
14+
import org.nibor.autolink.LinkType;
15+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
16+
1717
/*
1818
* Created by Christian Schabesberger on 02.02.16.
1919
*
@@ -51,18 +51,26 @@ public RegexException(String message) {
5151
public static String matchGroup1(String pattern, String input) throws RegexException {
5252
return matchGroup(pattern, input, 1);
5353
}
54+
55+
public static String matchGroup1(Pattern pattern, String input) throws RegexException {
56+
return matchGroup(pattern, input, 1);
57+
}
5458

5559
public static String matchGroup(String pattern, String input, int group) throws RegexException {
5660
Pattern pat = Pattern.compile(pattern);
61+
return matchGroup(pat, input, group);
62+
}
63+
64+
public static String matchGroup(Pattern pat, String input, int group) throws RegexException {
5765
Matcher mat = pat.matcher(input);
5866
boolean foundMatch = mat.find();
5967
if (foundMatch) {
6068
return mat.group(group);
6169
} else {
6270
if (input.length() > 1024) {
63-
throw new RegexException("failed to find pattern \"" + pattern);
71+
throw new RegexException("failed to find pattern \"" + pat.pattern());
6472
} else {
65-
throw new RegexException("failed to find pattern \"" + pattern + " inside of " + input + "\"");
73+
throw new RegexException("failed to find pattern \"" + pat.pattern() + " inside of " + input + "\"");
6674
}
6775
}
6876
}

0 commit comments

Comments
 (0)