We built this blog in Pelican, adding this in pelicanconf.py adds an RSS feed:
FEED_RSS = 'feeds/all.rss.xml'
And voila, after pushing this change we have our RSS feed.
No need to re-invent the wheel, PyPI (Python Package Index) has so much good stuff, feedparser is just what we need. It can take both a remote as well as local xml file, so you don't even need requests.
This single line parses the feed into a comprehensive data structure:
feed = feedparser.parse(xml)
Which you can then easily consume:
for article in feed['entries']: # ... filtering yield article
The only thing I had to add was some timestamp conversations/calculations to go x days back (the returned feed data has a convenient time.struct_time field).
I left this for sendmail which accepts a mailheader, see here. So this is my weekly cronjob:
# html email 0 7 * * 6 cat pybites_header <(python3 /path/to/pybites_digest/digest.py 7 1) | sendmail -t # text version for copy+paste into social media (no need to cat header file) 10 7 * * 6 python3 /path/to/pybites_digest/digest.py 7 | mailx -s "Weekly PyBites digest (txt ed)" <email>
First arg is "days back" = 7 = one week / 2nd arg = html True
You might need to do a export PYTHONPATH=/path/to/python3.x/site-packages if you installed Python3 in your $HOME on a shared hosting provider.
The '<()' syntax is a nice way in Unix to join in output from a subprocess.
If you want to receive these weekly digests please subscribe to our blog or join our FB group.
Do you want to get 250+ concise and applicable Python tips in an ebook that will cost you less than 10 bucks (future updates included), check it out here.
"The discussions are succinct yet thorough enough to give you a solid grasp of the particular problem. I just wish I would have had this book when I started learning Python." - Daniel H
"Bob and Julian are the masters at aggregating these small snippets of code that can really make certain aspects of coding easier." - Jesse B
"This is now my favourite first Python go-to reference." - Anthony L
"Do you ever go on one of those cooking websites for a recipe and have to scroll for what feels like an eternity to get to the ingredients and the 4 steps the recipe actually takes? This is the opposite of that." - Sergio S