Added Amateur Allure.

This commit is contained in:
2020-03-01 05:28:08 +01:00
parent 3290a5f686
commit e57f440665
17 changed files with 227 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
'use strict';
const util = require('util');
const Promise = require('bluebird');
const bhttp = require('bhttp');
const cheerio = require('cheerio');
@@ -78,7 +79,7 @@ async function getPhotosLegacy(entryId, site, type = 'highres', page = 1) {
}
async function getPhotos(entryId, site, type = 'highres', page = 1) {
const albumUrl = `${site.url}/trial/gallery.php?id=${entryId}&type=${type}&page=${page}`;
const albumUrl = `${site.parameters?.photos || `${site.url}/gallery.php`}?id=${entryId}&type=${type}&page=${page}`;
const res = await bhttp.get(albumUrl);
const html = res.body.toString();
@@ -86,7 +87,10 @@ async function getPhotos(entryId, site, type = 'highres', page = 1) {
const sourceLines = html.split(/\n/).filter(line => line.match(/ptx\["\w+"\]/));
const sources = sourceLines.reduce((acc, sourceLine) => {
const quality = sourceLine.match(/\["\w+"\]/)[0].slice(2, -2);
const source = sourceLine.slice(sourceLine.indexOf('/trial'), sourceLine.indexOf('.jpg') + 4);
const sourceStart = sourceLine.match(/\/trial|\/tour|\/content/);
if (!sourceStart) return acc;
const source = sourceLine.slice(sourceStart.index, sourceLine.indexOf('.jpg') + 4);
if (!source) return acc;
if (!acc[quality]) acc[quality] = [];
@@ -120,9 +124,9 @@ function scrapeLatest(html, site) {
return scenesElements.map((element) => {
const release = {};
const sceneLinkElement = $(element).find('a[title*=" "]');
const sceneLinkElement = $(element).find('a[title], .update_title a');
release.url = sceneLinkElement.attr('href');
release.title = sceneLinkElement.text();
release.title = sceneLinkElement.text()?.trim() || sceneLinkElement.attr('alt')?.trim();
release.entryId = $(element).attr('data-setid');
@@ -135,14 +139,16 @@ function scrapeLatest(html, site) {
.toArray();
const photoElement = $(element).find('a img.thumbs');
const photoCount = Number(photoElement.attr('cnt'));
const photoCount = Number(photoElement.attr('cnt')) || 1;
[release.poster, ...release.photos] = Array.from({ length: photoCount }, (value, index) => {
const src = photoElement.attr(`src${index}_1x`) || photoElement.attr(`src${index}`);
const src = photoElement.attr(`src${index}_1x`) || photoElement.attr(`src${index}`) || photoElement.attr('src');
if (!src) return null;
if (src.match(/^http/)) return src;
return `${site.url}${src}`;
return {
src: /^http/.test(src) ? src : `${site.url}${src}`,
referer: site.url,
};
}).filter(photoUrl => photoUrl);
const teaserScript = $(element).find('script').html();
@@ -249,21 +255,39 @@ async function scrapeScene(html, url, site) {
.split('\n');
const posterPath = infoLines.find(line => line.match('useimage')).replace('useimage = "', '').slice(0, -2);
if (posterPath) release.poster = posterPath.match(/^http/) ? posterPath : `${site.url}${posterPath}`;
const trailerLine = infoLines.find(line => line.match('movie["Trailer_720"]'));
if (posterPath) {
const poster = /^http/.test(posterPath) ? posterPath : `${site.url}${posterPath}`;
if (poster) {
release.poster = {
src: poster,
referer: site.url,
};
}
}
if (site.slug !== 'manuelferrara') {
release.trailer = {
src: trailerLine.slice(trailerLine.indexOf('path:"') + 6, trailerLine.indexOf('",movie')),
quality: 720,
};
const trailerLines = infoLines.filter(line => /movie\["Trailer\w*"\]\[/.test(line));
if (trailerLines.length) {
release.trailer = trailerLines.map((trailerLine) => {
const src = trailerLine.match(/path:"([\w:/.&=?%]+)"/)?.[1];
const quality = trailerLine.match(/movie_height:'(\d+)/)?.[1];
return src && {
src: /^http/.test(src) ? src : `${site.url}${src}`,
quality: quality && Number(quality),
};
}).filter(Boolean);
}
}
release.photos = await getPhotos(release.entryId, site);
release.tags = $('.update_tags a').map((tagIndex, tagElement) => $(tagElement).text()).toArray();
release.movie = $('.update_dvds a').attr('href');
const movie = $('.update_dvds a').attr('href');
if (movie) release.movie = movie;
release.stars = Number($('.avg_rating').text().trim().replace(/[\s|Avg Rating:]/g, ''));
@@ -320,15 +344,27 @@ function scrapeProfile(html, url, actorName) {
}
async function fetchLatest(site, page = 1) {
const res = await bhttp.get(`${site.url}/trial/categories/movies_${page}_d.html`);
const url = site.parameters?.latest ? util.format(site.parameters.latest, page) : `${site.url}/trial/categories/movies_${page}_d.html`;
const res = await bhttp.get(url);
return scrapeLatest(res.body.toString(), site);
if (res.statusCode === 200) {
return scrapeLatest(res.body.toString(), site);
}
return res.statusCode;
}
async function fetchUpcoming(site) {
const res = await bhttp.get(`${site.url}/trial/index.php`);
if (site.parameters?.upcoming === false) return null;
return scrapeUpcoming(res.body.toString(), site);
const url = site.parameters?.upcoming ? util.format(site.parameters.upcoming) : `${site.url}/trial/index.php`;
const res = await bhttp.get(url);
if (res.statusCode === 200) {
return scrapeUpcoming(res.body.toString(), site);
}
return res.statusCode;
}
async function fetchScene(url, site) {