forked from DebaucheryLibrarian/traxxx
Added upcoming support to Nubiles. Renamed q's formatDate to extractDate, added actual formatDate.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const { get, geta, ctxa, fd } = require('../utils/q');
|
||||
const { get, geta, ctxa, ed } = require('../utils/q');
|
||||
const slugify = require('../utils/slugify');
|
||||
|
||||
function scrapeAll(scenes, site) {
|
||||
@@ -67,7 +67,7 @@ function scrapeProfile({ q, qa, qtx }) {
|
||||
if (bio.weight) profile.weight = Number(bio.weight.match(/\((\d+)kg\)/)[1]);
|
||||
if (bio.race) profile.ethnicity = bio.race;
|
||||
|
||||
if (bio.date_of_birth) profile.birthdate = fd(bio.date_of_birth, 'MMMM D, YYYY');
|
||||
if (bio.date_of_birth) profile.birthdate = ed(bio.date_of_birth, 'MMMM D, YYYY');
|
||||
if (bio.birthplace) profile.birthPlace = bio.birthplace;
|
||||
|
||||
if (bio.measurements) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const bhttp = require('bhttp');
|
||||
|
||||
const { fd, ex, exa, get } = require('../utils/q');
|
||||
const { ed, ex, exa, get } = require('../utils/q');
|
||||
const slugify = require('../utils/slugify');
|
||||
|
||||
/* eslint-disable newline-per-chained-call */
|
||||
@@ -97,7 +97,7 @@ async function scrapeProfile(html, _url, actorName) {
|
||||
};
|
||||
|
||||
profile.description = q('.description-box', true);
|
||||
profile.birthdate = fd(bio.birthday, 'MMMM DD, YYYY');
|
||||
profile.birthdate = ed(bio.birthday, 'MMMM DD, YYYY');
|
||||
|
||||
if (bio.nationality) profile.nationality = bio.nationality;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const bhttp = require('bhttp');
|
||||
const { get, exa, fd } = require('../utils/q');
|
||||
const { get, exa, ed } = require('../utils/q');
|
||||
|
||||
function scrapeLatest(html, site) {
|
||||
const scenes = site.slug === 'paintoy'
|
||||
@@ -26,7 +26,7 @@ function scrapeLatest(html, site) {
|
||||
} else {
|
||||
// title should contain date instead, not applicable in brief mode
|
||||
release.title = title.slice(title.indexOf(':') + 1).trim();
|
||||
release.date = fd(title.slice(0, title.indexOf(':')), 'MMM D, YYYY');
|
||||
release.date = ed(title.slice(0, title.indexOf(':')), 'MMM D, YYYY');
|
||||
}
|
||||
|
||||
release.actors = actors.map(actor => actor.trim());
|
||||
|
||||
@@ -32,12 +32,14 @@ function scrapeAll(scenes, site, origin) {
|
||||
|
||||
if (channelUrl) release.url = `${channelUrl}${pathname}`;
|
||||
else release.url = url;
|
||||
} else {
|
||||
} else if (!/\/join/.test(url)) {
|
||||
release.entryId = url.split('/')[3];
|
||||
|
||||
if (channelUrl) release.url = `${channelUrl}${url}`;
|
||||
else if (site?.url) release.url = `${site.url}${url}`;
|
||||
else if (origin) release.url = `${origin}${url}`;
|
||||
} else {
|
||||
release.entryId = q('a img', 'tube_tour_thumb_id');
|
||||
}
|
||||
|
||||
release.date = qd('.date', 'MMM D, YYYY');
|
||||
@@ -117,6 +119,17 @@ async function fetchLatest(site, page = 1) {
|
||||
return qLatest && scrapeAll(qLatest, site);
|
||||
}
|
||||
|
||||
async function fetchUpcoming(site) {
|
||||
if (site.parameters?.upcoming) {
|
||||
const url = `${site.url}/video/upcoming`;
|
||||
const qUpcoming = await geta(url, '.content-grid-item');
|
||||
|
||||
return qUpcoming && scrapeAll(qUpcoming, site);
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
async function fetchScene(url, site) {
|
||||
const qScene = await get(url);
|
||||
|
||||
@@ -144,6 +157,7 @@ async function fetchProfile(actorName, siteSlug) {
|
||||
|
||||
module.exports = {
|
||||
fetchLatest,
|
||||
fetchUpcoming,
|
||||
fetchScene,
|
||||
fetchProfile,
|
||||
};
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/* eslint-disable no-unused-vars */
|
||||
const bhttp = require('bhttp');
|
||||
|
||||
const { get, fd } = require('../utils/q');
|
||||
const { get, ed } = require('../utils/q');
|
||||
const { fetchApiLatest, fetchApiUpcoming, fetchScene, fetchApiProfile } = require('./gamma');
|
||||
const slugify = require('../utils/slugify');
|
||||
|
||||
@@ -15,7 +15,7 @@ function scrapeLatestNative(scenes, site) {
|
||||
release.url = `${site.url}${scene.url}`;
|
||||
|
||||
release.title = scene.name;
|
||||
release.date = fd(scene.release_date, 'YYYY-MM-DD');
|
||||
release.date = ed(scene.release_date, 'YYYY-MM-DD');
|
||||
release.duration = parseInt(scene.runtime, 10) * 60;
|
||||
|
||||
release.actors = scene.cast?.map(actor => ({
|
||||
@@ -40,7 +40,7 @@ function scrapeSceneNative({ html, q, qa }, url, _site) {
|
||||
release.description = q('.indie-model-p', true);
|
||||
|
||||
const dateString = qa('h5').find(el => /Released/.test(el.textContent)).textContent;
|
||||
release.date = fd(dateString, 'MMM DD, YYYY', /\w+ \d{1,2}, \d{4}/);
|
||||
release.date = ed(dateString, 'MMM DD, YYYY', /\w+ \d{1,2}, \d{4}/);
|
||||
|
||||
const duration = qa('h5').find(el => /Runtime/.test(el.textContent)).textContent;
|
||||
const [hours, minutes] = duration.match(/\d+/g);
|
||||
@@ -118,7 +118,7 @@ async function fetchSceneWrapper(url, site, release) {
|
||||
return {
|
||||
...scene,
|
||||
url: `${site.url}${sceneMatch.url}`,
|
||||
date: fd(sceneMatch.release_date, 'YYYY-MM-DD'),
|
||||
date: ed(sceneMatch.release_date, 'YYYY-MM-DD'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user