Added Bang! scraper. Showing studio on tile. Added favicons to tiles.

This commit is contained in:
2020-01-06 05:19:38 +01:00
parent 3a7aa58abb
commit bb5b8085f6
90 changed files with 430 additions and 45 deletions

View File

@@ -180,6 +180,23 @@ async function attachChannelSite(release) {
};
}
async function attachStudio(release) {
if (!release.studio) {
return release;
}
const studio = await knex('studios')
.where('name', release.studio)
.orWhere('slug', release.studio)
.orWhere('url', release.studio)
.first();
return {
...release,
studio,
};
}
async function curateReleaseEntry(release) {
const curatedRelease = {
site_id: release.site.id,
@@ -295,27 +312,31 @@ async function storeReleaseAssets(release, releaseId) {
await createMediaDirectory('releases', subpath);
try {
await Promise.all([
storePhotos(release.photos, {
targetId: releaseId,
subpath,
primaryRole: release.poster ? null : 'poster',
}, identifier),
release.poster && storePhotos([release.poster], {
// don't use Promise.all to prevent concurrency issues with duplicate detection
if (release.poster) {
await storePhotos([release.poster], {
role: 'poster',
targetId: releaseId,
subpath,
}, identifier),
storePhotos(release.covers, {
role: 'cover',
targetId: releaseId,
subpath,
}, identifier),
storeTrailer(release.trailer, {
targetId: releaseId,
subpath,
}, identifier),
]);
}, identifier);
}
await storePhotos(release.photos, {
targetId: releaseId,
subpath,
primaryRole: release.poster ? null : 'poster',
}, identifier);
await storePhotos(release.covers, {
role: 'cover',
targetId: releaseId,
subpath,
}, identifier);
await storeTrailer(release.trailer, {
targetId: releaseId,
subpath,
}, identifier);
} catch (error) {
console.log(release.url, error);
}
@@ -363,7 +384,8 @@ async function storeReleases(releases) {
const storedReleases = await Promise.map(releases, async (release) => {
try {
const releaseWithChannelSite = await attachChannelSite(release);
const releaseId = await storeRelease(releaseWithChannelSite);
const releaseWithStudio = await attachStudio(release);
const releaseId = await storeRelease(releaseWithStudio);
return {
id: releaseId,