[YouTube] Add support for new crisis meta info action data

The new action data can return multiple contact actions instead of only one,
which will be concatenated by a new line return.

This commit fixes tests of the CrisisResources test class of
YoutubeSearchExtractorTest.
pull/1168/head
AudricV 2024-04-10 21:07:37 +02:00
rodzic 2a3c6f80d2
commit f40fc0aa4f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: DA92EC7905614198
1 zmienionych plików z 27 dodań i 2 usunięć

Wyświetl plik

@ -171,7 +171,31 @@ public final class YoutubeMetaInfoHelper {
// usually an encouragement like "We are with you"
final String title = getTextFromObjectOrThrow(r.getObject("title"), "title");
// usually a phone number
final String action = getTextFromObjectOrThrow(r.getObject("actionText"), "action");
final String action;
if (r.has("actionText")) {
action = getTextFromObjectOrThrow(r.getObject("actionText"), "action");
} else if (r.has("contacts")) {
final JsonArray contacts = r.getArray("contacts");
final StringBuilder stringBuilder = new StringBuilder();
int i = 0;
final int contactsSize = contacts.size();
if (contactsSize != 0) {
// Loop over contacts item from the first contact to the last one, if there is
// not only one, in order to not add an unneeded line return
for (; i < contactsSize - 1; i++) {
stringBuilder.append(getTextFromObjectOrThrow(contacts.getObject(i)
.getObject("actionText"), "contacts.actionText"));
stringBuilder.append("\n");
}
// Add the latest contact without an extra line return
stringBuilder.append(getTextFromObjectOrThrow(contacts.getObject(i)
.getObject("actionText"), "contacts.actionText"));
}
action = stringBuilder.toString();
} else {
action = null;
}
// usually details about the phone number
final String details = getTextFromObjectOrThrow(r.getObject("detailsText"), "details");
// usually the name of an association
@ -179,7 +203,8 @@ public final class YoutubeMetaInfoHelper {
"urlText");
metaInfo.setTitle(title);
metaInfo.setContent(new Description(details + "\n" + action, Description.PLAIN_TEXT));
metaInfo.setContent(new Description(isNullOrEmpty(action)
? details : details + "\n" + action, Description.PLAIN_TEXT));
metaInfo.addUrlText(urlText);
// usually the webpage of the association