rss-discord-bot/README.md
2024-09-16 10:23:55 +10:00

50 lines
1.6 KiB
Markdown

# Discord cardiCast webhook
This is a simple webhook to push new cardiCast episodes into the cardiCast Discord channel.
## install
1. Create and activate [virtual env](https://docs.python.org/3/library/venv.html)
2. Install requirements: `pip install -r requirements.txt`
3. Set up a cronjob (see below)
4. Test cronjob works
5. Relax
## How it works
We run this on the newcardigan wordpress server.
1. With a cron job we call `trigger.sh`
2. The shell script sets env values then calls `webhook.py`
4. The python script checks a custom RSS feed for new podcast episodes
5. If no new episode, end
6. If new episode,
1. save the guid to `latest_post.txt` for the next round of checking
2. use the values from the RSS feed
3. publish via a webhook to Discord
## env values
These are all set in `trigger.sh`, not in crontab, to keep things contained.
We need to include some secrets via environment values:
* the guild/server ID (`DISCORD_GUILD`)
* the secret token for the webhook (`DISCORD_TOKEN`)
* the ID of the `@cardiCast ping` role (`DISCORD_CARDICAST_PING`)
And because we run python in a virtual environment:
**venv** - we need to activate the venv using `source <path/to/venv>`
## Cron job command
```sh
*/18 * * * * cd /home/cardigan/rss-discord-bot && ./trigger.sh
```
## RSS feed
The rss feed is `https://newcardigan.org/category/cardiparties/?feed=featured_image_feed`.
This special `featured_image_feed` is a slightly modified RSS2 feed. The only thing it does differently is include the featured image in an `enclosure` so that we can pick it up directly from the feed. See the newcardigan WordPress theme for how this works.