Fix loading of model list

This commit is contained in:
0xb00bface 2022-10-08 14:36:01 +02:00
parent a909f2996f
commit c9caaade9d
2 changed files with 44 additions and 19 deletions

View File

@ -6,6 +6,7 @@ public class HttpConstants {
public static final String ACCEPT_ENCODING = "Accept-Encoding";
public static final String ACCEPT_ENCODING_GZIP = "gzip";
public static final String ACCEPT_LANGUAGE = "Accept-Language";
public static final String AUTHORIZATION = "Authorization";
public static final String CACHE_CONTROL = "Cache-Control";
public static final String CONNECTION = "Connection";
public static final String CONTENT_ENCODING = "Content-Encoding";
@ -25,5 +26,6 @@ public class HttpConstants {
public static final String X_XSRF_TOKEN = "X-XSRF-Token";
public static final String X_REQUESTED_WITH = "X-Requested-With";
private HttpConstants() {}
private HttpConstants() {
}
}

View File

@ -34,10 +34,8 @@ public class MVLive extends AbstractSite {
public static final String BASE_URL = "https://www.manyvids.com";
public static final String LIVE_URL = BASE_URL + "/mv-live/";
private final Pattern configPattern = Pattern.compile("<script type=\"combinativ-config\">(.*?)</script>");
private final Pattern graphQlUrlPattern = Pattern.compile("api:\\s*\"(https://.+?.appsync-api..+?.amazonaws.com/graphql)\",");
private final Pattern graphQlApiKeyPattern = Pattern.compile("apiKey:\\s*\"(.*?)\"");
private final Pattern graphQlUrlPattern = Pattern.compile("api:\\s*\"(https://.+?.appsync-api..+?.amazonaws.com/graphql)\"");
private String graphqlBaseUri;
private String apiKey;
private MVLiveHttpClient httpClient;
private String mvtoken;
@ -149,12 +147,6 @@ public class MVLive extends AbstractSite {
Matcher m = graphQlUrlPattern.matcher(content);
if (m.find()) {
graphqlBaseUri = m.group(1);
m = graphQlApiKeyPattern.matcher(content);
if (m.find()) {
apiKey = m.group(1);
} else {
throw new IllegalStateException("GraphQL API key not found");
}
} else {
throw new IllegalStateException("GraphQL URL not found");
}
@ -190,7 +182,34 @@ public class MVLive extends AbstractSite {
public List<Model> getModels() throws IOException {
String body = new JSONObject()
.put("query", "query LanderLiveSessions($nextToken: String, $limit: Int, $country: String, $subdivision: String, $audience: String) { liveSessions( nextToken: $nextToken limit: $limit country: $country subdivision: $subdivision audience: $audience ) { presenters { id age avatarSrc city country name previewImgSrc starOfTheDay status sessionType streamingStartDate towerImgSrc profileHandle } nextToken }}")
.put("query", """
query LanderLiveSessions($nextToken: String, $limit: Int, $country: String, $subdivision: String, $audience: String) {
liveSessions(
nextToken: $nextToken
limit: $limit
country: $country
subdivision: $subdivision
audience: $audience
) {
presenters {
id
age
avatarSrc
city
country
name
previewImgSrc
starOfTheDay
status
sessionType
streamingStartDate
towerImgSrc
profileHandle
}
nextToken
}
}
""")
.put("variables", new JSONObject()
.put("audience", "public")
.put("country", Locale.getDefault().getDisplayCountry(Locale.ENGLISH))
@ -200,14 +219,7 @@ public class MVLive extends AbstractSite {
).toString(2);
RequestBody requestBody = RequestBody.Companion.create(body, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url(getGraphQlUrl())
.header(ACCEPT, "*/*")
.header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header(USER_AGENT, getConfig().getSettings().httpUserAgent)
.header(ORIGIN, MVLive.BASE_URL)
.header(REFERER, MVLive.BASE_URL)
.header("x-api-key", apiKey)
Request request = newRequestBuilder()
.post(requestBody)
.build();
try (Response response = getHttpClient().execute(request)) {
@ -345,5 +357,16 @@ public class MVLive extends AbstractSite {
return super.createModelFromUrl(url);
}
private Request.Builder newRequestBuilder() {
return new Request.Builder()
.url(getGraphQlUrl())
.header(ACCEPT, "*/*")
.header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header(USER_AGENT, getConfig().getSettings().httpUserAgent)
.header(ORIGIN, MVLive.BASE_URL)
.header(REFERER, MVLive.BASE_URL)
.header(AUTHORIZATION, "GUEST");
}
}