Added DarkkoTV scraper. Removed some obsolete web components.
This commit is contained in:
215
src/releases.js
215
src/releases.js
@@ -8,117 +8,6 @@ const argv = require('./argv');
|
||||
const { updateSceneSearch } = require('./update-search');
|
||||
const { flushOrphanedMedia } = require('./media');
|
||||
|
||||
const { graphql } = require('./web/graphql');
|
||||
|
||||
const releaseFields = `
|
||||
id
|
||||
entryId
|
||||
shootId
|
||||
title
|
||||
url
|
||||
date
|
||||
description
|
||||
duration
|
||||
entity {
|
||||
id
|
||||
name
|
||||
slug
|
||||
parent {
|
||||
id
|
||||
name
|
||||
slug
|
||||
}
|
||||
}
|
||||
actors: releasesActors {
|
||||
actor {
|
||||
id
|
||||
name
|
||||
slug
|
||||
gender
|
||||
aliasFor
|
||||
entityId
|
||||
entryId
|
||||
}
|
||||
}
|
||||
tags: releasesTags {
|
||||
tag {
|
||||
id
|
||||
name
|
||||
slug
|
||||
}
|
||||
}
|
||||
chapters(orderBy: TIME_ASC) @include(if: $full) {
|
||||
id
|
||||
index
|
||||
time
|
||||
duration
|
||||
title
|
||||
description
|
||||
tags: chaptersTags {
|
||||
tag {
|
||||
id
|
||||
name
|
||||
slug
|
||||
}
|
||||
}
|
||||
poster: chaptersPoster {
|
||||
media {
|
||||
id
|
||||
path
|
||||
thumbnail
|
||||
s3: isS3
|
||||
width
|
||||
height
|
||||
size
|
||||
}
|
||||
}
|
||||
photos: chaptersPhotos {
|
||||
media {
|
||||
id
|
||||
path
|
||||
thumbnail
|
||||
s3: isS3
|
||||
width
|
||||
height
|
||||
size
|
||||
}
|
||||
}
|
||||
}
|
||||
poster: releasesPoster {
|
||||
media {
|
||||
id
|
||||
path
|
||||
thumbnail
|
||||
s3: isS3
|
||||
width
|
||||
height
|
||||
size
|
||||
}
|
||||
}
|
||||
photos: releasesPhotos @include (if: $full) {
|
||||
media {
|
||||
id
|
||||
path
|
||||
thumbnail
|
||||
s3: isS3
|
||||
width
|
||||
height
|
||||
size
|
||||
}
|
||||
}
|
||||
trailer: releasesTrailer @include (if: $full) {
|
||||
media {
|
||||
id
|
||||
path
|
||||
s3: isS3
|
||||
vr: isVr
|
||||
quality
|
||||
size
|
||||
}
|
||||
}
|
||||
createdAt
|
||||
`;
|
||||
|
||||
function curateRelease(release, withMedia = false, withPoster = true) {
|
||||
if (!release) {
|
||||
return null;
|
||||
@@ -193,107 +82,6 @@ function curateRelease(release, withMedia = false, withPoster = true) {
|
||||
};
|
||||
}
|
||||
|
||||
function curateGraphqlRelease(release) {
|
||||
if (!release) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
id: release.id,
|
||||
...(release.relevance && { relevance: release.relevance }),
|
||||
entryId: release.entryId,
|
||||
shootId: release.shootId,
|
||||
title: release.title || null,
|
||||
url: release.url || null,
|
||||
date: release.date,
|
||||
description: release.description || null,
|
||||
duration: release.duration,
|
||||
entity: release.entity,
|
||||
actors: release.actors.map((actor) => actor.actor),
|
||||
tags: release.tags.map((tag) => tag.tag),
|
||||
...(release.chapters && { chapters: release.chapters.map((chapter) => ({
|
||||
...chapter,
|
||||
tags: chapter.tags.map((tag) => tag.tag),
|
||||
poster: chapter.poster?.media || null,
|
||||
photos: chapter.photos.map((photo) => photo.media),
|
||||
})) }),
|
||||
poster: release.poster?.media || null,
|
||||
...(release.photos && { photos: release.photos.map((photo) => photo.media) }),
|
||||
trailer: release.trailer?.media || null,
|
||||
createdAt: release.createdAt,
|
||||
};
|
||||
}
|
||||
|
||||
async function fetchScene(releaseId) {
|
||||
const { release } = await graphql(`
|
||||
query Release(
|
||||
$releaseId: Int!
|
||||
$full: Boolean = true
|
||||
) {
|
||||
release(id: $releaseId) {
|
||||
${releaseFields}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
releaseId: Number(releaseId),
|
||||
});
|
||||
|
||||
return curateGraphqlRelease(release);
|
||||
}
|
||||
|
||||
async function fetchScenes(limit = 100) {
|
||||
const { releases } = await graphql(`
|
||||
query SearchReleases(
|
||||
$limit: Int = 20
|
||||
$full: Boolean = false
|
||||
) {
|
||||
releases(
|
||||
first: $limit
|
||||
orderBy: DATE_DESC
|
||||
) {
|
||||
${releaseFields}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
limit: Math.min(limit, 10000),
|
||||
});
|
||||
|
||||
return releases.map((release) => curateGraphqlRelease(release));
|
||||
}
|
||||
|
||||
async function searchScenes(query, limit = 100, relevance = 0) {
|
||||
const { releases } = await graphql(`
|
||||
query SearchReleases(
|
||||
$query: String!
|
||||
$limit: Int = 20
|
||||
$relevance: Float = 0.025
|
||||
$full: Boolean = false
|
||||
) {
|
||||
releases: searchReleases(
|
||||
query: $query
|
||||
first: $limit
|
||||
orderBy: RANK_DESC
|
||||
filter: {
|
||||
rank: {
|
||||
greaterThan: $relevance
|
||||
}
|
||||
}
|
||||
) {
|
||||
rank
|
||||
release {
|
||||
${releaseFields}
|
||||
}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
query,
|
||||
limit,
|
||||
relevance,
|
||||
});
|
||||
|
||||
return releases.map((release) => curateGraphqlRelease({ ...release.release, relevance: release.rank }));
|
||||
}
|
||||
|
||||
async function deleteScenes(sceneIds) {
|
||||
if (sceneIds.length === 0) {
|
||||
return 0;
|
||||
@@ -483,13 +271,10 @@ async function flushBatches(batchIds) {
|
||||
|
||||
module.exports = {
|
||||
curateRelease,
|
||||
fetchScene,
|
||||
fetchScenes,
|
||||
flushBatches,
|
||||
flushMovies,
|
||||
flushSeries,
|
||||
flushScenes,
|
||||
searchScenes,
|
||||
deleteScenes,
|
||||
deleteMovies,
|
||||
deleteSeries,
|
||||
|
||||
Reference in New Issue
Block a user