Skip to content

Commit 40c54a7

Browse files
committed
Fix emoji extraction showing null for emoji-only messages
1 parent 620b756 commit 40c54a7

1 file changed

Lines changed: 35 additions & 2 deletions

File tree

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

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,41 @@ public YoutubeLiveChatInfoItemExtractor(final JsonObject chatMessage) {
2828
@Nonnull
2929
@Override
3030
public Description getCommentText() throws ParsingException {
31-
return new Description(YoutubeParsingHelper.getTextFromObject(
32-
chatMessage.getObject("message")), Description.PLAIN_TEXT);
31+
final String text = extractChatMessageText(chatMessage.getObject("message"));
32+
return new Description(text, Description.PLAIN_TEXT);
33+
}
34+
35+
@Nonnull
36+
private static String extractChatMessageText(final JsonObject message) {
37+
if (message == null || message.isEmpty()) {
38+
return "";
39+
}
40+
41+
if (message.has("simpleText")) {
42+
return message.getString("simpleText", "");
43+
}
44+
45+
final JsonArray runs = message.getArray("runs");
46+
if (runs.isEmpty()) {
47+
return "";
48+
}
49+
50+
final StringBuilder textBuilder = new StringBuilder();
51+
for (int i = 0; i < runs.size(); i++) {
52+
final JsonObject run = runs.getObject(i);
53+
if (run.has("text")) {
54+
textBuilder.append(run.getString("text", ""));
55+
} else if (run.has("emoji")) {
56+
final JsonObject emoji = run.getObject("emoji");
57+
if (emoji.has("emojiId")) {
58+
textBuilder.append(emoji.getString("emojiId", ""));
59+
} else {
60+
textBuilder.append("[emoji]");
61+
}
62+
}
63+
}
64+
65+
return textBuilder.toString();
3366
}
3467

3568
@Override

0 commit comments

Comments
 (0)