forked from j62/ctbrec
1
0
Fork 0

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

View File

@ -43,6 +43,12 @@ public class MyFreeCamsTabProvider extends TabProvider {
updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
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;
}

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());
}
};
}
}