forked from DebaucheryLibrarian/traxxx
Showing actors, tags and date on movie tiles.
This commit is contained in:
@@ -49,12 +49,14 @@ async function init() {
|
||||
}
|
||||
|
||||
if (argv.save) {
|
||||
if (deepScenes.length + deepMovieScenes.length > 0) {
|
||||
await storeScenes(deepScenes.concat(deepMovieScenes));
|
||||
if (deepScenes.length > 0 || deepMovieScenes.length > 0) {
|
||||
await storeScenes(deepScenes || []);
|
||||
}
|
||||
|
||||
if (deepMovies.length > 0) {
|
||||
await storeMovies(deepMovies);
|
||||
const storedMovieScenes = await storeScenes(deepMovieScenes);
|
||||
|
||||
await storeMovies(deepMovies, storedMovieScenes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -165,7 +165,9 @@ async function fetchScenes(baseReleasesOrUrls) {
|
||||
}
|
||||
|
||||
async function fetchMovies(baseReleasesOrUrls) {
|
||||
return fetchReleases(baseReleasesOrUrls, 'movie');
|
||||
const movies = await fetchReleases(baseReleasesOrUrls, 'movie');
|
||||
|
||||
return movies;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -255,7 +255,38 @@ async function storeScenes(releases) {
|
||||
return releasesWithId;
|
||||
}
|
||||
|
||||
async function storeMovies(movies) {
|
||||
async function associateMovieScenes(movies, movieScenes) {
|
||||
const movieScenesByEntityIdAndEntryId = movieScenes.reduce((acc, scene) => ({
|
||||
...acc,
|
||||
[scene.entity.id]: {
|
||||
...acc[scene.entity.id],
|
||||
[scene.entryId]: scene,
|
||||
},
|
||||
}), {});
|
||||
|
||||
const associations = movies.map((movie) => {
|
||||
if (!movie.scenes) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return movie.scenes.map((scene) => {
|
||||
const movieScene = movieScenesByEntityIdAndEntryId[movie.entity.id]?.[scene.entryId];
|
||||
|
||||
if (movieScene) {
|
||||
return {
|
||||
movie_id: movie.id,
|
||||
scene_id: movieScene.id,
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
});
|
||||
}).flat().filter(Boolean);
|
||||
|
||||
await knex.batchInsert('movies_scenes', associations);
|
||||
}
|
||||
|
||||
async function storeMovies(movies, movieScenes) {
|
||||
const { uniqueReleases } = await filterDuplicateReleases(movies);
|
||||
const [batchId] = await knex('batches').insert({ comment: null }).returning('id');
|
||||
|
||||
@@ -264,6 +295,7 @@ async function storeMovies(movies) {
|
||||
|
||||
const moviesWithId = attachReleaseIds(movies, storedMovies);
|
||||
|
||||
await associateMovieScenes(moviesWithId, movieScenes);
|
||||
await associateReleaseMedia(moviesWithId, 'movies');
|
||||
|
||||
return storedMovies;
|
||||
|
||||
@@ -177,7 +177,7 @@ async function scrapeMovies(scraper, entity) {
|
||||
}
|
||||
|
||||
async function scrapeChannelReleases(scraper, channelEntity, preData) {
|
||||
const [latestReleases, upcomingReleases] = await Promise.all([
|
||||
const [latestReleases, upcomingReleases, movies] = await Promise.all([
|
||||
argv.latest
|
||||
? scrapeLatestReleases(scraper, channelEntity, preData)
|
||||
: [],
|
||||
@@ -189,6 +189,8 @@ async function scrapeChannelReleases(scraper, channelEntity, preData) {
|
||||
: [],
|
||||
]);
|
||||
|
||||
console.log(movies);
|
||||
|
||||
logger.info(`Fetching ${latestReleases.length} latest and ${upcomingReleases.length} upcoming updates for '${channelEntity.name}' (${channelEntity.parent?.name})`);
|
||||
|
||||
return [...latestReleases, ...upcomingReleases];
|
||||
|
||||
Reference in New Issue
Block a user