Salvator: The Saviour, When You Forget Birthdays
MIT License
Salvator is a bot which uses puppeteer to scrape the list of birthdays from facebook and sends them a personal message.
It also sends the user an email notification with the list of birthdays and their profile link.
Puppeteer uses a headless browser to navigate to facebook.com/login
and using the credentials from the .env
file,
logs in. There after it navigates to the birthday events page, scrapes the profile links for birthday people, forms
the messenger link using it and sends them a personalised message.
E.g Hey thealphadollar! Happy Birthday :D
, if user's first name is "thealphadollar".The message is randomized from a stored list.
To avoid sending multiple wishes, the program creates a json file with a timestamp and a list with the links already wished. When the file is read, if the timestamp matches the day, the redundancies are avoided.
Salvator can be installed using npm or source.
NOTE: puppeteer-salvator installs Chromium(102 MB) along with it. If you have already Chromium installed, use the --ignore-scripts
option.
npm install -g puppeteer-salvator
git clone https://www.github.com/thealphadollar/salvator
cd salvator
npm install
(this step installs all the dependencies)npm link
- to link the CLI tool so that it can be used globally in your system.Follow the steps given below in order to run the puppeteer-salvator tool globally in your terminal:
npm link
in your terminal. Creates a symlink in the global folder {prefix}/lib/node_modules/<package>
to your project.puppeteer-salvator
from anywhere(not necessarily the project folder).npm unlink
.NOTE: In case of any errors related to launching headless chrome, install google-chrome-stable. It'll resolve all the dependency issues.
Before running Salvator, the following environment variables must be set to avail full functionality of the client:
FB_ID=<your login email/phone for facebook>
FB_PASS=<your login password for facebook>
EMAIL=<notification will be sent from this address>
EMAIL_PASS=<password for the email>
MAILTO=<notification will be sent to this address>
RECOMMENDED : Create a .env
file in the salvator
folder with the above mentioned environment variables. Or you can do it using our CLI tool puppeteer-salvator by running the command puppeteer-salvator env
.
NOTE : You also need to enable access to less secure apps in your GMail account (the client only supports sending from gmail accounts).
After you are done with installation, Salvator can be launched manually using the commands :
puppeteer-salvator run
, if installed from npmnode index.js
, from source directoryHowever, it is recommended to add a cronjob to automatically launch the client at the desired time, favorable 00:05 hours. By this time facebook updates the list of birthdays and hence you could be among the first to wish.
For example, the below cronjob launches the script everyday at 00:05 (local system timezone is followed) and logs the sys.stdout into cron.log
5 0 * * * nodejs /path/to/salvator/index.js >> ~/cron.log
The cronjob can be added by executing the file cron.sh
Make sure the file has appropriate permissions and if not run the following
chmod a+x cron.sh
The CLI tool provides an interface to interact with the CLI tool and utilize its functionality. The following set of commands are provided by the tool:
puppeteer-salvator run
: Run the automated Birthday wish scriptpuppeteer-salvator env
: Load environment variables in .env file(fb_id, fb_pass, email, ..)puppeteer-salvator cron
: Add a cronjob delete a cronjob, view all cronjobspuppeteer-salvator bth
: Show all the birthdays for the currentContributions are welcome, please look in the issues tab to contribute.