Compare commits

..

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian 43af7ba777 1.211.1 2022-03-26 17:56:24 +01:00
DebaucheryLibrarian 0dad5b0d68 Added series removal utils. 2022-03-26 17:56:22 +01:00
4 changed files with 61 additions and 10 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.211.0", "version": "1.211.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "traxxx", "name": "traxxx",
"version": "1.211.0", "version": "1.211.1",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@casl/ability": "^5.2.2", "@casl/ability": "^5.2.2",

View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.211.0", "version": "1.211.1",
"description": "All the latest porn releases in one place", "description": "All the latest porn releases in one place",
"main": "src/app.js", "main": "src/app.js",
"scripts": { "scripts": {

View File

@ -6,7 +6,7 @@ const inquirer = require('inquirer');
const logger = require('./logger')(__filename); const logger = require('./logger')(__filename);
const argv = require('./argv'); const argv = require('./argv');
const knex = require('./knex'); const knex = require('./knex');
const { deleteScenes, deleteMovies } = require('./releases'); const { deleteScenes, deleteMovies, deleteSeries } = require('./releases');
const { flushOrphanedMedia } = require('./media'); const { flushOrphanedMedia } = require('./media');
const { resolveScraper, resolveLayoutScraper } = require('./scrapers/resolve'); const { resolveScraper, resolveLayoutScraper } = require('./scrapers/resolve');
@ -359,29 +359,39 @@ async function flushEntities(networkSlugs = [], channelSlugs = []) {
.leftJoin('movies', 'movies.entity_id', 'selected_entities.id') .leftJoin('movies', 'movies.entity_id', 'selected_entities.id')
.pluck('movies.id'); .pluck('movies.id');
if (sceneIds.length === 0 && movieIds.length === 0) { const serieIds = await entityQuery
logger.info(`No scenes or movies found to remove for ${entitySlugs}`); .clone()
.select('series.id')
.distinct('series.id')
.whereNotNull('series.id')
.from('selected_entities')
.leftJoin('series', 'series.entity_id', 'selected_entities.id')
.pluck('series.id');
if (sceneIds.length === 0 && movieIds.length === 0 && serieIds.length === 0) {
logger.info(`No scenes, movies or series found to remove for ${entitySlugs}`);
return; return;
} }
const confirmed = await inquirer.prompt([{ const confirmed = await inquirer.prompt([{
type: 'confirm', type: 'confirm',
name: 'flushEntities', name: 'flushEntities',
message: `You are about to remove ${sceneIds.length} scenes and ${movieIds.length} movies for ${entitySlugs}. Are you sure?`, message: `You are about to remove ${sceneIds.length} scenes, ${movieIds.length} movies and ${serieIds.length} series for ${entitySlugs}. Are you sure?`,
default: false, default: false,
}]); }]);
if (!confirmed.flushEntities) { if (!confirmed.flushEntities) {
logger.warn(`Confirmation rejected, not flushing scenes or movies for: ${entitySlugs}`); logger.warn(`Confirmation rejected, not flushing scenes, movies or series for: ${entitySlugs}`);
return; return;
} }
const [deletedScenesCount, deletedMoviesCount] = await Promise.all([ const [deletedScenesCount, deletedMoviesCount, deletedSeriesCount] = await Promise.all([
deleteScenes(sceneIds), deleteScenes(sceneIds),
deleteMovies(movieIds), deleteMovies(movieIds),
deleteSeries(serieIds),
]); ]);
logger.info(`Removed ${deletedScenesCount} scenes and ${deletedMoviesCount} movies for ${entitySlugs}`); logger.info(`Removed ${deletedScenesCount} scenes, ${deletedMoviesCount} movies and ${deletedSeriesCount} series for ${entitySlugs}`);
await flushOrphanedMedia(); await flushOrphanedMedia();
} }

View File

@ -325,6 +325,24 @@ async function deleteMovies(movieIds) {
return deleteCount; return deleteCount;
} }
async function deleteSeries(serieIds) {
if (serieIds.length === 0) {
return 0;
}
await knex('series_scenes')
.whereIn('serie_id', serieIds)
.delete();
const deleteCount = await knex('series')
.whereIn('id', serieIds)
.delete();
logger.info(`Removed ${deleteCount}/${serieIds.length} series`);
return deleteCount;
}
async function flushScenes() { async function flushScenes() {
const sceneIds = await knex('releases').select('id').pluck('id'); const sceneIds = await knex('releases').select('id').pluck('id');
@ -367,6 +385,27 @@ async function flushMovies() {
logger.info(`Removed ${deleteCount}/${movieIds.length} movies`); logger.info(`Removed ${deleteCount}/${movieIds.length} movies`);
} }
async function flushSeries() {
const serieIds = await knex('series').select('id').pluck('id');
const confirmed = await inquirer.prompt([{
type: 'confirm',
name: 'flushSeries',
message: `You are about to remove ${serieIds.length} series. Are you sure?`,
default: false,
}]);
if (!confirmed.flushSeries) {
logger.warn('Confirmation rejected, not flushing series');
return;
}
const deleteCount = await deleteSeries(serieIds);
await flushOrphanedMedia();
logger.info(`Removed ${deleteCount}/${serieIds.length} series`);
}
async function flushBatches(batchIds) { async function flushBatches(batchIds) {
const [sceneIds, movieIds] = await Promise.all([ const [sceneIds, movieIds] = await Promise.all([
knex('releases') knex('releases')
@ -407,8 +446,10 @@ module.exports = {
fetchScenes, fetchScenes,
flushBatches, flushBatches,
flushMovies, flushMovies,
flushSeries,
flushScenes, flushScenes,
searchScenes, searchScenes,
deleteScenes, deleteScenes,
deleteMovies, deleteMovies,
deleteSeries,
}; };