diff --git a/scrape.js b/scrape.js index 7689b4b..e8d8b6c 100644 --- a/scrape.js +++ b/scrape.js @@ -9,7 +9,7 @@ const get_upcoming_events = pathOr( 'data.page.upcoming_events'.split('.'), ); -const merge_edges = unionWith(eqBy(prop('id'))); +const merge_edges = unionWith(eqBy(prop('event_id'))); const load_page = async (page, event_page) => { try { @@ -43,6 +43,31 @@ const event_ids = pathOr('', ['event_ids'], argv) .filter((str) => str.length !== 0) .map((event_id) => `https://www.facebook.com/events/${event_id}`); +const get_city_name = (event) => + pathOr('', 'event_place.city.contextual_name'.split('.'), event); + +const get_event_host = (event) => + pathOr('', 'event_place.contextual_name'.split('.'), event); + +const edge_to_node = (edge) => edge.node; + +const map_event = (edge) => { + const event = edge.node; + const ticket_url = pathOr('', ['event_buy_ticket_url'], event); + const city = get_city_name(event); + const host = get_event_host(event); + return { + date: event.time_range, + name: event.name, + event_id: event.id, + ticket_url, + location: { + host: host, + location: city, + }, + }; +}; + (async () => { const browser = await puppeteer.launch({ headless: true, @@ -54,9 +79,10 @@ const event_ids = pathOr('', ['event_ids'], argv) for (let page_id of page_ids) { const page = await browser.newPage(); const data = await load_page(page, page_id); - const edges = data.edges.map((edge) => edge.node); + const edges = data.edges.map(map_event); events = merge_edges(edges, events); } + console.log(JSON.stringify(events)); process.exit(); })();