Improvements, GrapQL experiments. Fixed Babel dependencies.

This commit is contained in:
2019-12-15 22:16:55 +01:00
parent 7ba716cd6f
commit 07a6c77ce2
9 changed files with 183 additions and 1898 deletions

View File

@@ -40,6 +40,9 @@ async function createThumbnail(buffer) {
height: config.media.thumbnailSize,
withoutEnlargement: true,
})
.jpeg({
quality: 50,
})
.toBuffer();
}

View File

@@ -272,19 +272,29 @@ function curateReleases(releases) {
return Promise.all(releases.map(async release => curateRelease(release)));
}
async function getChannelSite(release) {
try {
const site = await findSiteByUrl(release.channel);
return site || null;
} catch (error) {
const [site] = await fetchSites({
name: release.channel,
slug: release.channel,
});
return site || null;
async function attachChannelSite(release) {
if (!release.site.isFallback || !release.channel) {
throw new Error(`Unable to derive channel site from generic URL: ${release.url}.`);
}
const [site] = await fetchSites({
name: release.channel,
slug: release.channel,
});
if (site) {
return {
...release,
site,
};
}
const urlSite = await findSiteByUrl(release.channel);
return {
...release,
site: urlSite,
};
}
async function curateReleaseEntry(release) {
@@ -307,15 +317,6 @@ async function curateReleaseEntry(release) {
deep: typeof release.deep === 'boolean' ? release.deep : false,
};
if (release.site.isFallback && release.channel) {
const site = await getChannelSite(release);
if (site) {
curatedRelease.site_id = site.id;
return curatedRelease;
}
}
return curatedRelease;
}
@@ -477,18 +478,13 @@ async function storeRelease(release) {
async function storeReleases(releases) {
const storedReleases = await Promise.map(releases, async (release) => {
if (release.site.isFallback && !release.channel) {
console.error(`Unable to derive channel site from generic URL: ${release.url}.`);
return null;
}
try {
const releaseId = await storeRelease(release);
const releaseWithChannelSite = await attachChannelSite(release);
const releaseId = await storeRelease(releaseWithChannelSite);
return {
id: releaseId,
...release,
...releaseWithChannelSite,
};
} catch (error) {
console.error(error);

View File

@@ -16,7 +16,7 @@ async function scrapeProfile(html, _url, actorName) {
const { document } = new JSDOM(html).window;
const entries = Array.from(document.querySelectorAll('.infoPiece'), el => el.textContent.replace(/\n|\t/g, '').split(':'));
const bio = entries.reduce((acc, [key, value]) => ({ ...acc, [key.trim()]: value.trim() }), {});
const bio = entries.reduce((acc, [key, value]) => (key ? { ...acc, [key.trim()]: value.trim() } : acc), {});
const profile = {
name: actorName,