Adapted Score scraper for 18eighteen, 40 Something Mag and 50 Plus Milfs. Updated Score network logo and favicon.

This commit is contained in:
2020-02-03 02:57:53 +01:00
parent dfa0183669
commit 5bae5b6e5f
9 changed files with 42 additions and 21 deletions

View File

@@ -362,10 +362,12 @@ async function scrapeActors(actorNames) {
}
logger.verbose(`No profile for '${actorName}' available on ${scraperSlug}`);
throw new Error(`Profile for ${actorName} not available on ${scraperSlug}`);
throw Object.assign(new Error(`Profile for ${actorName} not available on ${scraperSlug}`), { warn: false });
}), Promise.reject(new Error()));
} catch (error) {
logger.warn(`Error in scraper ${source}: ${error.message}`);
if (error.warn !== false) {
logger.warn(`Error in scraper ${source}: ${error.message}`);
}
}
return null;

View File

@@ -29,7 +29,7 @@ async function fetchPhotos(url) {
}
function scrapeAll(html) {
return exa(html, '.container .video').map(({ q, qa, qd, ql }) => {
return exa(html, '.container .video, .container-fluid .video').map(({ q, qa, qd, ql }) => {
const release = {};
release.title = q('.title, .i-title', true);
@@ -70,10 +70,10 @@ async function scrapeScene(html, url) {
[release.entryId] = new URL(url).pathname.split('/').slice(-2);
release.title = q('h2.text-uppercase, h2.title', true);
release.title = q('h2.text-uppercase, h2.title, #breadcrumb-top + h1', true);
release.description = qtext('.p-desc, .desc');
release.actors = qa('.value a[href*=models], .value a[href*=performer]', true);
release.actors = qa('.value a[href*=models], .value a[href*=performer], .value a[href*=teen-babes]', true);
release.tags = qa('a[href*=tag]', true);
const dateEl = qa('.value').find(el => /\w+ \d+\w+, \d{4}/.test(el.textContent));
@@ -161,8 +161,8 @@ function scrapeProfile(html) {
const avatar = qi('img');
if (avatar) profile.avatar = avatar;
const releases = ex(html, '#model-page + .container');
profile.releases = scrapeAll(releases.document.outerHTML);
const releases = ex(html, '#model-page + .container, #model-page + .container-fluid');
if (releases) profile.releases = scrapeAll(releases.document.outerHTML);
return profile;
}
@@ -189,10 +189,16 @@ async function fetchScene(url, site) {
return null;
}
async function fetchProfile(actorName, scraperSlug, page = 1) {
async function fetchProfile(actorName, scraperSlug, page = 1, source = 0) {
const letter = actorName.charAt(0).toUpperCase();
const url = `https://www.scoreland.com/big-boob-models/browse/${letter}/?page=${page}`;
const sources = [
`https://www.scoreland.com/big-boob-models/browse/${letter}/?page=${page}`,
`https://www.50plusmilfs.com/xxx-milf-models/browse/${letter}/?page=${page}`,
];
const url = sources[source];
const res = await bhttp.get(url, {
followRedirects: false,
});
@@ -210,7 +216,11 @@ async function fetchProfile(actorName, scraperSlug, page = 1) {
return null;
}
return fetchProfile(actorName, scraperSlug, page + 1);
return fetchProfile(actorName, scraperSlug, page + 1, source);
}
if (sources[source + 1]) {
return fetchProfile(actorName, scraperSlug, 1, source + 1);
}
return null;

View File

@@ -148,6 +148,8 @@ const funcs = {
};
function ctx(element, window) {
if (!element) return null;
const contextFuncs = Object.entries(funcs) // dynamically attach methods with context
.reduce((acc, [key, func]) => ({
...acc,