Skip to content

Commit c5d0aab

Browse files
committed
Add defaults and logging for missing author fields
1 parent 209a00e commit c5d0aab

File tree

6 files changed

+52
-2
lines changed

6 files changed

+52
-2
lines changed

common/src/main/java/dev/lavalink/youtube/clients/AndroidMusic.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@
1010
import dev.lavalink.youtube.YoutubeAudioSourceManager;
1111
import org.jetbrains.annotations.NotNull;
1212
import org.jetbrains.annotations.Nullable;
13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
1315

1416
import java.util.List;
1517
import java.util.Objects;
1618
import java.util.stream.Collectors;
1719

1820
public class AndroidMusic extends Android {
21+
private static final Logger log = LoggerFactory.getLogger(AndroidMusic.class);
1922
public static String CLIENT_VERSION = "7.11.50";
2023

2124
public static ClientConfig BASE_CONFIG = new ClientConfig()
@@ -94,6 +97,11 @@ protected AudioTrack extractAudioTrack(@NotNull JsonBrowser json, @NotNull Youtu
9497
String title = DataFormatTools.defaultOnNull(titleJson.get("runs").index(0).get("text").text(), titleJson.get("simpleText").text());
9598
String author = secondaryJson.index(0).get("text").text();
9699

100+
if (author == null) {
101+
log.debug("Author field is null, json: {}", json.format());
102+
author = "Unknown artist";
103+
}
104+
97105
JsonBrowser durationJson = secondaryJson.index(2);
98106
String durationText = DataFormatTools.defaultOnNull(durationJson.get("text").text(), durationJson.get("runs").index(0).get("text").text());
99107

common/src/main/java/dev/lavalink/youtube/clients/TvHtml5Embedded.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ protected void extractPlaylistTracks(@NotNull JsonBrowser json,
7272
String title = DataFormatTools.defaultOnNull(titleField.get("simpleText").text(), titleField.get("runs").index(0).get("text").text());
7373
String author = DataFormatTools.defaultOnNull(authorJson.get("runs").index(0).get("text").text(), "Unknown artist");
7474
long duration = Units.secondsToMillis(item.get("lengthSeconds").asLong(Units.DURATION_SEC_UNKNOWN));
75-
7675
tracks.add(buildAudioTrack(source, track, title, author, duration, videoId, false));
7776
}
7877
}

common/src/main/java/dev/lavalink/youtube/clients/skeleton/MusicClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.apache.http.entity.StringEntity;
1515
import org.jetbrains.annotations.NotNull;
1616
import org.jetbrains.annotations.Nullable;
17+
import org.slf4j.Logger;
18+
import org.slf4j.LoggerFactory;
1719

1820
import java.io.IOException;
1921
import java.util.ArrayList;
@@ -23,6 +25,8 @@
2325
* The base class for a client that can be used with music.youtube.com.
2426
*/
2527
public abstract class MusicClient implements Client {
28+
private static final Logger log = LoggerFactory.getLogger(MusicClient.class);
29+
2630
@NotNull
2731
protected abstract ClientConfig getBaseClientConfig(@NotNull HttpInterface httpInterface);
2832

@@ -95,6 +99,12 @@ protected List<AudioTrack> extractSearchResultTracks(@NotNull YoutubeAudioSource
9599
.values();
96100

97101
String author = runs.get(0).get("text").text();
102+
103+
if (author == null) {
104+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
105+
author = "Unknown artist";
106+
}
107+
98108
JsonBrowser lastElement = runs.get(runs.size() - 1);
99109

100110
if (!lastElement.get("navigationEndpoint").isNull()) {

common/src/main/java/dev/lavalink/youtube/clients/skeleton/NonMusicClient.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ protected void extractPlaylistTracks(@NotNull JsonBrowser json,
279279
String title = DataFormatTools.defaultOnNull(titleField.get("simpleText").text(), titleField.get("runs").index(0).get("text").text());
280280
String author = DataFormatTools.defaultOnNull(authorJson.get("runs").index(0).get("text").text(), "Unknown artist");
281281
long duration = Units.secondsToMillis(item.get("lengthSeconds").asLong(Units.DURATION_SEC_UNKNOWN));
282-
283282
tracks.add(buildAudioTrack(source, item, title, author, duration, videoId, false));
284283
}
285284
}
@@ -296,6 +295,11 @@ protected AudioTrack extractAudioTrack(@NotNull JsonBrowser json,
296295
String title = DataFormatTools.defaultOnNull(titleJson.get("runs").index(0).get("text").text(), titleJson.get("simpleText").text());
297296
String author = json.get("longBylineText").get("runs").index(0).get("text").text();
298297

298+
if (author == null) {
299+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
300+
author = "Unknown artist";
301+
}
302+
299303
JsonBrowser durationJson = json.get("lengthText");
300304
String durationText = DataFormatTools.defaultOnNull(durationJson.get("runs").index(0).get("text").text(), durationJson.get("simpleText").text());
301305

@@ -329,6 +333,11 @@ public AudioItem loadVideo(@NotNull YoutubeAudioSourceManager source,
329333
String title = videoDetails.get("title").text();
330334
String author = videoDetails.get("author").text();
331335

336+
if (author == null) {
337+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
338+
author = "Unknown artist";
339+
}
340+
332341
TemporalInfo temporalInfo = TemporalInfo.fromRawData(
333342
!playabilityStatus.get("liveStreamability").isNull(),
334343
videoDetails.get("lengthSeconds"),

v2/src/main/java/dev/lavalink/youtube/clients/skeleton/ThumbnailMusicClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.sedmelluq.discord.lavaplayer.track.*;
77
import dev.lavalink.youtube.YoutubeAudioSourceManager;
88
import org.jetbrains.annotations.NotNull;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
911

1012
import java.util.ArrayList;
1113
import java.util.List;
@@ -14,6 +16,8 @@
1416
* This class is deprecated.
1517
*/
1618
public abstract class ThumbnailMusicClient extends MusicClient {
19+
private static final Logger log = LoggerFactory.getLogger(ThumbnailMusicClient.class);
20+
1721
@Override
1822
@NotNull
1923
protected List<AudioTrack> extractSearchResultTracks(@NotNull YoutubeAudioSourceManager source,
@@ -49,6 +53,12 @@ protected List<AudioTrack> extractSearchResultTracks(@NotNull YoutubeAudioSource
4953
.values();
5054

5155
String author = runs.get(0).get("text").text();
56+
57+
if (author == null) {
58+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
59+
author = "Unknown artist";
60+
}
61+
5262
JsonBrowser lastElement = runs.get(runs.size() - 1);
5363

5464
if (!lastElement.get("navigationEndpoint").isNull()) {

v2/src/main/java/dev/lavalink/youtube/clients/skeleton/ThumbnailNonMusicClient.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import dev.lavalink.youtube.track.TemporalInfo;
1414
import org.jetbrains.annotations.NotNull;
1515
import org.jetbrains.annotations.Nullable;
16+
import org.slf4j.Logger;
17+
import org.slf4j.LoggerFactory;
1618

1719
import java.io.IOException;
1820
import java.util.List;
@@ -24,6 +26,8 @@
2426
* method instead.
2527
*/
2628
public abstract class ThumbnailNonMusicClient extends NonMusicClient {
29+
private static final Logger log = LoggerFactory.getLogger(ThumbnailNonMusicClient.class);
30+
2731
protected void extractPlaylistTracks(@NotNull JsonBrowser json,
2832
@NotNull List<AudioTrack> tracks,
2933
@NotNull YoutubeAudioSourceManager source) {
@@ -66,6 +70,11 @@ protected AudioTrack extractAudioTrack(@NotNull JsonBrowser json,
6670
String title = DataFormatTools.defaultOnNull(titleJson.get("runs").index(0).get("text").text(), titleJson.get("simpleText").text());
6771
String author = json.get("longBylineText").get("runs").index(0).get("text").text();
6872

73+
if (author == null) {
74+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
75+
author = "Unknown artist";
76+
}
77+
6978
JsonBrowser durationJson = json.get("lengthText");
7079
String durationText = DataFormatTools.defaultOnNull(durationJson.get("runs").index(0).get("text").text(), durationJson.get("simpleText").text());
7180

@@ -87,6 +96,11 @@ public AudioItem loadVideo(@NotNull YoutubeAudioSourceManager source,
8796
String title = videoDetails.get("title").text();
8897
String author = videoDetails.get("author").text();
8998

99+
if (author == null) {
100+
log.debug("Author field is null, client: {}, json: {}", getIdentifier(), json.format());
101+
author = "Unknown artist";
102+
}
103+
90104
TemporalInfo temporalInfo = TemporalInfo.fromRawData(
91105
!playabilityStatus.get("liveStreamability").isNull(),
92106
videoDetails.get("lengthSeconds"),

0 commit comments

Comments
 (0)