Added SicFlics.
This commit is contained in:
parent
4154246ff2
commit
4bd6e39a8c
|
|
@ -13343,6 +13343,62 @@ const sites = [
|
||||||
id: 'young-perps',
|
id: 'young-perps',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// SIC FLICS
|
||||||
|
{
|
||||||
|
slug: 'sicflics',
|
||||||
|
name: 'Sic Flics',
|
||||||
|
styled: 'SicFlics',
|
||||||
|
url: 'https://www.sicflics.com',
|
||||||
|
parameters: {
|
||||||
|
layout: 'mobile', // has scene links
|
||||||
|
actorTags: {
|
||||||
|
maria: 'Queen Maria',
|
||||||
|
crazywifeslut: 'CrazyWifeSlut',
|
||||||
|
kassiopeia: 'Kassiopeia',
|
||||||
|
alexis: 'Alexis Fisting Queen', // aka Loose Cunt Whore Alexis
|
||||||
|
selene: 'Goddess Selene',
|
||||||
|
helen: 'Queen Helen',
|
||||||
|
nikoletta: 'Nikoletta',
|
||||||
|
tabby: 'Tabby Tender',
|
||||||
|
queen_eva: 'Queen Eva',
|
||||||
|
alexbreecooper: 'Alex Bree Cooper',
|
||||||
|
yoni: 'Queen Yoni',
|
||||||
|
lily: 'Queen Lily',
|
||||||
|
mabel: 'Queen Mabel',
|
||||||
|
starryfawn: 'Starryfawnn',
|
||||||
|
sarah: 'Fist Queen Sarah',
|
||||||
|
anna: 'Queen Anna',
|
||||||
|
lulu: 'Lulu Blair',
|
||||||
|
marie_kaleida: 'Marie Kaleida',
|
||||||
|
ivy: 'Queen Ivy',
|
||||||
|
lilly_fuck_slut: 'Lilly Fuck Slut',
|
||||||
|
julie: 'Queen Julie',
|
||||||
|
msbwur: 'MrsBwur',
|
||||||
|
natusamare: 'Natus Amare',
|
||||||
|
kitty: 'Kitty', // not referred to as queen
|
||||||
|
celia: 'Queen Celia',
|
||||||
|
bella: 'Queen Bella',
|
||||||
|
sasha: 'Queen Sasha',
|
||||||
|
angel: 'Queen Angel',
|
||||||
|
ceelcee: 'Celia Dragon',
|
||||||
|
candy: 'Queen candy',
|
||||||
|
caroline: 'Queen caroline',
|
||||||
|
sophie: 'Sophie Belle',
|
||||||
|
mary: 'Queen Mary',
|
||||||
|
mayya: 'Mayya Moore',
|
||||||
|
misa: 'Broken Doll Misa',
|
||||||
|
noa_fox: 'Noa Fox',
|
||||||
|
sophia: 'Sophia', // not referred to as queen
|
||||||
|
sharpie_queen: 'Sharpie Queen',
|
||||||
|
cute_psycho_princess: 'Sharpie Queen', // alias
|
||||||
|
masha: 'Masha Yang',
|
||||||
|
abigail: 'Abigail Dupree',
|
||||||
|
ksu: 'Ksu Colt',
|
||||||
|
kitten: 'Shroomkitten',
|
||||||
|
chelly: 'Queen Chelly',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
// TEEN CORE CLUB
|
// TEEN CORE CLUB
|
||||||
{
|
{
|
||||||
name: 'Analyzed Girls',
|
name: 'Analyzed Girls',
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ function urlToHostname(url) {
|
||||||
try {
|
try {
|
||||||
const hostname = new URL(url)
|
const hostname = new URL(url)
|
||||||
.hostname
|
.hostname
|
||||||
.match(/(www\.)?(.*)/)?.at(-1);
|
.match(/(www\.|m\.)?(.*)/)?.at(-1);
|
||||||
|
|
||||||
return hostname;
|
return hostname;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ const radical = require('./radical');
|
||||||
const rickysroom = require('./rickysroom');
|
const rickysroom = require('./rickysroom');
|
||||||
const sexlikereal = require('./sexlikereal');
|
const sexlikereal = require('./sexlikereal');
|
||||||
const score = require('./score');
|
const score = require('./score');
|
||||||
|
const sicflics = require('./sicflics');
|
||||||
const snowvalley = require('./snowvalley');
|
const snowvalley = require('./snowvalley');
|
||||||
const spizoo = require('./spizoo');
|
const spizoo = require('./spizoo');
|
||||||
const teamskeet = require('./teamskeet');
|
const teamskeet = require('./teamskeet');
|
||||||
|
|
@ -166,6 +167,7 @@ module.exports = {
|
||||||
rickysroom,
|
rickysroom,
|
||||||
score,
|
score,
|
||||||
sexlikereal,
|
sexlikereal,
|
||||||
|
sicflics,
|
||||||
snowvalley,
|
snowvalley,
|
||||||
spizoo,
|
spizoo,
|
||||||
swallowsalon: julesjordan,
|
swallowsalon: julesjordan,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,137 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const unprint = require('unprint');
|
||||||
|
|
||||||
|
const slugify = require('../utils/slugify');
|
||||||
|
|
||||||
|
function scrapeLatest(scenes) {
|
||||||
|
return scenes.map(({ query }) => {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.entryId = query.dataset('a[data-movie]', 'movie');
|
||||||
|
release.shootId = release.entryId;
|
||||||
|
|
||||||
|
release.title = query.content('.vidtitle p:first-child');
|
||||||
|
release.description = query.text('.collapse p');
|
||||||
|
|
||||||
|
release.date = query.date('.vidtitle p:last-child', 'MMMM Do, YYYY');
|
||||||
|
release.poster = query.img('.vidthumb img');
|
||||||
|
|
||||||
|
release.forceDeep = true;
|
||||||
|
|
||||||
|
return release;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLatest(channel, page) {
|
||||||
|
const res = await unprint.get(`https://www.sicflics.com/cinema/12-chronological-order/page${page}.html`, { selectAll: '.update-wrap' });
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeLatest(res.context, channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrapeLatestMobile(scenes) {
|
||||||
|
return scenes.map(({ query }) => {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.url = query.url('a[href*="movie/"]');
|
||||||
|
|
||||||
|
release.entryId = new URL(release.url).pathname.match(/\/movie\/c\/(\d+)/)?.[1];
|
||||||
|
release.shootId = release.entryId;
|
||||||
|
|
||||||
|
release.title = query.content('.titlebg h4');
|
||||||
|
release.date = query.date('.date span', 'MMMM Do, YYYY');
|
||||||
|
|
||||||
|
release.poster = query.img('a img.thumb');
|
||||||
|
|
||||||
|
return release;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLatestMobile(channel, page) {
|
||||||
|
const res = await unprint.get(`https://m.sicflics.com/cinema/12-chronological-order/page${page}.html`, { selectAll: '.episode-box' });
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeLatestMobile(res.context, channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrapeScene({ query }, entryId, parameters) {
|
||||||
|
const release = { entryId };
|
||||||
|
|
||||||
|
release.title = query.content('h4');
|
||||||
|
release.date = query.date('span[title="Date Added"]', 'MMMM Do, YYYY');
|
||||||
|
|
||||||
|
const tags = query.contents('.vidwrap a[href="#"]').map((tag) => tag.replace('#', ''));
|
||||||
|
|
||||||
|
if (parameters?.actorTags) {
|
||||||
|
release.actors = tags.map((tag) => parameters.actorTags[slugify(tag, '_')]).filter(Boolean);
|
||||||
|
release.tags = tags.filter((tag) => !parameters.actorTags[slugify(tag, '_')]);
|
||||||
|
} else {
|
||||||
|
release.tags = tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
return release;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchScene(_url, _channel, baseRelease, { parameters }) {
|
||||||
|
if (!baseRelease?.entryId) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = await unprint.get(`https://www2.sicflics.com/v6/v6.pop.php?id=${baseRelease.entryId}`);
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeScene(res.context, baseRelease.entryId, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrapeSceneMobile({ query }, url, parameters) {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.entryId = new URL(url).pathname.match(/\/movie\/c\/(\d+)/)?.[1];
|
||||||
|
|
||||||
|
release.title = query.content('.single-title');
|
||||||
|
release.description = query.text('.moviedesc');
|
||||||
|
|
||||||
|
release.date = query.date('//strong[contains(text(), "Uploaded on")]/following-sibling::text()', 'MMMM Do, YYYY');
|
||||||
|
|
||||||
|
const tags = query.contents('.player-block a[href*="/tag"]').map((tag) => tag.replace('#', ''));
|
||||||
|
|
||||||
|
if (parameters?.actorTags) {
|
||||||
|
release.actors = tags.map((tag) => parameters.actorTags[slugify(tag, '_')]).filter(Boolean);
|
||||||
|
release.tags = tags.filter((tag) => !parameters.actorTags[slugify(tag, '_')]);
|
||||||
|
} else {
|
||||||
|
release.tags = tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
release.poster = query.img('.thumb-pad img');
|
||||||
|
|
||||||
|
return release;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchSceneMobile(url, _channel, _baseRelease, { parameters }) {
|
||||||
|
const res = await unprint.get(url, { select: '.player-block' });
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
return scrapeSceneMobile(res.context, url, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
fetchLatest,
|
||||||
|
fetchScene,
|
||||||
|
mobile: {
|
||||||
|
fetchLatest: fetchLatestMobile,
|
||||||
|
fetchScene: fetchSceneMobile,
|
||||||
|
},
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue