From 52fda37915153592cbc6eb854f3ab54ab4be8b79 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Mon, 28 Nov 2022 16:58:10 +0000 Subject: [PATCH] Implement bold/italic/strike-through support. --- .../youtube/YoutubeParsingHelper.java | 54 +++++++++++++++---- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java index b460448d..280ccb94 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java @@ -940,18 +940,50 @@ public final class YoutubeParsingHelper { } final StringBuilder textBuilder = new StringBuilder(); - for (final Object textPart : textObject.getArray("runs")) { - final String text = ((JsonObject) textPart).getString("text"); - if (html && ((JsonObject) textPart).has("navigationEndpoint")) { - final String url = getUrlFromNavigationEndpoint(((JsonObject) textPart) - .getObject("navigationEndpoint")); - if (!isNullOrEmpty(url)) { - textBuilder.append("").append(text) - .append(""); - continue; + for (final Object o : textObject.getArray("runs")) { + final JsonObject run = (JsonObject) o; + String text = run.getString("text"); + + if (html) { + if (run.has("navigationEndpoint")) { + final String url = getUrlFromNavigationEndpoint(run + .getObject("navigationEndpoint")); + if (!isNullOrEmpty(url)) { + text = "" + text + ""; + } } + + final boolean bold = run.has("bold") + && run.getBoolean("bold"); + final boolean italic = run.has("italics") + && run.getBoolean("italics"); + final boolean strikethrough = run.has("strikethrough") + && run.getBoolean("strikethrough"); + + if (bold) { + textBuilder.append(""); + } + if (italic) { + textBuilder.append(""); + } + if (strikethrough) { + textBuilder.append(""); + } + + textBuilder.append(text); + + if (strikethrough) { + textBuilder.append(""); + } + if (italic) { + textBuilder.append(""); + } + if (bold) { + textBuilder.append(""); + } + } else { + textBuilder.append(text); } - textBuilder.append(text); } String text = textBuilder.toString(); @@ -991,7 +1023,7 @@ public final class YoutubeParsingHelper { final StringBuilder textBuilder = new StringBuilder(); int textStart = 0; - for (final Object commandRun: commandRuns) { + for (final Object commandRun : commandRuns) { if (!(commandRun instanceof JsonObject)) { continue; }