Bot that retrieves listings from Baltimore animal shelters and tweets photos and profile links to eligible pets
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 5 commits ahead, 2 commits behind Ryan-J-Smith:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

CutePetsNYC @CutePetsNYC

This is a bot that retrieves listings from New York City animal shelters and tweets photos and profile links to eligible pets.

Forked from [CutePetsBmore][]. Inspired by previous work by CutePetsDenver and CutePetsAustin.

The python script assumes that available animals are posted on the Petango service.


On twitter:

  1. Create the twitter account that will be used to post tweets
  2. Log into this new account and navigate to
  3. Create a new app with permission to post
  4. Generate credentials (consumer keys and access tokens)

In code:

  1. Configure by adding the keys generated by twitter
  2. Install dependencies pip install -r requirements.txt
  3. Modify to include desired shelters from Petango (see below)
  4. Tweet a singe pet listing: python

Schedule regular tweeting with crontab (Linux):

  1. From the command line, edit the crontab file: crontab -e
  2. Schedule the script to run every hour using a line similar to: 0 * * * * /usr/bin/python /path/to/ >> /path/to/log.log) 2>&1


Extension to other shelters

The scrapes the Petango page listing to get the list of shelters dependent on the ZIPCODE and DISTANCE_IN_MILES variables, both of which must be integers typecasted as strings. Shelters may be manually determined and set as SHELTER_IDS if the bool SCRAPE_IDS is set to False.

The retrieves a list of animals from each each of the shelters found by then tweets an animal at random from this list. As a result, modifying this script to access animals from other shelters is as simple as modifying this dictionary.

Avoidance of duplicate tweets

The script attempts to avoid reposting tweets about the same animals. This is done by tracking recent tweets in a buffer file created by the script. The size of the buffer file can be adjusted by changing the value of the NUM_RECENT_TWEETS in

Addtional notes:

  • I intended this to run on a Raspberry Pi running Raspbian. The python script posts a new tweet each time it is called. Regularly scheduled posting is handled by cron.