Implement live preview for MFC

This commit is contained in:
0xboobface 2018-10-24 15:47:56 +02:00
parent 5cb900fe55
commit 45c17cfaa4
2 changed files with 33 additions and 0 deletions

View File

@ -513,6 +513,7 @@ public class MyFreeCamsClient {
if(Objects.equals(state.getNm(), model.getName())) {
JsonAdapter<SessionState> adapter = moshi.adapter(SessionState.class).indent(" ");
System.out.println(adapter.toJson(state));
System.out.println(model.getPreview());
System.out.println("#####################");
}
}

View File

@ -216,6 +216,13 @@ public class MyFreeCamsModel extends AbstractModel {
String uid = state.getUid().toString();
String uidStart = uid.substring(0, 3);
String previewUrl = "https://img.mfcimg.com/photos2/"+uidStart+'/'+uid+"/avatar.300x300.jpg";
if(MyFreeCamsModel.this.state == State.ONLINE) {
try {
previewUrl = getLivePreviewUrl(state);
} catch(Exception e) {
LOG.debug("Couldn't get live preview. Falling back to avatar", e);
}
}
setPreview(previewUrl);
// tags
@ -237,6 +244,31 @@ public class MyFreeCamsModel extends AbstractModel {
viewerCount = Optional.ofNullable(state.getM()).map((m) -> m.getRc()).orElseGet(() -> 0);
}
private String getLivePreviewUrl(SessionState state) {
String previewUrl;
int userChannel = 100000000 + state.getUid();
int camserv = state.getU().getCamserv();
String server = Integer.toString(camserv);
ServerConfig sc = site.getClient().getServerConfig();
if(sc.isOnNgServer(state)) {
server = sc.ngVideoServers.get(Integer.toString(camserv));
camserv = Integer.parseInt(server.replaceAll("video", ""));
previewUrl = "https://snap.mfcimg.com/snapimg/" + camserv + "/320x240/mfc_" + state.getU().getPhase()+ '_' + userChannel;
} else if(sc.isOnWzObsVideoServer(state)) {
server = sc.wsServers.get(Integer.toString(camserv));
camserv = Integer.parseInt(server.replaceAll("video", ""));
previewUrl = "https://snap.mfcimg.com/snapimg/" + camserv + "/320x240/mfc_" + state.getU().getPhase()+ '_' + userChannel;
} else if(sc.isOnHtml5VideoServer(state)) {
server = sc.h5Servers.get(Integer.toString(camserv));
camserv = Integer.parseInt(server.replaceAll("video", ""));
previewUrl = "https://snap.mfcimg.com/snapimg/" + camserv + "/320x240/mfc_" + userChannel;
} else {
if(camserv > 500) camserv -= 500;
previewUrl = "https://snap.mfcimg.com/snapimg/" + camserv + "/320x240/mfc_" + userChannel;
}
return previewUrl;
}
@Override
public boolean follow() {
return false;