No longer redownload profile image and description when indexed, unless --redownload-profile is specified.

This commit is contained in:
2018-07-01 03:26:26 +02:00
parent e7eef86b23
commit 1b1323dc3d
8 changed files with 37 additions and 22 deletions

View File

@@ -9,12 +9,18 @@ const fetchItem = require('../fetch/item.js');
const textToStream = require('./textToStream.js');
const save = require('./save.js');
async function saveProfileImage(user) {
async function saveProfileImage(user, args) {
if (!args.redownloadProfile && user.indexed.profile.description) {
console.log('\x1b[33m%s\x1b[0m', `Ignoring already present profile image for '${user.name}' (https://reddit.com/user/${user.name})`);
return user.indexed.profile.image;
}
if (config.library.profile.image && !user.fallback && !user.deleted) {
const image = user.profile ? user.profile.image : user.image;
if (config.library.profile.avoidAvatar && new UrlPattern('http(s)\\://(www.)redditstatic.com/avatars/:id(.:ext)(?:query)').match(image)) {
console.log('\x1b[33m%s\x1b[0m', `Ignoring standard avatar profile image for '${user.name}'`);
console.log('\x1b[33m%s\x1b[0m', `Ignoring standard avatar profile image for '${user.name}' (https://reddit.com/user/${user.name})`);
return null;
}
@@ -25,45 +31,49 @@ async function saveProfileImage(user) {
});
try {
const stream = await fetchItem(image, 0, { permalink: `https://reddit.com/user/${user.name}` })
const stream = await fetchItem(image, 0, { permalink: `https://reddit.com/user/${user.name}` });
const targets = await save(filepath, stream);
return targets[0];
} catch (error) {
console.log('\x1b[33m%s\x1b[0m', `Could not save profile image for '${user.name}': ${error}`);
console.log('\x1b[33m%s\x1b[0m', `Could not save profile image for '${user.name}': ${error} (https://reddit.com/user/${user.name})`);
return null;
}
}
}
async function saveProfileDescription(user) {
async function saveProfileDescription(user, args) {
if (!args.redownloadProfile && user.indexed.profile.description) {
console.log('\x1b[33m%s\x1b[0m', `Ignoring already present profile description for '${user.name}' (https://reddit.com/user/${user.name})`);
return user.indexed.profile.description;
}
if (config.library.profile.description && !user.fallback && !user.deleted) {
if (user.profile && user.profile.description) {
const filepath = interpolate(config.library.profile.description, user);
const stream = textToStream(user.profile.description);
console.log(filepath);
try {
const targets = await save(filepath, stream);
return targets[0];
} catch (error) {
console.log('\x1b[33m%s\x1b[0m', `Could not save profile description for '${user.name}': ${error}`);
console.log('\x1b[33m%s\x1b[0m', `Could not save profile description for '${user.name}': ${error} (https://reddit.com/user/${user.name})`);
return null;
}
}
console.log('\x1b[33m%s\x1b[0m', `No profile description for '${user.name}'`);
console.log('\x1b[33m%s\x1b[0m', `No profile description for '${user.name}' (https://reddit.com/user/${user.name})`);
return null;
}
}
async function saveProfileDetails(user) {
const [image, description] = await Promise.all([saveProfileImage(user), saveProfileDescription(user)]);
async function saveProfileDetails(user, args) {
const [image, description] = await Promise.all([saveProfileImage(user, args), saveProfileDescription(user, args)]);
return { image, description };
}