Adapter Score scraper for Score Videos.

This commit is contained in:
2020-02-03 00:39:43 +01:00
parent 6f5ba925c1
commit a45bebddac
4 changed files with 192 additions and 169 deletions

View File

@@ -32,10 +32,9 @@ function scrapeAll(html) {
return exa(html, '.container .video').map(({ q, qa, qd, ql }) => {
const release = {};
const linkEl = q('a.i-title');
release.title = linkEl.textContent.trim();
release.title = q('.title, .i-title', true);
const linkEl = q('a');
const url = new URL(linkEl.href);
release.url = `${url.origin}${url.pathname}`;
@@ -44,14 +43,18 @@ function scrapeAll(html) {
[release.entryId] = url.pathname.split('/').slice(-2);
release.date = qd('.i-date', 'MMM DD', /\w+ \d{1,2}$/);
release.actors = qa('.i-model', true);
release.date = qd('.i-date', 'MMM DD', /\w+ \d{1,2}$/)
|| qd('.dt-box', 'MMM.DD YYYY');
release.actors = qa('.model, .i-model', true);
release.duration = ql('.i-amount');
const posterEl = q('.item-img img');
if (posterEl) {
release.poster = `https:${posterEl.src}`;
}
if (posterEl?.dataset.gifPreview) {
release.teaser = {
src: `https:${posterEl.dataset.gifPreview}`,
};
@@ -62,15 +65,15 @@ function scrapeAll(html) {
}
async function scrapeScene(html, url) {
const { q, qa, qd, ql, qu, qp, qt } = ex(html, '#videos-page');
const { q, qa, qtext, qd, ql, qu, qis, qp, qt } = ex(html, '#videos-page, #content');
const release = {};
[release.entryId] = new URL(url).pathname.split('/').slice(-2);
release.title = q('#breadcrumb-top + h1', true);
release.description = q('.p-desc', true);
release.title = q('h2.text-uppercase, h2.title', true);
release.description = qtext('.p-desc, .desc');
release.actors = qa('a[href*=models]', true);
release.actors = qa('.value a[href*=models], .value a[href*=performer]', true);
release.tags = qa('a[href*=tag]', true);
const dateEl = qa('.value').find(el => /\w+ \d+\w+, \d{4}/.test(el.textContent));
@@ -80,8 +83,13 @@ async function scrapeScene(html, url) {
release.duration = ql(durationEl);
const photosUrl = qu('a[href*=photos]');
release.photos = await fetchPhotos(photosUrl);
release.poster = qp('video'); // _800.jpg is larger than _xl.jpg in landscape
if (photosUrl) {
release.photos = await fetchPhotos(photosUrl);
release.poster = qp('video'); // _800.jpg is larger than _xl.jpg in landscape
} else {
release.photos = qis('img[src*=ThumbNails]');
}
const trailer = qt();
release.trailer = [
@@ -154,7 +162,8 @@ function scrapeProfile(html) {
}
async function fetchLatest(site, page = 1) {
const url = `${site.url}/big-boob-videos?page=${page}`;
const latestPath = site.parameters?.path || '/big-boob-videos';
const url = `${site.url}${latestPath}?page=${page}`;
const res = await bhttp.get(url);
if (res.statusCode === 200) {