blob: 2163555718df358d76838cf37ac67f8e84248f92 [file] [log] [blame]
/*
* SPDX-License-Identifier: MPL-2.0
* Copyright (c) 2022 Philipp Le <philipp@philipple.de>.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import nodemailer = require("nodemailer");
import { username, story_config } from "./config";
import {Client, StoryCollection, Sleeper} from "./utils"
async function send_email_report(stories: StoryCollection) {
if ((stories.length() > 0) && (story_config.email)) {
const smtp = nodemailer.createTransport({
host: story_config.email.smtp.host,
port: story_config.email.smtp.port,
auth: {
user: story_config.email.smtp.user,
pass: story_config.email.smtp.password
},
requireTLS: story_config.email.smtp.starttls
});
let body = "IG Stories have been downloaded\n\nDetails:\n";
stories.users.forEach((stories, user) => {
if (stories.length > 0) {
body += ` Fetched ${stories.length} items for ${user}`
}
});
await smtp.sendMail({
from: story_config.email.from,
to: story_config.email.to,
subject: story_config.email.subject,
text: body
});
smtp.close();
}
}
const client = new Client();
(async () => {
await client.login(username);
try {
const sleeper = new Sleeper();
let running = true;
process.on("SIGINT", (code) => {
running = false;
sleeper.cancel();
});
while (running) {
const stories = await client.get_stories(story_config.users);
await stories.download(story_config.destination);
await send_email_report(stories);
await sleeper.sleep_ms(story_config.sleep_sec * 1000);
}
} finally {
await client.logout();
}
})();