#!/bin/bash function usage { cat <<- EOF ./scrape.sh [options] Scrape facebook event pages. This script will always return an JSON array. OPTIONS: -e --event Facebook event id. Scrape a single Facebook event. -h --help -? print usage --events List of Facebook event ids. See examples for format. -p --page Facebook page id. Scrape all events of a specific facebook page. --pages List of Facebook page ids. See examples for format. NOTE: Events and pages needs to be public. Private events or pages are not yet supported. EXAMPLES: EOF } event_ids=""; pages_ids=""; function scrape_event { local event_id; event_id="$1" if [ "" == "${event_ids}" ]; then event_ids="${event_id}" else event_ids="${event_ids},${event_id}" fi } function scrape_page { local page_id; page_id="$1" if [ "" == "${pages_ids}" ]; then pages_ids="${page_id}" else pages_ids="${pages_ids},${page_id}" fi } function parse_args { if [ "$1" = "" ]; then echo "" fi while [[ $# -gt 0 ]]; do key="$1" case $key in -e|--event|--events) shift scrape_event "$1" ;; -p|--page|--pages) shift scrape_page "$1" ;; *) usage exit 1 ;; esac shift done } function install_node_dependencies { if ! [ -d node_modules ]; then yarn fi } function check_dependencies { local missing; missing=false; if [ ! $(command -v node) ]; then echo "Dependency missing. Please install node.js and make it available to the path as 'node'." missing=true fi if [ ! $(command -v yarn) ]; then echo "Dependency missing. Please install yarn and make it available to the path as 'yarn'." missing=true fi install_node_dependencies if [ "${missing}" != "false" ]; then exit 1; fi return 0; } function scrape { exec node scrape.js --event_ids="${event_ids}" --page_ids="${pages_ids}" } check_dependencies \ && parse_args "$@" \ && scrape