Add tab "Most Popular" to MyFreeCams

This commit is contained in:
0xboobface 2018-10-24 14:02:41 +02:00
parent b87f828313
commit a8ca3068ed
3 changed files with 47 additions and 0 deletions

View File

@ -40,6 +40,7 @@ public class MyFreeCamsModel extends AbstractModel {
private int uid; private int uid;
private String hlsUrl; private String hlsUrl;
private double camScore; private double camScore;
private int viewerCount;
private State state; private State state;
private int resolution[]; private int resolution[];
private MyFreeCams site; private MyFreeCams site;
@ -232,6 +233,8 @@ public class MyFreeCamsModel extends AbstractModel {
LOG.warn("Couldn't url decode topic", e); LOG.warn("Couldn't url decode topic", e);
} }
}); });
viewerCount = Optional.ofNullable(state.getM()).map((m) -> m.getRc()).orElseGet(() -> 0);
} }
@Override @Override
@ -252,6 +255,14 @@ public class MyFreeCamsModel extends AbstractModel {
this.uid = uid; this.uid = uid;
} }
public int getViewerCount() {
return viewerCount;
}
public void setViewerCount(int viewerCount) {
this.viewerCount = viewerCount;
}
@Override @Override
public void setSite(Site site) { public void setSite(Site site) {
if(site instanceof MyFreeCams) { if(site instanceof MyFreeCams) {

View File

@ -43,6 +43,12 @@ public class MyFreeCamsTabProvider extends TabProvider {
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10))); updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
tabs.add(hd); tabs.add(hd);
updateService = new PopularModelService();
ThumbOverviewTab pop = new ThumbOverviewTab("Most Popular", updateService, myFreeCams);
pop.setRecorder(recorder);
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
tabs.add(pop);
return tabs; return tabs;
} }

View File

@ -0,0 +1,30 @@
package ctbrec.sites.mfc;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import ctbrec.Model;
import ctbrec.ui.PaginatedScheduledService;
import javafx.concurrent.Task;
public class PopularModelService extends PaginatedScheduledService {
@Override
protected Task<List<Model>> createTask() {
return new Task<List<Model>>() {
@Override
public List<Model> call() throws IOException {
MyFreeCamsClient client = MyFreeCamsClient.getInstance();
int modelsPerPage = 50;
return client.getModels().stream()
.filter(m -> m.getPreview() != null)
.filter(m -> m.getStreamUrl() != null)
.sorted((m1, m2) -> m2.getViewerCount() - m1.getViewerCount())
.skip( (page-1) * modelsPerPage)
.limit(modelsPerPage)
.collect(Collectors.toList());
}
};
}
}