diff --git a/src/main/java/netneutrality/music/source/UdioAudioSourceManager.java b/src/main/java/netneutrality/music/source/UdioAudioSourceManager.java index 836c275..264e96e 100644 --- a/src/main/java/netneutrality/music/source/UdioAudioSourceManager.java +++ b/src/main/java/netneutrality/music/source/UdioAudioSourceManager.java @@ -91,6 +91,7 @@ public class UdioAudioSourceManager implements AudioSourceManager { JsonBrowser trackInfo = loadTrackInfoFromPageContent(content); if (trackInfo == null) { + log.debug("Udio HTML: {}", content); throw new FriendlyException("Udio: Failed to extract track information from web page.", SUSPICIOUS, null); } @@ -110,21 +111,20 @@ public class UdioAudioSourceManager implements AudioSourceManager { String json = DataFormatTools.extractBetween(content, "self.__next_f.push([1,\"8:", "\\n\"])"); - if (json != null) { - json = json.replace("\\", ""); - - try { - JsonBrowser parsedJson = JsonBrowser.parse(json); - return parsedJson.index(3).get("children").index(3).get("children").index(3).get("track"); - } catch (JsonParseException e) { - log.debug("Udio HTML: {}", content); - - return null; - } - + if (json == null) { + log.error("Track JSON not found in page"); + return null; } - return null; + try { + String unescapedJson = json.replace("\\", ""); + JsonBrowser parsedJson = JsonBrowser.parse(unescapedJson); + + return parsedJson.index(3).get("children").index(3).get("children").index(3).get("track"); + } catch (JsonParseException e) { + log.error("Failed to parse track JSON: {}", json); + return null; + } } @Override diff --git a/src/main/java/netneutrality/music/source/UdioAudioTrack.java b/src/main/java/netneutrality/music/source/UdioAudioTrack.java index 8829a08..3fd4d31 100644 --- a/src/main/java/netneutrality/music/source/UdioAudioTrack.java +++ b/src/main/java/netneutrality/music/source/UdioAudioTrack.java @@ -44,8 +44,6 @@ public class UdioAudioTrack extends DelegatedAudioTrack { @Override public void process(LocalAudioTrackExecutor localExecutor) throws Exception { - - try (HttpInterface httpInterface = sourceManager.getHttpInterface()) { String playbackUrl = loadPlaybackUrl(httpInterface); @@ -58,7 +56,7 @@ public class UdioAudioTrack extends DelegatedAudioTrack { } private String loadPlaybackUrl(HttpInterface httpInterface) throws IOException { - JsonBrowser trackInfo = loadPlayerConfig(httpInterface); + JsonBrowser trackInfo = loadTrackInfo(httpInterface); if (trackInfo == null) { throw new FriendlyException("Udio: Failed to extract track information from web page.", SUSPICIOUS, null); @@ -67,7 +65,7 @@ public class UdioAudioTrack extends DelegatedAudioTrack { return trackInfo.get("song_path").text(); } - private JsonBrowser loadPlayerConfig(HttpInterface httpInterface) throws IOException { + private JsonBrowser loadTrackInfo(HttpInterface httpInterface) throws IOException { try (CloseableHttpResponse response = httpInterface.execute(new HttpGet(trackInfo.identifier))) { int statusCode = response.getStatusLine().getStatusCode();