diff --git a/src/scrape-event.js b/src/scrape-event.js index 8083f02..74c93d6 100644 --- a/src/scrape-event.js +++ b/src/scrape-event.js @@ -1,4 +1,9 @@ -const { parse_args, sleep } = require('./logic'); +const { + parse_args, + sleep, + read_previous_events, + write_events, +} = require('./logic'); const { get_event_details } = require('./facebook-event.js'); const { get_page_events } = require('./facebook-page-events.js'); @@ -8,14 +13,20 @@ const { omit } = require('ramda'); const options = parse_args(process.argv.slice(2)); (async () => { + const previous_events = await read_previous_events(options.events); const page_events = await get_page_events(options); let events = []; for (const event of page_events) { - sleep(2); - const event_details = await get_event_details(event.id); - events.push({ ...event, ...event_details }); + const index = previous_events.findIndex(({ id }) => event.id === id); + if (index === -1) { + sleep(2); + const event_details = await get_event_details(event.id); + events.push({ ...event, ...event_details }); + } else { + events.push(previous_events[index]); + } } const filterAwayFields = omit([ @@ -47,5 +58,16 @@ const options = parse_args(process.argv.slice(2)); events = events.map(filterAwayFields); - console.log(JSON.stringify(events)); + if (options.output === null) { + console.log(JSON.stringify(events)); + process.exit(); + } + + try { + await write_events(options.output, events); + process.exit(); + } catch (e) { + console.error(e); + process.exit(1); + } })();