Added Vixen scraper. Added LegalPorno studio IDs.

This commit is contained in:
2019-04-01 02:45:15 +02:00
parent d7ef14e427
commit 439d3225ec
8 changed files with 122 additions and 34 deletions

View File

@@ -47,8 +47,40 @@ async function accumulateIncludedSites() {
return curateSites(rawSites);
}
async function getExistingReleases() {
return knex('releases');
// .where('date', '>', new Date(2019, 2, 26));
}
async function storeReleases(releases) {
const curatedReleases = releases.map(release => ({
site_id: release.site.id,
shoot_id: release.shootId || null,
url: release.url,
title: release.title,
date: release.date,
description: release.description,
duration: release.duration,
likes: release.rating && release.rating.likes,
dislikes: release.rating && release.rating.dislikes,
rating: release.rating && release.rating.stars,
}));
if (curatedReleases.length) {
console.log(`Adding ${curatedReleases.length} releases to database (if unique)`);
const insertQuery = knex('releases').insert(curatedReleases).toString();
await knex.raw(insertQuery.replace('insert', 'INSERT OR IGNORE'));
return curatedReleases;
}
return [];
}
async function fetchReleases() {
const sites = await accumulateIncludedSites();
const releases = await getExistingReleases();
const scenesPerSite = await Promise.all(sites.map(async (site) => {
const scraper = scrapers[site.id] || scrapers[site.networkId];
@@ -59,6 +91,10 @@ async function fetchReleases() {
scraper.fetchUpcoming ? scraper.fetchUpcoming(site) : [],
]);
console.log(`${latest.length} published releases and ${upcoming.length} upcoming releases found`);
await storeReleases(latest, releases);
return [...latest, ...upcoming];
}

View File

@@ -5,7 +5,7 @@ const bhttp = require('bhttp');
const cheerio = require('cheerio');
const moment = require('moment');
const tagMap = {};
const { matchTags } = require('../tags');
function scrapeLatest(html, site) {
const $ = cheerio.load(html, { normalizeWhitespace: true });

View File

@@ -5,6 +5,7 @@ const julesjordan = require('./julesjordan');
const kink = require('./kink');
const legalporno = require('./legalporno');
const pervcity = require('./pervcity');
const vixen = require('./vixen');
module.exports = {
xempire,
@@ -12,4 +13,5 @@ module.exports = {
kink,
legalporno,
pervcity,
vixen,
};

View File

@@ -8,7 +8,7 @@ const { matchTags } = require('../tags');
function extractTitle(originalTitle) {
const titleComponents = originalTitle.split(' ');
const sceneIdMatch = titleComponents.slice(-1)[0].match(/(GP|SZ|IV|GIO|AA|GL|BZ|FS)\d+/); // detect studio prefixes
const sceneIdMatch = titleComponents.slice(-1)[0].match(/(GP|SZ|IV|GIO|RS|TW|MA|FM|SAL|NR|AA|GL|BZ|FS)\d+/); // detect studio prefixes
const shootId = sceneIdMatch ? sceneIdMatch[0] : null;
const title = sceneIdMatch ? titleComponents.slice(0, -1).join(' ') : originalTitle;