Refactored AnalVids so studios are channels, excluded most channels from daily update.

This commit is contained in:
DebaucheryLibrarian 2024-10-20 01:59:18 +02:00
parent d89ced2e6e
commit 5374d6fd39
11 changed files with 6139 additions and 11963 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
[ [
"50tinhaxxx", "50tinhaxxx",
"aaronrockxxx", "aaronrockxxx",
"abuseme",
"adalynnx", "adalynnx",
"adelinelafouinestudio", "adelinelafouinestudio",
"adiraallure", "adiraallure",
@ -39,7 +38,50 @@
"analmaniacsbyladydee", "analmaniacsbyladydee",
"analpantyhoseaddicts", "analpantyhoseaddicts",
"analpornworld", "analpornworld",
"analvidsabuseme",
"analvidsbaitbus",
"analvidsbarebackattack",
"analvidsbarebackcasting",
"analvidsblackloads",
"analvidsblackpatrol",
"analvidsblacksonmoms",
"analvidsbluepillmen",
"analvidsbrandibelle",
"analvidsbustyadventures",
"analvidscfnmshow",
"analvidscollegerules",
"analvidsculioneros",
"analvidsdancingbear",
"analvidsdontfuckmydaughter",
"analvidsexbf",
"analvidsfilthyfamily",
"analvidsfuckysucky",
"analvidsfutanari",
"analvidsgirlsgonewild",
"analvidsgostosasvideo", "analvidsgostosasvideo",
"analvidshazeher",
"analvidshazehim",
"analvidshentaied",
"analvidsimmorallive",
"analvidsitsgonnahurt",
"analvidsjayspov",
"analvidsmiakhalifa",
"analvidsmranal",
"analvidsmygf",
"analvidsoutinpublic",
"analvidspoundhisass",
"analvidsprivateblack",
"analvidsprojectcitybus",
"analvidspublicinvasion",
"analvidsrichardmannsworld",
"analvidsrubhim",
"analvidssausageparty",
"analvidssexbusters",
"analvidstaylorbow",
"analvidstestedefudelidade",
"analvidsthughunter",
"analvidsungloryhole",
"analvidsxxxpawn",
"anastasiagree", "anastasiagree",
"andrealatina", "andrealatina",
"andycasanova", "andycasanova",
@ -78,12 +120,9 @@
"badassbitchxx", "badassbitchxx",
"badbardotclub", "badbardotclub",
"baileybase", "baileybase",
"baitbus",
"bangbros", "bangbros",
"barbaraalves", "barbaraalves",
"barebackattack",
"barebackbitchgril", "barebackbitchgril",
"barebackcasting",
"bazilhornydeer", "bazilhornydeer",
"bazinga", "bazinga",
"bbwblackbrazilian", "bbwblackbrazilian",
@ -101,19 +140,14 @@
"bisexcouplefamily", "bisexcouplefamily",
"bitchstudio", "bitchstudio",
"bixbaestudio", "bixbaestudio",
"blackloads",
"blackpatrol",
"blackqueen", "blackqueen",
"blacksonmoms",
"blessexxx", "blessexxx",
"bluepillmen",
"bluezao", "bluezao",
"boliviahot", "boliviahot",
"bollocksdooodle", "bollocksdooodle",
"boringkate", "boringkate",
"borisschwarzstudio", "borisschwarzstudio",
"bradmontanastudio", "bradmontanastudio",
"brandibelle",
"brebrew", "brebrew",
"brianabanderasstudio", "brianabanderasstudio",
"briannadymond", "briannadymond",
@ -121,7 +155,6 @@
"btsofdesires", "btsofdesires",
"buddhabangxxx", "buddhabangxxx",
"bumbumgigante", "bumbumgigante",
"bustyadventures",
"bustybella", "bustybella",
"bustyworld", "bustyworld",
"butterloads", "butterloads",
@ -140,7 +173,6 @@
"catalinacruz", "catalinacruz",
"cedrikgarcia", "cedrikgarcia",
"celineginger", "celineginger",
"cfnmshow",
"chameleonproduction", "chameleonproduction",
"chantalchannel", "chantalchannel",
"cherryacid", "cherryacid",
@ -156,7 +188,6 @@
"clubedapernocas", "clubedapernocas",
"clubtmfr", "clubtmfr",
"colexchurchstudio", "colexchurchstudio",
"collegerules",
"comerz", "comerz",
"coupleluna", "coupleluna",
"coupleotakucuckoldcasalotakucorno", "coupleotakucuckoldcasalotakucorno",
@ -165,12 +196,10 @@
"crisangelo", "crisangelo",
"crisanto999", "crisanto999",
"crunchboy", "crunchboy",
"culioneros",
"cutiepiiechubby", "cutiepiiechubby",
"daddyenjoy", "daddyenjoy",
"damasevagabundos", "damasevagabundos",
"danaxmuscles", "danaxmuscles",
"dancingbear",
"dankreamer", "dankreamer",
"daphneelecerf", "daphneelecerf",
"darkberry101", "darkberry101",
@ -194,7 +223,6 @@
"dirtyvision", "dirtyvision",
"discoliisa", "discoliisa",
"donteinfernostudio", "donteinfernostudio",
"dontfuckmydaughter",
"doriandelisla", "doriandelisla",
"dotmenvideos", "dotmenvideos",
"dreaminskies", "dreaminskies",
@ -218,7 +246,6 @@
"estudioalarconsherly", "estudioalarconsherly",
"evaelfie", "evaelfie",
"evansjack", "evansjack",
"exbf",
"fabriciolorenco", "fabriciolorenco",
"facialcastingstudio", "facialcastingstudio",
"faplex", "faplex",
@ -228,7 +255,6 @@
"fetishaura", "fetishaura",
"fetishbody", "fetishbody",
"fiftiweive69studio", "fiftiweive69studio",
"filthyfamily",
"firstanalteensstudio", "firstanalteensstudio",
"firstgape", "firstgape",
"fit18", "fit18",
@ -242,8 +268,6 @@
"frenchprod", "frenchprod",
"fucktotum", "fucktotum",
"fuckyoucracker", "fuckyoucracker",
"fuckysucky",
"futanari",
"gabyespecialistaemsexooral", "gabyespecialistaemsexooral",
"gabyhotstudio", "gabyhotstudio",
"gallastudio", "gallastudio",
@ -258,7 +282,6 @@
"ggwnextgeneration", "ggwnextgeneration",
"giadasgh", "giadasgh",
"girlfriendsfilms", "girlfriendsfilms",
"girlsgonewild",
"girlsinthewild", "girlsinthewild",
"glassdeskproductions", "glassdeskproductions",
"goddessizabel", "goddessizabel",
@ -276,10 +299,7 @@
"hardpornworld", "hardpornworld",
"harleenvanhynten", "harleenvanhynten",
"harshpleasuremachine", "harshpleasuremachine",
"hazeher",
"hazehim",
"helenamoellerstudio", "helenamoellerstudio",
"hentaied",
"herbalsommelier", "herbalsommelier",
"hexxgirlakarubyhexx", "hexxgirlakarubyhexx",
"heygrimystudio", "heygrimystudio",
@ -297,11 +317,9 @@
"hotwifeteen18", "hotwifeteen18",
"hpgproduction", "hpgproduction",
"ieatpinktacoz", "ieatpinktacoz",
"immorallive",
"infiltrateproxy", "infiltrateproxy",
"innofsin", "innofsin",
"irogeniastudio", "irogeniastudio",
"itsgonnahurt",
"ivanamontanastudio", "ivanamontanastudio",
"ivylopez", "ivylopez",
"jackecah", "jackecah",
@ -312,7 +330,6 @@
"japanpornjunky", "japanpornjunky",
"jasonsteelxxxstudio", "jasonsteelxxxstudio",
"jaxslayhertv", "jaxslayhertv",
"jayspov",
"jbstudio", "jbstudio",
"jeffsmodels", "jeffsmodels",
"jennanoelle", "jennanoelle",
@ -446,7 +463,6 @@
"melinamay", "melinamay",
"mentelocodotadoestudio", "mentelocodotadoestudio",
"messalinagod", "messalinagod",
"miakhalifa",
"miamolotov", "miamolotov",
"miax", "miax",
"milfliciousstudio", "milfliciousstudio",
@ -470,7 +486,6 @@
"monikafoxxxstudio", "monikafoxxxstudio",
"montycash", "montycash",
"mooneysweety", "mooneysweety",
"mranal",
"mrandersonsanalacademy", "mrandersonsanalacademy",
"mrnuttz", "mrnuttz",
"mrpussylicking", "mrpussylicking",
@ -484,7 +499,6 @@
"myclearsky", "myclearsky",
"mydirtydesires", "mydirtydesires",
"myfilthydaddy", "myfilthydaddy",
"mygf",
"myhornyfamily", "myhornyfamily",
"mylaangel", "mylaangel",
"myschoollife", "myschoollife",
@ -533,7 +547,6 @@
"origimax", "origimax",
"originalgirlsgonewild", "originalgirlsgonewild",
"ouset", "ouset",
"outinpublic",
"outsidethestudio", "outsidethestudio",
"oxibendini", "oxibendini",
"panporn", "panporn",
@ -560,21 +573,17 @@
"pornworldvr", "pornworldvr",
"possiblyneighbours", "possiblyneighbours",
"potentialanal", "potentialanal",
"poundhisass",
"princepollyproductionz", "princepollyproductionz",
"princess18", "princess18",
"princexpunkin", "princexpunkin",
"princeyahshua", "princeyahshua",
"private", "private",
"privateblack",
"privatecastings", "privatecastings",
"privateclassics", "privateclassics",
"programmerswife", "programmerswife",
"projectcitybus",
"projectfundiary", "projectfundiary",
"prollkingxxl", "prollkingxxl",
"protonvideos", "protonvideos",
"publicinvasion",
"pureinfatuation", "pureinfatuation",
"pussykagelovestudio", "pussykagelovestudio",
"putacalenturastudio", "putacalenturastudio",
@ -598,7 +607,6 @@
"reginanoir", "reginanoir",
"rhysdunbar", "rhysdunbar",
"riasunnofficial", "riasunnofficial",
"richardmannsworld",
"rickangelstudio", "rickangelstudio",
"rileycyriis", "rileycyriis",
"robybianchiproduction", "robybianchiproduction",
@ -606,7 +614,6 @@
"rockcorp", "rockcorp",
"romemajor", "romemajor",
"rpsnstudio", "rpsnstudio",
"rubhim",
"sailorboy69", "sailorboy69",
"samanthagarmendia", "samanthagarmendia",
"samanthasissystudio", "samanthasissystudio",
@ -616,11 +623,9 @@
"sarahfonteynacumrecord", "sarahfonteynacumrecord",
"sarahfonteynaeasysquirter", "sarahfonteynaeasysquirter",
"sarahslavestudio", "sarahslavestudio",
"sausageparty",
"sbstudio", "sbstudio",
"serenitylove001", "serenitylove001",
"sexartestudio", "sexartestudio",
"sexbusters",
"sexfoxxxvideos", "sexfoxxxvideos",
"sexwithmilfstella", "sexwithmilfstella",
"sexxys", "sexxys",
@ -677,9 +682,7 @@
"taradao", "taradao",
"tarrawhite", "tarrawhite",
"tayleewoodstudio", "tayleewoodstudio",
"taylorbow",
"telanua", "telanua",
"testedefudelidade",
"tgirlplayhouse", "tgirlplayhouse",
"thanchetbigdick", "thanchetbigdick",
"thatredheadskye", "thatredheadskye",
@ -690,7 +693,6 @@
"thewondertoystrainingstudio", "thewondertoystrainingstudio",
"theyloveflaxk", "theyloveflaxk",
"thiagomontestudio", "thiagomontestudio",
"thughunter",
"tiffanyleiddi", "tiffanyleiddi",
"tigresavip", "tigresavip",
"timeabellaproduction", "timeabellaproduction",
@ -705,7 +707,6 @@
"turndonpodcast", "turndonpodcast",
"tvredfire", "tvredfire",
"tylercoxxdzstudio", "tylercoxxdzstudio",
"ungloryhole",
"uniquebless", "uniquebless",
"unjmdstudio", "unjmdstudio",
"unlimstudio", "unlimstudio",
@ -734,7 +735,6 @@
"xsanyany", "xsanyany",
"xtvstudio", "xtvstudio",
"xwar555", "xwar555",
"xxxpawn",
"xxxporn", "xxxporn",
"xxxtaylornicole", "xxxtaylornicole",
"you170", "you170",

View File

@ -1,3 +1,5 @@
const analvids = require('./analvids.json');
module.exports = { module.exports = {
database: { database: {
owner: { owner: {
@ -73,6 +75,8 @@ module.exports = {
}, },
exclude: { exclude: {
channels: [ channels: [
// AnalVids secondary channels
...analvids,
// 21sextreme, no longer updated // 21sextreme, no longer updated
'mightymistress', 'mightymistress',
'dominatedgirls', 'dominatedgirls',

View File

@ -0,0 +1,79 @@
exports.up = async (knex) => {
await knex.schema.createTable('actors_revisions', (table) => {
table.increments('id');
table.integer('actor_id')
.references('id')
.inTable('actors')
.onDelete('set null');
table.integer('profile_id')
.references('id')
.inTable('actors_profiles')
.onDelete('set null');
table.integer('user_id')
.references('id')
.inTable('users')
.onDelete('set null');
table.json('base')
.notNullable();
table.json('deltas')
.notNullable();
table.text('hash')
.notNullable();
table.text('comment');
table.boolean('approved');
table.integer('reviewed_by')
.references('id')
.inTable('users')
.onDelete('set null');
table.datetime('reviewed_at');
table.text('feedback');
table.datetime('applied_at');
table.datetime('created_at')
.notNullable()
.defaultTo(knex.fn.now());
});
await knex.schema.alterTable('actors', (table) => {
table.integer('boobs_volume');
table.integer('butt_volume');
table.integer('lips_volume');
table.boolean('natural_butt');
});
await knex.schema.alterTable('actors_profiles', (table) => {
table.integer('boobs_volume');
table.integer('butt_volume');
table.integer('lips_volume');
table.boolean('natural_butt');
});
};
exports.down = async (knex) => {
await knex.schema.dropTable('actors_revisions');
await knex.schema.alterTable('actors', (table) => {
table.dropColumn('boobs_volume');
table.dropColumn('butt_volume');
table.dropColumn('lips_volume');
table.dropColumn('natural_butt');
});
await knex.schema.alterTable('actors_profiles', (table) => {
table.dropColumn('boobs_volume');
table.dropColumn('butt_volume');
table.dropColumn('lips_volume');
table.dropColumn('natural_butt');
});
};

View File

@ -138,6 +138,13 @@ const networks = [
name: 'Amnesiac', name: 'Amnesiac',
hasLogo: true, hasLogo: true,
}, },
{
slug: 'analvids',
name: 'AnalVids',
alias: ['legalporno', 'clip', 'gonzo'],
url: 'https://www.analvids.com',
parent: 'wgcz',
},
{ {
slug: 'assylum', slug: 'assylum',
name: 'Assylum', name: 'Assylum',

View File

@ -1,4 +1,5 @@
const upsert = require('../src/utils/upsert'); const upsert = require('../src/utils/upsert');
const analvids = require('./analvids');
/* eslint-disable max-len */ /* eslint-disable max-len */
const sites = [ const sites = [
@ -5818,16 +5819,8 @@ const sites = [
description: 'Check out what the hottest KinkMen models have for you. Get a test of this kinky private homemade gay BDSM bondage porn made just for you.', description: 'Check out what the hottest KinkMen models have for you. Get a test of this kinky private homemade gay BDSM bondage porn made just for you.',
parent: 'kinkmen', parent: 'kinkmen',
}, },
// LEGALPORNO // ANALVIDS / LEGALPORNO
{ ...analvids,
slug: 'analvids',
name: 'AnalVids',
alias: ['legalporno', 'clip', 'gonzo'],
url: 'https://www.analvids.com',
independent: true,
showcased: false, // showcased per studio
parent: 'wgcz',
},
// LETS DOE IT // LETS DOE IT
{ {
name: 'The White Boxxx', name: 'The White Boxxx',
@ -13971,6 +13964,18 @@ const sites = [
}, },
]; ];
/*
sites.reduce((acc, site) => {
if (acc.has(site.slug)) {
console.log('DUPLICATE!', site.slug);
}
acc.add(site.slug);
return acc;
}, new Set());
*/
/* eslint-disable max-len */ /* eslint-disable max-len */
exports.seed = (knex) => Promise.resolve() exports.seed = (knex) => Promise.resolve()
.then(async () => { .then(async () => {

View File

@ -5,6 +5,7 @@ const channelSlugs = sites.map((site) => site.slug);
const studios = [ const studios = [
// ANALVIDS / LEGALPORNO // ANALVIDS / LEGALPORNO
/*
{ {
name: 'Giorgio Grandi', name: 'Giorgio Grandi',
slug: 'giorgiograndi', slug: 'giorgiograndi',
@ -5254,6 +5255,7 @@ const studios = [
parent: 'analvids', parent: 'analvids',
description: 'Producing raw amateur porn leaded by Bluff, the creator, filmmaker and photographer. The models are from a circle of friends that creates and share all together. Through webcam nights, professionally made productions or from spontaneous projects, the general desire always was to produce high quality amateur porn. A wide variety of content is offered. *No custom video request *all models are 18+ and consented to appear in the photos/videos.', description: 'Producing raw amateur porn leaded by Bluff, the creator, filmmaker and photographer. The models are from a circle of friends that creates and share all together. Through webcam nights, professionally made productions or from spontaneous projects, the general desire always was to produce high quality amateur porn. A wide variety of content is offered. *No custom video request *all models are 18+ and consented to appear in the photos/videos.',
}, },
*/
// TESTE DE FUDELIDADE // TESTE DE FUDELIDADE
{ {
name: 'Teste de Fudelidade Exclusivo', name: 'Teste de Fudelidade Exclusivo',

View File

@ -1094,7 +1094,7 @@ exports.seed = (knex) => Promise.resolve()
const entities = await knex('entities') const entities = await knex('entities')
.whereIn('slug', tagMedia.map((item) => item.entitySlug).filter(Boolean)) .whereIn('slug', tagMedia.map((item) => item.entitySlug).filter(Boolean))
.orderBy('type', 'DESC'); .orderBy('type', 'asc');
const entitiesBySlug = entities.reduce((acc, entity) => ({ const entitiesBySlug = entities.reduce((acc, entity) => ({
...acc, ...acc,

View File

@ -915,13 +915,13 @@ const campaigns = [
comment: 'default offer', comment: 'default offer',
}, },
{ {
channel: 'analvids', network: 'analvids',
banner: 'pornworld_600_120_1', banner: 'pornworld_600_120_1',
url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____', url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____',
comment: 'default offer', comment: 'default offer',
}, },
{ {
channel: 'analvids', network: 'analvids',
banner: 'pornworld_600_120_2', banner: 'pornworld_600_120_2',
url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____', url: 'https://www.analvids.com/new-videos?aff=BW90MHT1DP____',
comment: 'default offer', comment: 'default offer',

5982
seeds/analvids.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@ function scrapeAll(scenes, channel) {
release.title = query.content('.card-scene__text'); release.title = query.content('.card-scene__text');
release.shootId = extractTitle(release.title).shootId; release.shootId = extractTitle(release.title).shootId;
release.date = query.date('.label--time:nth-child(2)', 'YYYY-MM-DD'); release.date = query.date('.label--time:nth-child(2)', 'YYYY-MM-DD'); // only available on front-page, not on studio page
release.duration = query.duration('.label--time:first-child'); release.duration = query.duration('.label--time:first-child');
release.poster = query.img('.card-scene__view img', { attribute: 'data-src' }); release.poster = query.img('.card-scene__view img', { attribute: 'data-src' });
@ -64,10 +64,9 @@ function scrapeScene({ query }, { url }) {
release.tags = query.contents('.genres-list a[href*="/genre"]'); release.tags = query.contents('.genres-list a[href*="/genre"]');
release.studio = slugify(query.content('.genres-list a[href*="/studios"]'), '', { removePunctuation: true }); // release.studio = slugify(query.content('.genres-list a[href*="/studios"]'), '', { removePunctuation: true });
release.poster = query.img('.watch__video video', { attribute: 'data-poster' }); release.poster = query.img('.watch__video video', { attribute: 'data-poster' });
release.photoCount = query.number('.bi-eye');
release.trailer = query.all('.watch__video source').map((el) => ({ release.trailer = query.all('.watch__video source').map((el) => ({
src: unprint.query.video(el, null, { attribute: 'src' }), src: unprint.query.video(el, null, { attribute: 'src' }),
@ -91,7 +90,8 @@ function scrapeProfile({ query }, url, channel) {
} }
async function fetchLatest(channel, page) { async function fetchLatest(channel, page) {
const res = await unprint.get(`${channel.url}/new-videos/${page}`, { selectAll: '.card-scene' }); // const res = await unprint.get(`https://www.analvids.com/new-videos/${page}`, { selectAll: '.card-scene' }); // analvids as channel
const res = await unprint.get(`${channel.url}/latest/${page}`, { selectAll: '.card-scene' }); // studios as channels
if (res.ok) { if (res.ok) {
return scrapeAll(res.context, channel); return scrapeAll(res.context, channel);