diff --git a/CHANGELOG.md b/CHANGELOG.md index d42c1336..3059d84a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +3.13.1 +======================== +* Fixed Streamate tabs +* Fixed MVLive recordings + 3.13.0 ======================== * Added "Recently watched" tab. Can be disabled in Settings -> General diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java index df748903..373cd3da 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java @@ -2,6 +2,7 @@ package ctbrec.ui.sites.streamate; import static ctbrec.Model.State.*; import static ctbrec.io.HttpConstants.*; +import static ctbrec.sites.streamate.Streamate.*; import java.io.IOException; import java.util.ArrayList; @@ -42,7 +43,7 @@ public class StreamateFollowedService extends PaginatedScheduledService { public StreamateFollowedService(Streamate streamate) { this.streamate = streamate; 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 diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java index 067eab20..5642d987 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java @@ -15,7 +15,7 @@ import javafx.scene.Scene; import javafx.scene.control.Tab; 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 Recorder recorder; private ThumbOverviewTab followedTab; @@ -29,15 +29,17 @@ public class StreamateTabProvider extends TabProvider { public List getTabs(Scene scene) { List tabs = new ArrayList<>(); try { - tabs.add(createTab("Girls", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:f")); - tabs.add(createTab("Guys", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:m")); - tabs.add(createTab("Couples", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:mf")); - tabs.add(createTab("Lesbian", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:ff")); - tabs.add(createTab("Gay", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:mm")); - tabs.add(createTab("Groups", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:g")); - tabs.add(createTab("Trans female", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:tm2f")); - tabs.add(createTab("Trans male", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=gender:tf2m")); - tabs.add(createTab("New", Streamate.BASE_URL + "/api/search/list?domain=streamate.com&index=availperf&filters=new:true")); + // 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 + //https://member.naiadsystems.com/search/v3/performers?domain=streamate.com&filters=gender:f;online:true&from=0&size=48 + tabs.add(createTab("Girls", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:f;online:true")); + tabs.add(createTab("Guys", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:m;online:true")); + tabs.add(createTab("Couples", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mf;online:true")); + tabs.add(createTab("Lesbian", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:ff;online:true")); + tabs.add(createTab("Gay", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:mm;online:true")); + tabs.add(createTab("Groups", Streamate.NAIAD_URL + "/performers?domain=streamate.com&boostedFilters=&excludedFilters=&useProductScore=false&filters=gender:g;online: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.setRecorder(recorder); diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java index a38512ef..2700cf1a 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java @@ -1,10 +1,12 @@ package ctbrec.ui.sites.streamate; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; @@ -46,9 +48,18 @@ public class StreamateUpdateService extends PaginatedScheduledService { @Override public List call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { int from = (page - 1) * MODELS_PER_PAGE; + String saKey = httpClient.getSaKey(); String pageUrl = url + "&from=" + from + "&size=" + MODELS_PER_PAGE; 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)) { if (response.isSuccessful()) { List models = new ArrayList<>(); @@ -60,7 +71,6 @@ public class StreamateUpdateService extends PaginatedScheduledService { String nickname = p.getString("nickname"); StreamateModel model = (StreamateModel) streamate.createModel(nickname); model.setId(p.getLong("id")); - //model.setPreview(p.getString("thumbnail")); model.setPreview("https://cdn.nsimg.net/snap/320x240/" + model.getId() + ".jpg"); model.setDescription(p.optString("headlineMessage")); boolean online = p.optBoolean("online"); diff --git a/common/src/main/java/ctbrec/sites/manyvids/MVLive.java b/common/src/main/java/ctbrec/sites/manyvids/MVLive.java index e3cfea35..76aa2ac5 100644 --- a/common/src/main/java/ctbrec/sites/manyvids/MVLive.java +++ b/common/src/main/java/ctbrec/sites/manyvids/MVLive.java @@ -34,7 +34,7 @@ public class MVLive extends AbstractSite { 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_ORIGIN = "https://live.manyvids.com"; public static final String BASE_URL = "https://www.manyvids.com/MVLive/"; diff --git a/common/src/main/java/ctbrec/sites/streamate/Streamate.java b/common/src/main/java/ctbrec/sites/streamate/Streamate.java index 8f845622..a6f3629a 100644 --- a/common/src/main/java/ctbrec/sites/streamate/Streamate.java +++ b/common/src/main/java/ctbrec/sites/streamate/Streamate.java @@ -1,10 +1,13 @@ package ctbrec.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -27,6 +30,7 @@ public class Streamate extends AbstractSite { private static final Logger LOG = LoggerFactory.getLogger(Streamate.class); 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; @@ -43,7 +47,6 @@ public class Streamate extends AbstractSite { @Override public String getAffiliateLink() { return BASE_URL + "/landing/click/?AFNO=2-11329.1"; - // return BASE_URL + "/landing/click/?AFNO=2-11330.2"; } @Override @@ -141,8 +144,18 @@ public class Streamate extends AbstractSite { @Override public List 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"); - Request req = httpClient.newRequestBuilder().url(url).build(); + String url = NAIAD_URL + "/autocomplete?filters=gender:&performerCount=10&domain=streamate.com&tagCount=5&query=" + URLEncoder.encode(q, "utf-8"); + 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)) { if (response.isSuccessful()) { String body = response.body().string();