Removed some obsolete client components. Added ASG Max with affiliates.
This commit is contained in:
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"extends": "airbnb-base",
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser",
|
||||
"sourceType": "script"
|
||||
},
|
||||
"rules": {
|
||||
"strict": 0,
|
||||
"indent": "off",
|
||||
"no-tabs": "off",
|
||||
"no-unused-vars": ["error", {"argsIgnorePattern": "^_"}],
|
||||
"no-console": 0,
|
||||
"max-len": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"default-param-last": 0,
|
||||
"prefer-destructuring": "off",
|
||||
"arrow-body-style": 0,
|
||||
"template-curly-spacing": "off",
|
||||
"object-curly-newline": "off"
|
||||
}
|
||||
}
|
||||
@@ -33,24 +33,24 @@ async function addAlert(alert, sessionUser) {
|
||||
|
||||
await Promise.all([
|
||||
alert.actors?.length > 0 && bulkInsert('alerts_actors', alert.actors.map((actorId) => ({
|
||||
alert_id: alertId,
|
||||
actor_id: actorId,
|
||||
})), false),
|
||||
alert_id: alertId,
|
||||
actor_id: actorId,
|
||||
})), false),
|
||||
alert.tags?.length > 0 && bulkInsert('alerts_tags', alert.tags.map((tagId) => ({
|
||||
alert_id: alertId,
|
||||
tag_id: tagId,
|
||||
})), false),
|
||||
alert_id: alertId,
|
||||
tag_id: tagId,
|
||||
})), false),
|
||||
alert.matches?.length > 0 && bulkInsert('alerts_matches', alert.matches.map((match) => ({
|
||||
alert_id: alertId,
|
||||
property: match.property,
|
||||
expression: /\/.*\//.test(match.expression)
|
||||
? match.expression.slice(1, -1)
|
||||
: escapeRegexp(match.expression),
|
||||
})), false),
|
||||
alert_id: alertId,
|
||||
property: match.property,
|
||||
expression: /\/.*\//.test(match.expression)
|
||||
? match.expression.slice(1, -1)
|
||||
: escapeRegexp(match.expression),
|
||||
})), false),
|
||||
alert.stashes?.length > 0 && bulkInsert('alerts_stashes', alert.stashes.map((stashId) => ({
|
||||
alert_id: alertId,
|
||||
stash_id: stashId,
|
||||
})), false),
|
||||
alert_id: alertId,
|
||||
stash_id: stashId,
|
||||
})), false),
|
||||
alert.entities && bulkInsert('alerts_entities', alert.entities.map((entityId) => ({
|
||||
alert_id: alertId,
|
||||
entity_id: entityId,
|
||||
|
||||
@@ -1090,7 +1090,7 @@ async function flushOrphanedMedia(stage = 1) {
|
||||
)
|
||||
.as('associations'),
|
||||
)
|
||||
.whereRaw('associations.media_id = media.id'),
|
||||
.whereRaw('associations.media_id = media.id'),
|
||||
)
|
||||
.limit(config.media.flushWindow);
|
||||
// .delete();
|
||||
|
||||
@@ -7,7 +7,7 @@ const logger = require('./logger')(__filename);
|
||||
logger.verbose('Redis module initialized');
|
||||
|
||||
const redisClient = redis.createClient({
|
||||
socket: config.redis,
|
||||
socket: config.redis,
|
||||
});
|
||||
|
||||
// redisClient.connect();
|
||||
|
||||
@@ -154,11 +154,11 @@ async function fetchLatest(channel, page, options) {
|
||||
const res = await unprint.get(options.parameters?.latest
|
||||
? `${options.parameters.latest}?page=${page}&view=grid`
|
||||
: `${channel.url}/watch-newest-clips-and-scenes.html?page=${page}&view=grid`, {
|
||||
selectAll: '.item-grid-scene .grid-item',
|
||||
headers: {
|
||||
Cookie: 'ageConfirmed=true;',
|
||||
},
|
||||
});
|
||||
selectAll: '.item-grid-scene .grid-item',
|
||||
headers: {
|
||||
Cookie: 'ageConfirmed=true;',
|
||||
},
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeAll(res.context, channel, options);
|
||||
|
||||
@@ -42,7 +42,7 @@ function getAvatarFallback(url) {
|
||||
`${origin}${pathname}`,
|
||||
url,
|
||||
];
|
||||
} catch (error) {
|
||||
} catch (_error) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -122,11 +122,11 @@ async function scrapeScene({ query }, { url, entity }) {
|
||||
|
||||
release.poster = data?.thumbnailUrl || query.attribute('meta[property="og:image"]', 'content');
|
||||
release.teaser = (sourcesData && [
|
||||
sourcesData.mp4_large,
|
||||
sourcesData.webm_large,
|
||||
sourcesData.mp4,
|
||||
sourcesData.webm,
|
||||
])
|
||||
sourcesData.mp4_large,
|
||||
sourcesData.webm_large,
|
||||
sourcesData.mp4,
|
||||
sourcesData.webm,
|
||||
])
|
||||
|| data?.contentUrl
|
||||
|| query.attribute('meta[property="og:video"]')
|
||||
|| query.video('video[data-videocontainer-target] source');
|
||||
|
||||
@@ -238,7 +238,7 @@ async function scrapeApiReleases(json, site, options) {
|
||||
release.title = curateTitle(scene.title, site);
|
||||
release.path = `/${scene.url_title}/${release.entryId}`;
|
||||
|
||||
if (options.parameters?.scene) {
|
||||
if (typeof options.parameters?.scene === 'string') {
|
||||
release.url = `${options.parameters.scene}${release.path}`;
|
||||
} else if (site.url && options.parameters?.scene !== false) {
|
||||
release.url = `${site.url}/en/video${release.path}`;
|
||||
|
||||
@@ -82,7 +82,7 @@ async function fetchLatestContent(url, parameters) {
|
||||
bypass: {
|
||||
evaluate: async () => {
|
||||
// images lazy loaded by JS, gradually scroll through page
|
||||
return Array.from(document.querySelectorAll('.content-item ')).reduce(async (chain, el) => {
|
||||
return Array.from(this.document.querySelectorAll('.content-item ')).reduce(async (chain, el) => {
|
||||
await chain;
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
||||
@@ -19,7 +19,7 @@ function scrapeAll(scenes) {
|
||||
? query.all('.video-card__actors a').map((actorEl) => ({
|
||||
name: unprint.query.content(actorEl),
|
||||
url: unprint.query.url(actorEl, null),
|
||||
}))
|
||||
}))
|
||||
: query.content('.video-card__actors')?.split(',').map((actor) => actor.trim());
|
||||
|
||||
release.poster = query.img('.image-container img');
|
||||
|
||||
@@ -181,10 +181,10 @@ async function fetchSites(queryObject) {
|
||||
.select(
|
||||
'sites.*',
|
||||
'networks.name as network_name',
|
||||
'networks.slug as network_slug',
|
||||
'networks.url as network_url',
|
||||
'networks.description as network_description',
|
||||
'networks.parameters as network_parameters',
|
||||
'networks.slug as network_slug',
|
||||
'networks.url as network_url',
|
||||
'networks.description as network_description',
|
||||
'networks.parameters as network_parameters',
|
||||
)
|
||||
.leftJoin('networks', 'sites.network_id', 'networks.id')
|
||||
.limit(100);
|
||||
|
||||
@@ -3,32 +3,32 @@
|
||||
const slugify = require('../utils/slugify');
|
||||
|
||||
function init() {
|
||||
const cases = [
|
||||
'Brave, New World',
|
||||
'Jœrgenbahn Straße',
|
||||
'Partêrre',
|
||||
'Ápres ski.',
|
||||
'very 😀 true 😃',
|
||||
'a véééry long piece of text that should not result in a very long slug, even for $100',
|
||||
'don\'t you, forget about me',
|
||||
'Pneumonoultramicroscopicsilicovolcanoconiosis',
|
||||
'this (old) spicemen[sic]',
|
||||
'contact@example.com',
|
||||
'!@#$%',
|
||||
'',
|
||||
' ',
|
||||
const cases = [
|
||||
'Brave, New World',
|
||||
'Jœrgenbahn Straße',
|
||||
'Partêrre',
|
||||
'Ápres ski.',
|
||||
'very 😀 true 😃',
|
||||
'a véééry long piece of text that should not result in a very long slug, even for $100',
|
||||
'don\'t you, forget about me',
|
||||
'Pneumonoultramicroscopicsilicovolcanoconiosis',
|
||||
'this (old) spicemen[sic]',
|
||||
'contact@example.com',
|
||||
'!@#$%',
|
||||
'',
|
||||
' ',
|
||||
['this is', '2026-01-01', 'an array', '', ' ', 'test'],
|
||||
];
|
||||
];
|
||||
|
||||
cases.forEach((item) => console.log(item, '-->', slugify(item, '-', { limit: 20 })));
|
||||
cases.forEach((item) => console.log(item, '-->', slugify(item, '-', { limit: 20 })));
|
||||
|
||||
cases.forEach((item) => console.log(item, '-->', slugify(item, '-', {
|
||||
lower: true,
|
||||
accents: false,
|
||||
punctuation: false,
|
||||
symbols: 'split',
|
||||
limit: 50,
|
||||
})));
|
||||
cases.forEach((item) => console.log(item, '-->', slugify(item, '-', {
|
||||
lower: true,
|
||||
accents: false,
|
||||
punctuation: false,
|
||||
symbols: 'split',
|
||||
limit: 50,
|
||||
})));
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
@@ -63,7 +63,7 @@ const {
|
||||
} = require('./alerts');
|
||||
|
||||
function getIp(req) {
|
||||
return req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'].split(',')[0] : req.connection.remoteAddress; // See src/ws
|
||||
return req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'].split(',')[0] : req.connection.remoteAddress; // See src/ws
|
||||
}
|
||||
|
||||
async function initServer() {
|
||||
@@ -72,12 +72,12 @@ async function initServer() {
|
||||
const store = new KnexSessionStore({ knex });
|
||||
|
||||
app.set('view engine', 'ejs');
|
||||
app.disable('x-powered-by');
|
||||
app.disable('x-powered-by');
|
||||
|
||||
router.use('/media', express.static(config.media.path));
|
||||
router.use(express.static('public'));
|
||||
|
||||
router.use('/img', (req, res) => {
|
||||
router.use('/img', (_req, res) => {
|
||||
res.status(404).send();
|
||||
});
|
||||
|
||||
@@ -86,13 +86,13 @@ async function initServer() {
|
||||
|
||||
router.use(initPg(config.database.query));
|
||||
|
||||
router.use((req, res, next) => {
|
||||
router.use((req, _res, next) => {
|
||||
req.session.safeId = req.session.safeId || nanoid();
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
router.use((req, res, next) => {
|
||||
router.use((req, _res, next) => {
|
||||
const ip = getIp(req);
|
||||
|
||||
logger.silly(`${ip} (${req.headers['CF-IPCountry'] || 'country N/A'}) requested ${req.originalUrl} as ${req.session.user ? `${req.session.user.username} (${req.session.user.id})` : 'guest'}`);
|
||||
|
||||
Reference in New Issue
Block a user