Implement bold/italic/strike-through support.

This commit is contained in:
Kavin 2022-11-28 16:58:10 +00:00
parent 40f1ec4a54
commit 52fda37915
No known key found for this signature in database
GPG Key ID: 49451E4482CC5BCD
1 changed files with 43 additions and 11 deletions

View File

@ -940,18 +940,50 @@ public final class YoutubeParsingHelper {
} }
final StringBuilder textBuilder = new StringBuilder(); final StringBuilder textBuilder = new StringBuilder();
for (final Object textPart : textObject.getArray("runs")) { for (final Object o : textObject.getArray("runs")) {
final String text = ((JsonObject) textPart).getString("text"); final JsonObject run = (JsonObject) o;
if (html && ((JsonObject) textPart).has("navigationEndpoint")) { String text = run.getString("text");
final String url = getUrlFromNavigationEndpoint(((JsonObject) textPart)
.getObject("navigationEndpoint")); if (html) {
if (!isNullOrEmpty(url)) { if (run.has("navigationEndpoint")) {
textBuilder.append("<a href=\"").append(url).append("\">").append(text) final String url = getUrlFromNavigationEndpoint(run
.append("</a>"); .getObject("navigationEndpoint"));
continue; if (!isNullOrEmpty(url)) {
text = "<a href=\"" + url + "\">" + text + "</a>";
}
} }
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("<b>");
}
if (italic) {
textBuilder.append("<i>");
}
if (strikethrough) {
textBuilder.append("<s>");
}
textBuilder.append(text);
if (strikethrough) {
textBuilder.append("</s>");
}
if (italic) {
textBuilder.append("</i>");
}
if (bold) {
textBuilder.append("</b>");
}
} else {
textBuilder.append(text);
} }
textBuilder.append(text);
} }
String text = textBuilder.toString(); String text = textBuilder.toString();
@ -991,7 +1023,7 @@ public final class YoutubeParsingHelper {
final StringBuilder textBuilder = new StringBuilder(); final StringBuilder textBuilder = new StringBuilder();
int textStart = 0; int textStart = 0;
for (final Object commandRun: commandRuns) { for (final Object commandRun : commandRuns) {
if (!(commandRun instanceof JsonObject)) { if (!(commandRun instanceof JsonObject)) {
continue; continue;
} }