https://github.com/andygrunwald/trendinggithub
A twitter bot (@TrendingGithub) to tweet trending repositories and developers from GitHub
https://github.com/andygrunwald/trendinggithub
hacktoberfest
Last synced: over 1 year ago
JSON representation
A twitter bot (@TrendingGithub) to tweet trending repositories and developers from GitHub
- Host: GitHub
- URL: https://github.com/andygrunwald/trendinggithub
- Owner: andygrunwald
- License: mit
- Created: 2015-07-12T13:19:02.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2025-03-25T12:50:00.000Z (over 1 year ago)
- Last Synced: 2025-03-29T14:11:55.636Z (over 1 year ago)
- Topics: hacktoberfest
- Language: Go
- Homepage: https://twitter.com/TrendingGithub
- Size: 2.51 MB
- Stars: 113
- Watchers: 8
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# [@TrendingGithub](https://twitter.com/TrendingGithub)
[](https://travis-ci.org/andygrunwald/TrendingGithub)
[](https://godoc.org/github.com/andygrunwald/TrendingGithub)
[](https://goreportcard.com/report/github.com/andygrunwald/TrendingGithub)
A twitter bot (**[@TrendingGithub](https://twitter.com/TrendingGithub)**) to tweet [trending repositories](https://github.com/trending) and [developers](https://github.com/trending/developers) from GitHub.
> Follow us at **[@TrendingGithub](https://twitter.com/TrendingGithub)**.
[](https://twitter.com/TrendingGithub)
**Important:** This is no official GitHub or Twitter product.
## Features
* Tweets trending projects every 30 minutes
* Refreshes the configuration of twitters URL shortener t.co every 24 hours
* Blacklisting of repositories for 30 days (to avoid tweeting a project multiple times in a short timeframe)
* Maximum use of 140 chars per tweet to fill up with information
* Debug / development mode
* Multiple storage backends (currently [Redis](http://redis.io/) and in memory)
## Installation
1. Download the [latest release](https://github.com/andygrunwald/TrendingGithub/releases/latest)
2. Extract the archive (zip / tar.gz)
3. Start the bot via `./TrendingGithub -debug`
For linux this can look like:
```sh
curl -L https://github.com/andygrunwald/TrendingGithub/releases/download/v0.4.0/TrendingGithub-v0.4.0-linux-amd64.tar.gz -o TrendingGithub-v0.4.0-linux-amd64.tar.gz
tar xzvf TrendingGithub-v0.4.0-linux-amd64.tar.gz
cd TrendingGithub-v0.4.0-linux-amd64
./TrendingGithub -debug
```
## Usage
```
$ ./TrendingGithub -help
Usage of ./TrendingGithub:
-debug
Outputs the tweet instead of tweet it (useful for development). Env var: TRENDINGGITHUB_DEBUG
-expvar-port int
Port which will be used for the expvar TCP server. Env var: TRENDINGGITHUB_EXPVAR_PORT (default 8123)
-storage-auth string
Storage Auth (e.g. myPassword or ). Env var: TRENDINGGITHUB_STORAGE_AUTH
-storage-url string
Storage URL (e.g. 1.2.3.4:6379 or :6379). Env var: TRENDINGGITHUB_STORAGE_URL (default ":6379")
-twitter-access-token string
Twitter-API: Access token. Env var: TRENDINGGITHUB_TWITTER_ACCESS_TOKEN
-twitter-access-token-secret string
Twitter-API: Access token secret. Env var: TRENDINGGITHUB_TWITTER_ACCESS_TOKEN_SECRET
-twitter-conf-refresh-time duration
Twitter: Time interval to refresh the configuration of twitter (e.g. char length for short url). Env var: TRENDINGGITHUB_TWITTER_CONF_REFRESH_TIME (default 24h0m0s)
-twitter-consumer-key string
Twitter-API: Consumer key. Env var: TRENDINGGITHUB_TWITTER_CONSUMER_KEY
-twitter-consumer-secret string
Twitter-API: Consumer secret. Env var: TRENDINGGITHUB_TWITTER_CONSUMER_SECRET
-twitter-follow-new-person
Twitter: Follows a friend of one of our followers. Env var: TRENDINGGITHUB_TWITTER_FOLLOW_NEW_PERSON
-twitter-follow-new-person-time duration
Growth hack: Time interval to search for a new person to follow. Env var: TRENDINGGITHUB_TWITTER_FOLLOW_NEW_PERSON_TIME (default 45m0s)
-twitter-tweet-time duration
Twitter: Time interval to search a new project and tweet it. Env var: TRENDINGGITHUB_TWITTER_TWEET_TIME (default 30m0s)
-version
Outputs the version number and exit. Env var: TRENDINGGITHUB_VERSION
```
**Every parameter can be set by environment variable as well.**
**Twitter-API settings** (`twitter-access-token`, `twitter-access-token-secret`, `twitter-consumer-key` and `twitter-consumer-secret`) are necessary to use the Twitter API and to set up a tweet by your application.
You can get those settings by [Twitter's application management](https://apps.twitter.com/).
If you want to play around or develop this bot, use the `debug` setting.
It avoids using the Twitter API for tweet purposes and outputs the tweet on stdout.
The Redis url (`storage-url`)is the address of the Redis server in format *ip:port* (e.g. *192.168.0.12:6379*).
If your server is running on localhost you can use *:6379* as a shortcut.
`storage-auth` is the authentication string necessary for your Redis server if you use the [Authentication feature](http://redis.io/topics/security#authentication-feature).
## Storage backends
Why is a storage backend needed at all?
We are looking for popular projects in a regular interval.
To avoid tweeting a project or developer multiple times after another we add those records to a blacklist for a specific time.
At the moment there are two backends implemented:
* Memory (used in development)
* Redis (used in production)
## Growth hack
We implemented a small growth hack to get a few followers.
This hack was suggested by my colleague [@mre](https://github.com/mre).
It works like described:
* Get all followers from [@TrendingGithub](https://twitter.com/TrendingGithub)
* Choose a random one and get the followers of the choosen person
* Check if this person follows us already
* If yes, repeat
* If no, follow this person
This feature can be activated via the `twitter-follow-new-person` flag.
## Motivation
I love to discover new tools, new projects, new languages, new coding best practices, new exciting ideas and new people who share the same passion like me.
[I use twitter a lot](https://twitter.com/andygrunwald) and have little time to check [trending repositories](https://github.com/trending) and [developers](https://github.com/trending/developers) on a daily basis.
Why not combine both to save time and spread favorite projects and developers via tweets?
## License
This project is released under the terms of the [MIT license](http://en.wikipedia.org/wiki/MIT_License).