AutoTweeting WebLinks (Python)

I will hold my hands up here and admit, I am not great at advertising my website on social media. When posting a new blog post it auto generates a link on some social media sites for me, but I rarely ever repost links especially for my older blog posts. Today I am hoping to fix this issue using my Raspberry Pi, Python and Twitter.

History

A while back I created a twitter bot using Python and automated it on a Raspberry Pi so that it would auto reply to tweets and tweet sensor readings. Then I used that Pi in a different project, and my Twitter bot (geektechstuff_a) went into hibernation for over a year.

At the beginning of the UK’s Covid-19 #stayathome I started to look at projects on my site and projects I had noted down to do (since December 2019 this list keeps growing). One of which was to bring the geektechstuff_a Twitter bot back, but in a new way. My amazing wife had the idea of using the bot to post links to the geektechstuff.com website, so I have taken a break from learning C++ and decide to implement her idea.

The Project

The files and code for this project (minus my Twitter keys) are available at: https://github.com/geektechdude/python_geektechstuff_link_tweeter

This project is made up of three files:

  • main.py

The Python file with the code to open links.csv, randomly choose a line and then Tweet it.

  • links.csv

A CSV file containing a line for each link I want to share. These lines are made up of a description, URL and a hashtag I want use on the tweet.

  • auth.py

My auth / secret keys for Twitter. These should be kept secret, so I place them in a separate file and have main.py import them.

Main.py Code

#!/usr/bin/python3

# geektechstuff Python Link Tweeter


# libraries to import

import random

from twython import Twython


# auth file contains all the Twitter details for account

from auth import (

    consumer_key,

    consumer_secret,

    access_token,

    access_token_secret

)


# setting up Twitter

twitter = Twython(

    consumer_key,

    consumer_secret,

    access_token,

    access_token_secret

)


def random_line(filename):

     lines = open(filename).read().splitlines()

     return random.choice(lines)


def tweet_to_send():

     tweet_to_send = random_line('path_to_file')

     tweet_to_send_str = str(tweet_to_send)

     twitter.update_status(status=tweet_to_send_str)

     return()


tweet_to_send()
geektechstuff_twitter_tweet_links
Tweeting links with Python3

Links.csv

I wont post all of links.csv (it’ll fill most of this post with links), instead here is a screen shot:

links.csv contents
links.csv contents

Scheduling Tweets With Cron

I am using cron on my Raspberry Pi to schedule the tweets, so cron will run the program daily. To access cron use the command:

crontab -e

Cron expects the minute, hour, date of month, month, day of week and then the command to run.

0 9 * * * python3 /path_to_program/program.py

This will use Python3 to run program.py daily at 9am. I’ve not decided what time is best for the tweets yet and may tweak this.

Example cron line
Example cron line

 

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.