diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java b/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java index 188f2378..7013dfd8 100644 --- a/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java +++ b/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java @@ -484,7 +484,7 @@ public class MyFreeCamsClient { lock.lock(); try { for (SessionState state : sessionStates.values()) { - if(Objects.equals(state.getNm(), model.getName())) { + if(Objects.equals(state.getNm(), model.getName()) || Objects.equals(model.getUid(), state.getUid())) { model.update(state, getStreamUrl(state)); return; } diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java b/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java index 36a24da6..db794ae2 100644 --- a/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java +++ b/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java @@ -23,6 +23,8 @@ import com.iheartradio.m3u8.PlaylistParser; import com.iheartradio.m3u8.data.MasterPlaylist; import com.iheartradio.m3u8.data.Playlist; import com.iheartradio.m3u8.data.PlaylistData; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; import ctbrec.AbstractModel; import ctbrec.recorder.download.StreamSource; @@ -37,7 +39,7 @@ public class MyFreeCamsModel extends AbstractModel { private static final transient Logger LOG = LoggerFactory.getLogger(MyFreeCamsModel.class); - private int uid; + private int uid = -1; // undefined private String hlsUrl; private double camScore; private int viewerCount; @@ -207,7 +209,17 @@ public class MyFreeCamsModel extends AbstractModel { this.state = state; } + @Override + public void setName(String name) { + if(getName() != null && name != null && !getName().equals(name)) { + LOG.debug("Model name changed {} -> {}", getName(), name); + } + super.setName(name); + } + public void update(SessionState state, String streamUrl) { + uid = Integer.parseInt(state.getUid().toString()); + setName(state.getNm()); setCamScore(state.getM().getCamscore()); setState(State.of(state.getVs())); setStreamUrl(streamUrl); @@ -308,4 +320,15 @@ public class MyFreeCamsModel extends AbstractModel { public Site getSite() { return site; } + + @Override + public void readSiteSpecificData(JsonReader reader) throws IOException { + reader.nextName(); + uid = reader.nextInt(); + } + + @Override + public void writeSiteSpecificData(JsonWriter writer) throws IOException { + writer.name("uid").value(uid); + } }