Compare commits

..

No commits in common. "b2dfbac9e5263a37a1288434c2c678d6cb7edbfa" and "111fc8ad00a2e045c614cde6e697726f585fc812" have entirely different histories.

30 changed files with 14 additions and 231 deletions

View File

@ -10,8 +10,6 @@ function initNetworksActions(store, _router) {
$limit:Int = 1000, $limit:Int = 1000,
$after:Date = "1900-01-01", $after:Date = "1900-01-01",
$before:Date = "2100-01-01", $before:Date = "2100-01-01",
$afterTime:Datetime = "1900-01-01",
$beforeTime:Datetime = "2100-01-01",
$orderBy: [ReleasesOrderBy!] $orderBy: [ReleasesOrderBy!]
$exclude: [String!] $exclude: [String!]
) { ) {
@ -72,20 +70,10 @@ function initNetworksActions(store, _router) {
{ network: { parent: { slug: { equalTo: $networkSlug } } } } { network: { parent: { slug: { equalTo: $networkSlug } } } }
] ]
} }
or: [ date: {
{ lessThan: $before,
date: { greaterThan: $after,
lessThan: $before, }
greaterThan: $after,
}
},
{
createdAt: {
lessThan: $beforeTime,
greaterThan: $afterTime,
}
}
],
releasesTags: { releasesTags: {
none: { none: {
tag: { tag: {
@ -105,8 +93,6 @@ function initNetworksActions(store, _router) {
limit, limit,
after: store.getters.after, after: store.getters.after,
before: store.getters.before, before: store.getters.before,
afterTime: store.getters.after,
beforeTime: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'DATE_ASC' : 'DATE_DESC', orderBy: store.state.ui.range === 'upcoming' ? 'DATE_ASC' : 'DATE_DESC',
exclude: store.state.ui.filter, exclude: store.state.ui.filter,
}); });

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.96.0", "version": "1.95.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.96.0", "version": "1.95.2",
"description": "All the latest porn releases in one place", "description": "All the latest porn releases in one place",
"main": "src/app.js", "main": "src/app.js",
"scripts": { "scripts": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@ -227,12 +227,6 @@ const networks = [
url: 'https://www.naughtyamerica.com', url: 'https://www.naughtyamerica.com',
description: 'The best porn movies daily at Naughty America! Experience the most seductive porn stars in stunning virtual reality, 4K and HD porn videos!', description: 'The best porn movies daily at Naughty America! Experience the most seductive porn stars in stunning virtual reality, 4K and HD porn videos!',
}, },
{
slug: 'newsensations',
name: 'New Sensations',
url: 'https://www.newsensations.com',
description: 'Home to multiple award-winning studios New Sensations & Digital Sin with over 7,000 HQ porn movies! Take the free tour now!',
},
{ {
slug: 'nubiles', slug: 'nubiles',
name: 'Nubiles', name: 'Nubiles',

View File

@ -3074,121 +3074,6 @@ const sites = [
url: 'https://www.naughtyamerica.com/site/live-naughty-nurse', url: 'https://www.naughtyamerica.com/site/live-naughty-nurse',
network: 'naughtyamerica', network: 'naughtyamerica',
}, },
// NEW SENSATIONS
{
slug: 'hotwifexxx',
name: 'Hotwife XXX',
url: 'https://www.hotwifexxx.com',
network: 'newsensations',
parameters: {
siteId: 'hwxxx',
block: true,
},
},
{
slug: 'tabutales',
name: 'Tabu Tales',
url: 'https://www.thetabutales.com',
network: 'newsensations',
parameters: { siteId: 'tt' },
},
{
slug: 'nsfamilyxxx',
name: 'Family XXX',
url: 'https://www.familyxxx.com',
network: 'newsensations',
tags: ['family'],
parameters: {
siteId: 'famxxx',
block: true,
},
},
{
slug: 'thelesbianexperience',
name: 'The Lesbian Experience',
url: 'https://www.thelesbianexperience.com',
network: 'newsensations',
tags: ['lesbian'],
parameters: { siteId: 'tle' },
},
{
slug: 'theromanceseries',
name: 'The Romance Series',
url: 'https://www.theromanceseries.com',
network: 'newsensations',
parameters: { siteId: 'rs' },
},
{
slug: 'talesfromtheedge',
name: 'Tales From The Edge',
url: 'thetalesfromtheedge',
network: 'newsensations',
parameters: { siteId: 'ttfte' },
},
{
slug: 'parodypass',
name: 'Parody Pass',
url: 'https://www.parodypass.com',
network: 'newsensations',
parameters: { siteId: 'pp' },
},
{
slug: 'shanedieselsbangingbabes',
name: 'Shane Diesel\'s Banging Babes',
url: 'http://shanedieselsbangingbabes.com',
network: 'newsensations',
parameters: { siteId: 'sdbb' },
},
{
slug: 'unlimitedmilfs',
name: 'Unlimited MILFs',
url: 'https://www.unlimitedmilfs.com',
network: 'newsensations',
tags: ['milf'],
parameters: { siteId: 'um' },
},
{
slug: 'heavyhandfuls',
name: 'Heavy Handfuls',
url: 'https://www.heavyhandfuls.com',
network: 'newsensations',
parameters: { siteId: 'hh' },
},
{
slug: 'jizzbomb',
name: 'Jizz Bomb',
url: 'https://www.jizzbomb.com',
network: 'newsensations',
parameters: { siteId: 'jb' },
},
{
slug: 'stretchedoutsnatch',
name: 'Stretched Out Snatch',
url: 'https://www.stretchedoutsnatch.com',
network: 'newsensations',
parameters: { siteId: 'sos' },
},
{
slug: 'fourfingerclub',
name: 'Four Finger Club',
url: 'https://www.fourfingerclub.com',
network: 'newsensations',
parameters: { siteId: 'ffc' },
},
{
slug: 'ashlynnbrooke',
name: 'Ashlynn Brooke',
url: 'https://www.ashlynnbrooke.com',
network: 'newsensations',
parameters: { siteId: 'ab' },
},
{
slug: 'freshouttahighschool',
name: 'Fresh Outta High School',
url: 'https://www.freshouttahighschool.com',
network: 'newsensations',
parameters: { siteId: 'fohs' },
},
// NUBILES // NUBILES
{ {
slug: 'anilos', slug: 'anilos',

View File

@ -73,7 +73,9 @@ async function getEntropy(buffer) {
} }
async function extractItem(source) { async function extractItem(source) {
const res = await bhttp.get(source.src); const res = await bhttp.get(source.src, {
responseTimeout: 10000,
});
if (res.statusCode === 200) { if (res.statusCode === 200) {
const { q } = ex(res.body.toString()); const { q } = ex(res.body.toString());
@ -114,7 +116,9 @@ async function fetchItem(source, index, existingItemsBySource, domain, role, att
logger.verbose(`Fetching media item from ${source.src || source}`); logger.verbose(`Fetching media item from ${source.src || source}`);
const res = await bhttp.get(source.src || source); const res = await bhttp.get(source.src || source, {
responseTimeout: 10000,
});
if (res.statusCode === 200) { if (res.statusCode === 200) {
const { pathname } = new URL(source.src || source); const { pathname } = new URL(source.src || source);

View File

@ -1,78 +0,0 @@
'use strict';
const { geta, edate } = require('../utils/q');
function scrapeBlockLatest(scenes) {
return scenes.map(({ html, q, qa, qu, qt }) => {
const release = {};
const entryId = q('div[class*="videothumb"]', 'class').match(/videothumb_(\d+)/)
|| q('div[id*="videothumb"]', 'id').match(/videothumb_(\d+)/);
release.entryId = entryId[1];
release.title = q('h4 a', true);
release.url = qu('h4 a');
release.date = edate(html, 'MM/DD/YYYY', /\d{2}\/\d{2}\/\d{4}/);
release.actors = qa('.tour_update_models a', true);
release.poster = q('div img').dataset.src;
release.photos = [q('div img', 'src0_4x') || q('div img', 'src0_3x') || q('div img', 'src0_2x')];
release.teaser = qt();
console.log(release);
return release;
});
}
function scrapeClassicLatest(scenes) {
return scenes.map(({ el, q, qa, qd, qu }) => {
const release = {};
release.entryId = el.dataset.setid;
release.url = qu('a');
release.title = q('.update_title_small', true) || q('a:nth-child(2)', true);
const description = q('a', 'title');
if (description) release.description = description;
const date = qd('.date_small, .update_date', 'MM/DD/YYYY');
if (date) release.date = date;
const durationLine = q('.update_counts', true);
if (durationLine) release.duration = Number(durationLine.match(/(\d+) min/i)[1]) * 60;
const actors = qa('.update_models a', true);
release.actors = actors.length > 0 ? actors : q('.update_models', true).split(/,\s*/);
const photoCount = q('.update_thumb', 'cnt');
[release.poster, ...release.photos] = Array.from({ length: photoCount }).map((value, index) => q('.update_thumb', `src${index}_3x`) || q('.update_thumb', `src${index}_2x`) || q('.update_thumb', `src${index}_1x`));
console.log(release);
return release;
});
}
async function fetchLatest(site, page = 1) {
if (!site.parameters) {
return null;
}
const url = `${site.url}/tour_${site.parameters.siteId}/categories/movies_${page}_d.html`;
const qLatest = await geta(url, '.updatesBlock .movieBlock, .updatesBlock .videoBlock, .latest_updates_block .update_details, .category_listing_block .update_details');
if (qLatest && site.parameters.block) {
return scrapeBlockLatest(qLatest, site);
}
return qLatest && scrapeClassicLatest(qLatest, site);
}
module.exports = {
fetchLatest,
};

View File

@ -36,7 +36,6 @@ const mindgeek = require('./mindgeek');
const mofos = require('./mofos'); const mofos = require('./mofos');
const naturals = require('./21naturals'); const naturals = require('./21naturals');
const naughtyamerica = require('./naughtyamerica'); const naughtyamerica = require('./naughtyamerica');
const newsensations = require('./newsensations');
const nubiles = require('./nubiles'); const nubiles = require('./nubiles');
const perfectgonzo = require('./perfectgonzo'); const perfectgonzo = require('./perfectgonzo');
const pervcity = require('./pervcity'); const pervcity = require('./pervcity');
@ -94,7 +93,6 @@ module.exports = {
mindgeek, mindgeek,
mofos, mofos,
naughtyamerica, naughtyamerica,
newsensations,
nubiles, nubiles,
perfectgonzo, perfectgonzo,
pervcity, pervcity,

View File

@ -12,17 +12,11 @@ function extractDate(dateString, format, match) {
if (match) { if (match) {
const dateStamp = trim(dateString).match(match); const dateStamp = trim(dateString).match(match);
if (dateStamp) { if (dateStamp) return moment.utc(dateStamp[0], format).toDate();
const date = moment.utc(dateStamp[0], format);
return date.isValid() ? date.toDate() : null;
}
return null; return null;
} }
const date = moment.utc(trim(dateString), format); return moment.utc(trim(dateString), format).toDate();
return date.isValid() ? date.toDate() : null;
} }
function formatDate(date, format, inputFormat) { function formatDate(date, format, inputFormat) {