traxxx/src/tools/analvids.js

83 lines
1.9 KiB
JavaScript
Executable File

'use strict';
const fs = require('fs').promises;
const bhttp = require('bhttp');
const slugify = require('../utils/slugify');
const { studios: oldStudios } = require('../../seeds/03_studios');
const slugMap = {
thay_ksada: 'thayksada2',
};
async function init() {
const res = await bhttp.get('https://pornbox.com/studio/list');
if (!res.statusCode === 200) {
throw new Error(`Failed to retrieve studios (${res.statusCode}): ${res.body.toString()}`);
}
const newStudios = res.body.map((studio) => {
const slug = slugify(studio.name, '');
const oldStudio = oldStudios.find((oldStudioX) => oldStudioX.slug === slug);
const tags = oldStudio?.tags || [];
const newStudio = {
name: studio.name,
slug,
originalSlug: slugify(studio.alias, ''),
url: `https://www.analvids.com/studios/${studio.alias}`,
parent: 'analvids',
};
if (oldStudio?.alias) {
newStudio.alias = oldStudio.alias;
}
if (studio.description && studio.description.toLowerCase() !== studio.name.toLowerCase()) {
newStudio.description = studio.description;
}
if (studio.directions?.includes('gay')) {
tags.push('gay');
}
if (studio.directions?.includes('lesbian')) {
tags.push('lesbian');
}
if (studio.directions?.includes('trans')) {
tags.push('transsexual');
}
if (tags.length > 0) {
newStudio.tags = Array.from(new Set(tags));
}
return newStudio;
});
await fs.writeFile('./analvids-studios.json', JSON.stringify(newStudios, null, 4));
newStudios.reduce((acc, studio) => {
const existingStudio = acc.get(studio.slug);
if (existingStudio) {
if (!acc.has(studio.originalSlug)) {
console.log('REWRITE', studio.slug, studio.originalSlug);
studio.slug = studio.originalSlug; // eslint-disable-line
}
console.log('slug already exists!', existingStudio, studio, studio.originalSlug, studio.slug);
}
acc.set(studio.slug, studio);
return acc;
}, new Map());
// console.log(newStudios);
}
init();