Automating the IMPORTANT stuff with Python: Creating a #FreeBritney Vaccination Twitter Bot
Trawling through job descriptions for several hours a day, you soon get a feel for the current trends in programming. The popularity of Ruby has seemingly reached a plateau, with the demand for Python programmers as much as five times greater than for Rubyists. With all the time in the world, I had no excuse but to try my hand at learning it!
I was very surprised to discover that I had already “purchased” arguably the best Python beginners course out there: Al Sweigart’s “Automate the Boring Stuff with Python”. Who would have thought that stockpiling flash-sale Udemy courses would actually be fruitful? Not only was this course a great refresher for programming fundamentals, but it had me writing Python in no time. I was very happy to learn that Python is syntactically very similar to Ruby, but as with all online tutorials, I didn’t want to fall into the trap of entering “tutorial hell”. As I am very much a person who learns by doing, I decided to jump straight into a personal project.
I thought it might be fun to create a Twitter bot to tweet the UK vaccination rates once a day. This way I could utilise my newfound web scraping skills to obtain live information on the number of people who have received their first COVID vaccinations from the government website, and write a short Python script to tweet this every 24 hours. Simple enough.
But wait! This original concept didn’t sit well with me. Having recently watched the Framing Britney documentary, I knew that it was my moral duty to improve awareness of the #freebritney campaign wherever possible. Combining both ideas into one project, I set out to create a Britney Spears-themed vaccination bot — naturally!
Applying for a Twitter developer account allows access to their API, permitting users to programmatically engage with Twitter’s features. This seemingly easy task actually took a lot longer than I anticipated. I had a back and forth dialogue with Twitter that lasted about a week before I was approved. Having to describe in detail the intention of my project multiple times felt flat-out insulting! I don’t think Twitter fully appreciates the importance of spreading awareness about Britney Spears’ conservatorship! But fortunately, I was eventually granted my API keys and I could begin constructing my bot. I set up a new python project and stored the API keys as environment variables in a file called credentials.py. I also imported the Tweepy library, and made a test tweet to make sure that the API keys were working as intended:
I created a sample method to randomly select a youtube video of one of Britney’s greatest hits. The intention being that every time the bot tweeted, it would share a different video to keep the tweets varied. To achieve this I created a list of youtube URL strings and used the random.choice method to select one at random.
I created a separate method to construct the tweet, containing freshly scraped information and the random video.
To ensure that the bot tweets every 24 hours, I created a simple while loop, and set a sleep interval of 86400 seconds.
And in practice…
In terms of hosting my bot on Heroku, this video was an absolute life-saver. Essentially it involved adding the google chrome and chromedriver buildpacks to my project, and ensuring that the webdriver was set up as headless. All I needed to do was enable my bot.py file in the Heroku Dynos, and the app was up and running! Posting once a day… forever and ever