Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ahmetb/goodbye

Repository files navigation

Goodbye

Goodbye is a Go application, when someone unfollows you on Twitter, it will Direct Message you their Twitter handle.

At its core, it's a program that downloads your twitter follower list in certain intervals, and compares it with the previous list to find out who has unfollowed you.

It has the following execution modes:

  • -daemon: Process continously runs and fetches the followers every 5 minutes (or specified $GOODBYE_POLLING_INTERVAL). Doesn't need extra storage to store followers list (stores in-memory).

  • -http-addr: Process listens on specified port and checks follower list on each request to GET /goodbye. Needs extra storage (currently a GCS bucket) to store follower list. (Suitable for serverless environments)

  • -run-once: Process runs once and exits. Needs extra storage (currently a GCS bucket) to store follower list. (Suitable for cronjobs.)

Setup

First, you will need a config.json file containing Twitter API credentials.

Create a Twitter application on https://dev.twitter.com and access tokens for the application. Save these and pass as environment variables to the application:

export CONSUMER_KEY=[...] \
CONSUMER_SECRET=[...] \
ACCESS_TOKEN=[...] \
ACCESS_TOKEN_SECRET=[...]

./goodbye -daemon

You can compile the application with Go compiler, or use the Dockerfile to build a container image.

Run with Docker

Clone this repo on a Linux server with docker installed and build the Docker image in the repository root directory:

docker build -t goodbye .

Then run the container and give it the arguments it needs.

docker run -d --restart=always \
-e CONSUMER_KEY=[...] \
-e CONSUMER_SECRET=[...] \
-e ACCESS_TOKEN=[...] \
-e ACCESS_TOKEN_SECRET=[...] \
--name=goodbye-agent \
goodbye -daemon

Check if it is running fine: docker logs -f goodbye-agent.

Set up follower ID storage (for -run-once and -http-addr modes)

The -daemon mode stores the follower IDs in memory, however other modes need external storage (currently only Google Cloud Storage is supported) to store the follower IDs.

  1. Create a new Google Cloud Storage bucket to store follower IDs:

    BUCKET_NAME=pick-a-name
    gsutil mb gs://$BUCKET_NAME
  2. Upload an empty file named ids to GCS bucket

    touch ids
    gsutil cp ./ids gs://$BUCKET_NAME/ids

Use this gs://my_bucket/ids value as the -followers-file argument.

Demo

Author

Copyright (c) 2013-2019, Ahmet Alp Balkan

Made in Bellevue,WA and Seattle, WA with love.

About

Notify yourself when someone unfollows you on Twitter

Topics

Resources

Readme

License

Apache-2.0 license

Stars

Watchers

Forks

Packages

Contributors