diff --git a/migrations/20241019013040_actor_revisions.js b/migrations/20241019013040_actor_revisions.js index 36df03e7..67deebf1 100644 --- a/migrations/20241019013040_actor_revisions.js +++ b/migrations/20241019013040_actor_revisions.js @@ -1,4 +1,6 @@ exports.up = async (knex) => { + await knex.raw('CREATE UNIQUE INDEX unique_main_profiles ON actors_profiles (actor_id) WHERE (entity_id IS NULL);'); + await knex.schema.createTable('actors_revisions', (table) => { table.increments('id'); @@ -47,32 +49,59 @@ exports.up = async (knex) => { await knex.schema.alterTable('actors', (table) => { table.integer('boobs_volume'); + table.enum('boobs_implant', ['saline', 'silicone', 'gummy', 'fat']); + table.enum('boobs_placement', ['over', 'under']); + table.string('boobs_surgeon'); + table.integer('butt_volume'); + table.enum('butt_implant', ['bbl', 'lift', 'silicone', 'lipo', 'filler', 'mms']); + table.integer('lips_volume'); + table.boolean('natural_butt'); }); await knex.schema.alterTable('actors_profiles', (table) => { table.integer('boobs_volume'); + table.enum('boobs_implant', ['saline', 'silicone', 'gummy', 'fat']); + table.enum('boobs_placement', ['over', 'under']); + table.string('boobs_surgeon'); + table.integer('butt_volume'); + table.enum('butt_implant', ['bbl', 'lift', 'silicone', 'lipo', 'filler', 'mms']); + table.integer('lips_volume'); table.boolean('natural_butt'); }); }; exports.down = async (knex) => { + await knex.raw('DROP INDEX unique_main_profiles;'); + await knex.schema.dropTable('actors_revisions'); await knex.schema.alterTable('actors', (table) => { table.dropColumn('boobs_volume'); + table.dropColumn('boobs_implant'); + table.dropColumn('boobs_placement'); + table.dropColumn('boobs_surgeon'); + table.dropColumn('butt_volume'); + table.dropColumn('butt_implant'); + table.dropColumn('lips_volume'); table.dropColumn('natural_butt'); }); await knex.schema.alterTable('actors_profiles', (table) => { table.dropColumn('boobs_volume'); + table.dropColumn('boobs_implant'); + table.dropColumn('boobs_placement'); + table.dropColumn('boobs_surgeon'); + table.dropColumn('butt_volume'); + table.dropColumn('butt_implant'); + table.dropColumn('lips_volume'); table.dropColumn('natural_butt'); }); diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 35c24d62..7cfcf845 100755 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -3468,13 +3468,47 @@ const sites = [ { slug: 'transsexualangel', name: 'Transsexual Angel', - alias: ['she plays with her cock'], + alias: ['she plays with her cock', 'angelicts'], url: 'https://www.transsexualangel.com', parent: 'evilangel', tags: ['transsexual'], parameters: { - referer: 'https://www.evilangel.com', - scene: 'https://www.evilangel.com/en/video', + api: true, + // referer: 'https://www.evilangel.com', + scene: 'https://www.transsexualangel.com/en/video/transgressivexxx', + }, + }, + { + slug: 'transgressivexxx', + name: 'Transgressive XXX', + url: 'https://www.transgressivexxx.com', + parent: 'evilangel', + tags: ['transsexual'], + parameters: { + api: true, + scene: 'https://www.transgressivexxx.com/en/video/transgressivexxx', + }, + }, + { + slug: 'tsfactor', + name: 'TS Factor', + url: 'https://www.tsfactor.com', + parent: 'evilangel', + tags: ['transsexual'], + parameters: { + api: true, + scene: 'https://www.tsfactor.com/en/video/evilangel', + }, + }, + { + slug: 'pansexualx', + name: 'PansexualX', + url: 'https://www.pansexualx.com', + parent: 'evilangel', + tags: ['transsexual'], + parameters: { + api: true, + scene: 'https://www.pansexualx.com/en/video/evilangel', }, }, { diff --git a/src/scrapers/gamma.js b/src/scrapers/gamma.js index 89f78254..9e1cce1e 100755 --- a/src/scrapers/gamma.js +++ b/src/scrapers/gamma.js @@ -658,7 +658,7 @@ async function fetchLatestApi(site, page = 1, options, preData, upcoming = false const params = `query=&hitsPerPage=36&maxValuesPerFacet=100&page=${page - 1}&facetFilters=[["lesbian:"],["bisex:"],["shemale:"],["upcoming:${upcoming ? 1 : 0}"]]${options.parameters.queryChannel ? `&filters=channels.id:${options.parameters.queryChannel === true ? slug : options.parameters.queryChannel}` - : `&filters=sitename:${slug}`}`; + : `&filters=availableOnSite:${slug}`}`; const res = await http.post(apiUrl, { requests: [