From e63107cd938dcc16000c19ab8f629ca695640ebc Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Wed, 1 Mar 2023 19:19:26 +0100 Subject: [PATCH] Add original stream quality playlist to stream sources for Stripchat --- .../sites/stripchat/StripchatModel.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java b/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java index 8746d6ee..5092a6ed 100644 --- a/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java +++ b/common/src/main/java/ctbrec/sites/stripchat/StripchatModel.java @@ -85,7 +85,21 @@ public class StripchatModel extends AbstractModel { @Override public List getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { - MasterPlaylist masterPlaylist = getMasterPlaylist(); + String url = getMasterPlaylistUrl(); + MasterPlaylist masterPlaylist = getMasterPlaylist(url); + List streamSources = extractStreamSources(masterPlaylist); + try { + String originalUrl = url.replace("_auto", ""); + masterPlaylist = getMasterPlaylist(originalUrl); + List originalStreamSource = extractStreamSources(masterPlaylist); + streamSources.addAll(originalStreamSource); + } catch (Exception e) { + LOG.warn("Original stream quality not available", e); + } + return streamSources; + } + + private List extractStreamSources(MasterPlaylist masterPlaylist) { List sources = new ArrayList<>(); for (PlaylistData playlist : masterPlaylist.getPlaylists()) { if (playlist.hasStreamInfo()) { @@ -103,8 +117,7 @@ public class StripchatModel extends AbstractModel { return sources; } - private MasterPlaylist getMasterPlaylist() throws IOException, ParseException, PlaylistException { - String url = getMasterPlaylistUrl(); + private MasterPlaylist getMasterPlaylist(String url) throws IOException, ParseException, PlaylistException { LOG.trace("Loading master playlist {}", url); Request req = new Request.Builder() .url(url) @@ -138,7 +151,9 @@ public class StripchatModel extends AbstractModel { .build(); try (Response response = site.getHttpClient().execute(req)) { if (response.isSuccessful()) { - JSONObject jsonResponse = new JSONObject(response.body().string()); + String body = response.body().string(); + LOG.trace(body); + JSONObject jsonResponse = new JSONObject(body); String streamName = jsonResponse.optString("streamName", jsonResponse.optString("")); JSONObject viewServers = jsonResponse.getJSONObject("viewServers"); String serverName = viewServers.optString("flashphoner-hls");