Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mobeigi/fb2cal
Fetch Facebook Birthdays events and create an ICS file for use with calendar apps
https://github.com/mobeigi/fb2cal
birthday birthday-reminder birthdays calendar events export facebook facebook-graph-api google-calendar google-drive ics python
Last synced: 6 days ago
JSON representation
Fetch Facebook Birthdays events and create an ICS file for use with calendar apps
- Host: GitHub
- URL: https://github.com/mobeigi/fb2cal
- Owner: mobeigi
- License: gpl-3.0
- Created: 2019-07-09T11:09:59.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-08-21T16:43:53.000Z (3 months ago)
- Last Synced: 2024-10-14T12:17:11.674Z (22 days ago)
- Topics: birthday, birthday-reminder, birthdays, calendar, events, export, facebook, facebook-graph-api, google-calendar, google-drive, ics, python
- Language: Python
- Homepage: https://go.mobeigi.com/fb2cal
- Size: 237 KB
- Stars: 424
- Watchers: 13
- Forks: 73
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
fb2cal
Facebook Birthday Events to ICS file converter
## Description
Around 20 June 2019, Facebook removed their Facebook Birthday ICS export option.
This change was unannounced and no reason was ever released.fb2cal is a tool which restores this functionality.
It works by calling endpoints that power the https://www.facebook.com/events/birthdays/ page.
After gathering a list of birthdays for all the users friends for a full year, it creates a ICS calendar file. This ICS file can then be imported into third party tools (such as Google Calendar or Apple Calendar).## Caveats
* Facebook accounts secured with 2FA are currently not supported (see [#9](../../issues/9))
* During Facebook authentication, a security checkpoint may trigger that will force you to change your Facebook password.## Requirements
* Facebook account
* Python 3.9+
* pipenv
* Scheduler tool to automatically run script periodically (optional)## PyPi Project
https://pypi.org/project/fb2cal/## Instructions
### PyPi (Recommended)
1. In an empty folder of your choice, set up pipenv environment
`pipenv install`
2. Install `fb2cal` module:
`pipenv run pip install fb2cal`
3. Download [config/config-template.ini](https://raw.githubusercontent.com/mobeigi/fb2cal/main/config/config-template.ini) file and store it in `config/config.ini`.
4. Update the `config/config.ini` file and enter your Facebook email and password (no quotes).
5. Run the `fb2cal` module
`pipenv run python -m fb2cal`
6. Check the output folder (`out` by default) for the created `birthdays.ics` file### Local
1. Clone repo
`git clone [email protected]:mobeigi/fb2cal.git`
2. Copy `config/config-template.ini` to `config/config.ini`.
3. Update the `config/config.ini` file and enter your Facebook email and password (no quotes).
4. Set up pipenv environment
`pipenv install`
5. Run the `fb2cal` module
`pipenv run python -m fb2cal`
6. Check the output folder (`out` by default) for the created `birthdays.ics` file## Configuration
This tool can be configured by editing the `config/config.ini` configuration file.Section Key Valid Values Description AUTHfb_emailYour Facebook login email fb_passwordYour Facebook login password FILESYSTEMsave_to_fileTrue, FalseIf tool should save ICS file to the local file system ics_file_pathPath to save ICS file to (including file name) LOGGINGlevelDEBUG, INFO, WARNING, ERROR, CRITICALLogging level to use. Default: INFO
## Scheduled Task Frequency
It is recommended to run the script **once every 24 hours** to update the ICS file to ensure it is synchronized with the latest Facebook changes (due to friend addition/removal) and to respect the privacy of users who decide to hide their birthday later on. Facebook originally recommended polling for birthday updates **once every 12 hours** based on the `X-PUBLISHED-TTL:PT12H` header included in their ICS files.## Testing
1. Set up pipenv environment
`pipenv install`
2. Install the `fb2cal` module
`pipenv run python -m pip install .`
3. Run the `unittests` module on the `tests` folder
`pipenv run python -m unittest discover tests`## Troubleshooting
If you encounter any issues, please open the `config/config.ini` configuration file and set the `LOGGING` `level` to `DEBUG` (it is `INFO` by default). Include these logs when asking for help.## Contributions
Contributions are always welcome!
Just make a [pull request](../../pulls).## Licence
GNU General Public License v3.0