Changed q get and geta APIs to include status, refactored scrapers. Showing front- and back-cover on movie tiles and release page (fix). Removed icons from main navigation. Returning scenes from Jules Jordan movie scraper.

This commit is contained in:
2020-03-08 04:23:10 +01:00
parent b45bb0cfbc
commit acad99bdfe
15 changed files with 222 additions and 119 deletions

View File

@@ -10,10 +10,10 @@ const slugUrlMap = {
};
async function getPhotos(albumUrl) {
const thumbnails = await geta(albumUrl, '.photo-thumb');
const res = await geta(albumUrl, '.photo-thumb');
return thumbnails
? thumbnails.map(({ q }) => q('source').srcset)
return res.ok
? res.items.map(({ q }) => q('source').srcset)
: [];
}
@@ -114,26 +114,26 @@ function scrapeProfile({ q, qa, qi, qu }, _actorName, origin) {
async function fetchLatest(site, page = 1) {
const url = `${site.url}/video/gallery/${(page - 1) * 12}`;
const qLatest = await geta(url, '.content-grid-item');
const res = await geta(url, '.content-grid-item');
return qLatest && scrapeAll(qLatest, site);
return res.ok ? scrapeAll(res.items, site) : res.status;
}
async function fetchUpcoming(site) {
if (site.parameters?.upcoming) {
const url = `${site.url}/video/upcoming`;
const qUpcoming = await geta(url, '.content-grid-item');
const res = await geta(url, '.content-grid-item');
return qUpcoming && scrapeAll(qUpcoming, site);
return res.ok ? scrapeAll(res.items, site) : res.status;
}
return [];
}
async function fetchScene(url, site) {
const qScene = await get(url);
const res = await get(url);
return qScene && scrapeScene(qScene, url, site);
return res.ok ? scrapeScene(res.item, url, site) : res.status;
}
async function fetchProfile(actorName, siteSlug) {
@@ -141,15 +141,17 @@ async function fetchProfile(actorName, siteSlug) {
const origin = slugUrlMap[siteSlug] || `https://www.${siteSlug}.com`;
const url = `${origin}/model/alpha/${firstLetter}`;
const { qa } = await get(url);
const resModels = await get(url);
const modelPath = qa('.content-grid-item a.title').find(el => slugify(el.textContent) === slugify(actorName));
if (!resModels.ok) return resModels.status;
const modelPath = resModels.item.qa('.content-grid-item a.title').find(el => slugify(el.textContent) === slugify(actorName));
if (modelPath) {
const modelUrl = `${origin}${modelPath}`;
const qModel = await get(modelUrl);
const resModel = await get(modelUrl);
if (qModel) return scrapeProfile(qModel, actorName, origin);
return resModel.ok ? scrapeProfile(resModel.item, actorName, origin) : resModel.status;
}
return null;