Merge branch 'dev' into v4

# Conflicts:
#	client/pom.xml
#	common/pom.xml
#	master/pom.xml
#	server/pom.xml
This commit is contained in:
0xb00bface 2021-01-24 12:36:10 +01:00
commit bd9645105b
6 changed files with 48 additions and 17 deletions

View File

@ -1,3 +1,8 @@
3.13.1
========================
* Fixed Streamate tabs
* Fixed MVLive recordings
3.13.0 3.13.0
======================== ========================
* Added "Recently watched" tab. Can be disabled in Settings -> General * Added "Recently watched" tab. Can be disabled in Settings -> General

View File

@ -2,6 +2,7 @@ package ctbrec.ui.sites.streamate;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*; import static ctbrec.io.HttpConstants.*;
import static ctbrec.sites.streamate.Streamate.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -42,7 +43,7 @@ public class StreamateFollowedService extends PaginatedScheduledService {
public StreamateFollowedService(Streamate streamate) { public StreamateFollowedService(Streamate streamate) {
this.streamate = streamate; this.streamate = streamate;
this.httpClient = (StreamateHttpClient) streamate.getHttpClient(); this.httpClient = (StreamateHttpClient) streamate.getHttpClient();
this.url = "https://member.naiadsystems.com/search/v3/favorites?domain=streamate.com&filters="; this.url = NAIAD_URL + "/favorites?domain=streamate.com&filters=";
} }
@Override @Override

View File

@ -15,7 +15,7 @@ import javafx.scene.Scene;
import javafx.scene.control.Tab; import javafx.scene.control.Tab;
public class StreamateTabProvider extends TabProvider { public class StreamateTabProvider extends TabProvider {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateTabProvider.class); private static final Logger LOG = LoggerFactory.getLogger(StreamateTabProvider.class);
private Streamate streamate; private Streamate streamate;
private Recorder recorder; private Recorder recorder;
private ThumbOverviewTab followedTab; private ThumbOverviewTab followedTab;
@ -29,15 +29,17 @@ public class StreamateTabProvider extends TabProvider {
public List<Tab> getTabs(Scene scene) { public List<Tab> getTabs(Scene scene) {
List<Tab> tabs = new ArrayList<>(); List<Tab> tabs = new ArrayList<>();
try { try {
tabs.add(createTab("Girls", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:f")); // performers?domain=streamate.com&from=0&size=48&useProductScore=false&filters=gender:f,ff,mf,tm2f,g;online:true&boostedFilters=&excludedFilters=&country=DE&language=de&genderSetting=f
tabs.add(createTab("Guys", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:m")); //https://member.naiadsystems.com/search/v3/performers?domain=streamate.com&filters=gender:f;online:true&from=0&size=48
tabs.add(createTab("Couples", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:mf")); tabs.add(createTab("Girls", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:f;online:true"));
tabs.add(createTab("Lesbian", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:ff")); tabs.add(createTab("Guys", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:m;online:true"));
tabs.add(createTab("Gay", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:mm")); tabs.add(createTab("Couples", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mf;online:true"));
tabs.add(createTab("Groups", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:g")); tabs.add(createTab("Lesbian", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:ff;online:true"));
tabs.add(createTab("Trans female", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:tm2f")); tabs.add(createTab("Gay", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mm;online:true"));
tabs.add(createTab("Trans male", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:tf2m")); tabs.add(createTab("Groups", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:g;online:true"));
tabs.add(createTab("New", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=new:true")); tabs.add(createTab("Trans female", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tm2f;online:true"));
tabs.add(createTab("Trans male", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:tf2m;online:true"));
tabs.add(createTab("New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=new:true;online:true"));
followedTab = new StreamateFollowedTab(streamate); followedTab = new StreamateFollowedTab(streamate);
followedTab.setRecorder(recorder); followedTab.setRecorder(recorder);

View File

@ -1,10 +1,12 @@
package ctbrec.ui.sites.streamate; package ctbrec.ui.sites.streamate;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathExpressionException;
@ -46,9 +48,18 @@ public class StreamateUpdateService extends PaginatedScheduledService {
@Override @Override
public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
int from = (page - 1) * MODELS_PER_PAGE; int from = (page - 1) * MODELS_PER_PAGE;
String saKey = httpClient.getSaKey();
String pageUrl = url + "&from=" + from + "&size=" + MODELS_PER_PAGE; String pageUrl = url + "&from=" + from + "&size=" + MODELS_PER_PAGE;
LOG.debug("Fetching page {}", pageUrl); LOG.debug("Fetching page {}", pageUrl);
Request request = httpClient.newRequestBuilder().url(pageUrl).build(); Request request = httpClient.newRequestBuilder()
.url(pageUrl)
.header(ORIGIN, streamate.getBaseUrl())
.header("sakey", saKey)
.header("platform", "SCP")
.header("smtid", UUID.randomUUID().toString() + "G0211569057409")
.header("smeid", UUID.randomUUID().toString() + "G0211569057409")
.header("smvid", UUID.randomUUID().toString() + "G0211569057409")
.build();
try (Response response = httpClient.execute(request)) { try (Response response = httpClient.execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
List<Model> models = new ArrayList<>(); List<Model> models = new ArrayList<>();
@ -60,7 +71,6 @@ public class StreamateUpdateService extends PaginatedScheduledService {
String nickname = p.getString("nickname"); String nickname = p.getString("nickname");
StreamateModel model = (StreamateModel) streamate.createModel(nickname); StreamateModel model = (StreamateModel) streamate.createModel(nickname);
model.setId(p.getLong("id")); model.setId(p.getLong("id"));
//model.setPreview(p.getString("thumbnail"));
model.setPreview("https://cdn.nsimg.net/snap/320x240/" + model.getId() + ".jpg"); model.setPreview("https://cdn.nsimg.net/snap/320x240/" + model.getId() + ".jpg");
model.setDescription(p.optString("headlineMessage")); model.setDescription(p.optString("headlineMessage"));
boolean online = p.optBoolean("online"); boolean online = p.optBoolean("online");

View File

@ -34,7 +34,7 @@ public class MVLive extends AbstractSite {
private static final Logger LOG = LoggerFactory.getLogger(MVLive.class); private static final Logger LOG = LoggerFactory.getLogger(MVLive.class);
public static final String APP_HOST = "app-v1.live.manyvids.com"; public static final String APP_HOST = "app-v2.live.manyvids.com";
public static final String WS_URL = "wss://" + APP_HOST; public static final String WS_URL = "wss://" + APP_HOST;
public static final String WS_ORIGIN = "https://live.manyvids.com"; public static final String WS_ORIGIN = "https://live.manyvids.com";
public static final String BASE_URL = "https://www.manyvids.com/MVLive/"; public static final String BASE_URL = "https://www.manyvids.com/MVLive/";

View File

@ -1,10 +1,13 @@
package ctbrec.sites.streamate; package ctbrec.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -27,6 +30,7 @@ public class Streamate extends AbstractSite {
private static final Logger LOG = LoggerFactory.getLogger(Streamate.class); private static final Logger LOG = LoggerFactory.getLogger(Streamate.class);
public static final String BASE_URL = "https://www.streamate.com"; public static final String BASE_URL = "https://www.streamate.com";
public static final String NAIAD_URL = "https://member.naiadsystems.com/search/v3";
private StreamateHttpClient httpClient; private StreamateHttpClient httpClient;
@ -43,7 +47,6 @@ public class Streamate extends AbstractSite {
@Override @Override
public String getAffiliateLink() { public String getAffiliateLink() {
return BASE_URL + "/landing/click/?AFNO=2-11329.1"; return BASE_URL + "/landing/click/?AFNO=2-11329.1";
// return BASE_URL + "/landing/click/?AFNO=2-11330.2";
} }
@Override @Override
@ -141,8 +144,18 @@ public class Streamate extends AbstractSite {
@Override @Override
public List<Model> search(String q) throws IOException, InterruptedException { public List<Model> search(String q) throws IOException, InterruptedException {
String url = BASE_URL + "/api/search/autocomplete?exact=false&skin_search_kids=0&results_per_page=10&query=" + URLEncoder.encode(q, "utf-8"); String url = NAIAD_URL + "/autocomplete?filters=gender:&performerCount=10&domain=streamate.com&tagCount=5&query=" + URLEncoder.encode(q, "utf-8");
Request req = httpClient.newRequestBuilder().url(url).build(); LOG.debug("Search: {}", url);
String saKey = httpClient.getSaKey();
Request req = httpClient.newRequestBuilder()
.url(url)
.header(ORIGIN, getBaseUrl())
.header("sakey", saKey)
.header("platform", "SCP")
.header("smtid", UUID.randomUUID().toString() + "G0211569057409")
.header("smeid", UUID.randomUUID().toString() + "G0211569057409")
.header("smvid", UUID.randomUUID().toString() + "G0211569057409")
.build();
try (Response response = getHttpClient().execute(req)) { try (Response response = getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String body = response.body().string(); String body = response.body().string();