Split Team Skeet and MYLF into new networks Pervz, Swappz and Free Use.
This commit is contained in:
@@ -193,6 +193,13 @@ module.exports = {
|
||||
// first anal quest
|
||||
doubleviewcasting: firstanalquest,
|
||||
firstanalquest,
|
||||
// paper street media / team skeet
|
||||
teamskeet,
|
||||
sayuncle: teamskeet,
|
||||
mylf: teamskeet,
|
||||
pervz: teamskeet,
|
||||
swappz: teamskeet,
|
||||
freeuse: teamskeet,
|
||||
// etc
|
||||
'18vr': badoink,
|
||||
theflourishxxx: theflourish,
|
||||
@@ -228,7 +235,6 @@ module.exports = {
|
||||
littlecapricedreams,
|
||||
mariskax,
|
||||
missax,
|
||||
mylf: teamskeet,
|
||||
nebraskacoeds: elevatedx,
|
||||
pascalssubsluts,
|
||||
pervcity,
|
||||
@@ -239,7 +245,6 @@ module.exports = {
|
||||
private: privateNetwork,
|
||||
realvr: badoink,
|
||||
rickysroom,
|
||||
sayuncle: teamskeet,
|
||||
score,
|
||||
sexlikereal,
|
||||
spermmania: snowvalley,
|
||||
@@ -253,7 +258,6 @@ module.exports = {
|
||||
uralesbian: snowvalley,
|
||||
rawattack: spizoo,
|
||||
spizoo,
|
||||
teamskeet,
|
||||
// teencoreclub,
|
||||
teenmegaworld,
|
||||
testedefudelidade,
|
||||
|
||||
@@ -89,9 +89,18 @@ module.exports = {
|
||||
brazzers: aylo,
|
||||
gaywire: aylo,
|
||||
sexyhub: aylo,
|
||||
// daringsex,
|
||||
// arch angel
|
||||
// paper street media / team skeet
|
||||
teamskeet,
|
||||
sayuncle: teamskeet,
|
||||
mylf: teamskeet,
|
||||
pervz: teamskeet,
|
||||
swappz: teamskeet,
|
||||
freeuse: teamskeet,
|
||||
// etc
|
||||
analvids: pornbox,
|
||||
kellymadison,
|
||||
kink,
|
||||
'8kmembers': kellymadison,
|
||||
amateurallure: julesjordan,
|
||||
americanpornstar,
|
||||
amateureuro: porndoe,
|
||||
@@ -133,19 +142,13 @@ module.exports = {
|
||||
jesseloadsmonsterfacials,
|
||||
julesjordan,
|
||||
karups,
|
||||
kellymadison,
|
||||
'8kmembers': kellymadison,
|
||||
kink,
|
||||
// kinkvr: badoink,
|
||||
// analvids,
|
||||
analvids: pornbox,
|
||||
// etc.
|
||||
littlecapricedreams,
|
||||
loveherfilms,
|
||||
mamacitaz: porndoe,
|
||||
mariskax,
|
||||
mikeadriano,
|
||||
missax,
|
||||
mylf: teamskeet,
|
||||
naughtyamerica,
|
||||
nebraskacoeds: elevatedx,
|
||||
newsensations,
|
||||
@@ -161,7 +164,6 @@ module.exports = {
|
||||
private: privateNetwork,
|
||||
radical,
|
||||
rickysroom,
|
||||
sayuncle: teamskeet,
|
||||
score,
|
||||
sexlikereal,
|
||||
snowvalley,
|
||||
@@ -169,7 +171,6 @@ module.exports = {
|
||||
swallowsalon: julesjordan,
|
||||
teencoreclub,
|
||||
teenmegaworld,
|
||||
teamskeet,
|
||||
testedefudelidade,
|
||||
theflourish,
|
||||
tokyohot,
|
||||
|
||||
@@ -22,7 +22,26 @@ function getChannelSlug(channelName, entity) {
|
||||
return channel?.slug || null;
|
||||
}
|
||||
|
||||
function scrapeScene(scene, channel, parameters) {
|
||||
async function fetchTrailerUrl(videoId, entity) {
|
||||
const res = await unprint.get(`https://sstg.psmcode.com/?videoId=${videoId}`, {
|
||||
headers: {
|
||||
Origin: entity.origin,
|
||||
'sec-fetch-site': 'cross-site',
|
||||
},
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
const token = res.data.token;
|
||||
|
||||
if (token) {
|
||||
return `https://customer-bk3o9te23pydwwcb.cloudflarestream.com/${token}/manifest/video.mpd?parentOrigin=${entity.origin}`;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
async function scrapeScene(scene, channel, parameters, includeTrailers) {
|
||||
const release = {};
|
||||
|
||||
release.entryId = scene.id;
|
||||
@@ -35,7 +54,7 @@ function scrapeScene(scene, channel, parameters) {
|
||||
// release.actors = scene.models?.map((model) => model.modelName) || [];
|
||||
release.actors = scene.models?.map((model) => ({
|
||||
name: model.modelName || model.name || model.title,
|
||||
avatar: parameters.avatars && `${parameters.avatars}/${slugify(model.modelName || model.name || model.title, '_')}.jpg`,
|
||||
avatar: model.img || (parameters.avatars && `${parameters.avatars}/${slugify(model.modelName || model.name || model.title, '_')}.jpg`),
|
||||
url: `${channel.url}/models/${model.modelId || model.id}`,
|
||||
}));
|
||||
|
||||
@@ -51,8 +70,9 @@ function scrapeScene(scene, channel, parameters) {
|
||||
|
||||
release.teaser = scene.videoTrailer;
|
||||
|
||||
if (scene.video) {
|
||||
release.trailer = `https://cloudflarestream.com/${scene.video}/manifest/video.mpd?parentOrigin=${encodeURIComponent(channel.url)}`;
|
||||
if (scene.video && includeTrailers) {
|
||||
// release.trailer = `https://cloudflarestream.com/${scene.video}/manifest/video.mpd?parentOrigin=${encodeURIComponent(channel.url)}`;
|
||||
release.trailer = await fetchTrailerUrl(scene.video, channel);
|
||||
}
|
||||
|
||||
release.tags = scene.tags;
|
||||
@@ -66,7 +86,7 @@ function scrapeScene(scene, channel, parameters) {
|
||||
}
|
||||
|
||||
function scrapeAll(scenes, channel, parameters) {
|
||||
return scenes.map((scene) => scrapeScene(scene, channel, parameters));
|
||||
return Promise.all(scenes.map(async (scene) => scrapeScene(scene, channel, parameters)));
|
||||
}
|
||||
|
||||
async function fetchLatest(channel, page = 1, { parameters }) {
|
||||
@@ -99,7 +119,11 @@ async function fetchLatestOrganic(channel, page, context) {
|
||||
}
|
||||
|
||||
async function fetchLatestSearch(channel, page = 1, { parameters }) {
|
||||
const res = await http.get(`https://tours-store.psmcdn.net/${parameters.fullEndpoint || parameters.endpoint}/_search?q=(site.seo.seoSlug:%22${parameters.id}%22%20AND%20type:video)&sort=publishedDate:desc&size=30&from=${(page - 1) * 30}`);
|
||||
const url = parameters.id
|
||||
? `https://tours-store.psmcdn.net/${parameters.fullEndpoint || parameters.endpoint}/_search?q=(site.seo.seoSlug:"${parameters.id}" AND type:video)&sort=publishedDate:desc&size=30&from=${(page - 1) * 30}`
|
||||
: `https://tours-store.psmcdn.net/${parameters.fullEndpoint || parameters.endpoint}/_search?sort=publishedDate:desc&q=(type:video AND isXSeries:false)&size=30&from=${(page - 1) * 30}`;
|
||||
|
||||
const res = await http.get(url);
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeAll(res.body.hits.hits.map(({ _source: scene }) => scene), channel, parameters);
|
||||
@@ -108,8 +132,8 @@ async function fetchLatestSearch(channel, page = 1, { parameters }) {
|
||||
return res.status;
|
||||
}
|
||||
|
||||
async function fetchScene(url, channel, baseScene, { parameters }) {
|
||||
if (parameters.layout !== 'organic' && baseScene?.entryId) {
|
||||
async function fetchScene(url, channel, baseScene, { parameters, includeTrailers }) {
|
||||
if (parameters.layout !== 'organic' && baseScene?.entryId && !includeTrailers) {
|
||||
// overview and deep data is the same in elastic API, don't hit server unnecessarily
|
||||
return baseScene;
|
||||
}
|
||||
@@ -134,7 +158,7 @@ async function fetchScene(url, channel, baseScene, { parameters }) {
|
||||
const video = videos?.[sceneSlug] || Object.values(videos)[0];
|
||||
|
||||
if (video) {
|
||||
return scrapeScene(video, channel, parameters);
|
||||
return scrapeScene(video, channel, parameters, includeTrailers);
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -143,7 +167,7 @@ async function fetchScene(url, channel, baseScene, { parameters }) {
|
||||
return res.status;
|
||||
}
|
||||
|
||||
function scrapeProfile(actor, entity, parameters) {
|
||||
async function scrapeProfile(actor, entity, parameters) {
|
||||
const profile = {};
|
||||
|
||||
profile.url = `${entity.url}/models/${actor.id}`;
|
||||
@@ -203,7 +227,7 @@ function scrapeProfile(actor, entity, parameters) {
|
||||
|
||||
profile.avatar = actor.img;
|
||||
profile.banner = actor.cover;
|
||||
profile.scenes = actor.movies?.map((scene) => scrapeScene(scene, entity, parameters));
|
||||
profile.scenes = await Promise.all(actor.movies?.map(async (scene) => scrapeScene(scene, entity, parameters)));
|
||||
|
||||
return profile;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user