Program for tweeting random lines from files hosted on a public GitHub repo.
I wanted an easy way to drip-feed my Miscellany
files into the ether, so wrote twitterer
to do just that.
Essentially you feed it paths to publicly accessible files on GitHub and it'll tweet a random line from them (one tweet per file) with a link to the line on GitHub. Optionally it can keep track of previous tweets to avoid sounding repetitive.
Note: source files must be in the default branch, but twitterer
will resolve
that branch to a commit before tweeting the link.
$ gem install tc-twitterer
twitterer
requires a configuration file to operate. An example is available on
GitHub,
or you can follow the guide below.
First you need to register a new application with Twitter.
Visit https://apps.twitter.com/app/new and follow the steps.
Once you've created the app, hit Keys and Access Tokens to get your... Keys and access tokens.
Config entries:
twitter_consumer_key = "012a3AbcBdefg4ChiDjklEmnF"
twitter_consumer_secret = "AaBCDEbFGcdHefIgJKhi0jLk1MNOlm2nPQoRS3pTqU4rsVtWuv"
On the Keys and Access Tokens page for your app, scroll down to Your Access Token and hit Create my access token to create your access token.
Config entries:
twitter_access_token = "012345678901234567-abAcBdeCDfEghFi0GHIJKjk9l1Lmnop"
twitter_access_token_secret = "a0AbcB1C2dDEFeGH7If3ghJK4Li15j678kMNlO9PQRmno"
Twitterer
can track its past tweets if you tell it where to store them, which
prevents it from repeating itself.
Config entry:
history_file = "/path/to/file"
Note: twitterer
will create the file, but it won't create any directories.
Note 2: history is stored in a CSV in the following format, which lets it double as a log.
timestamp,source,line
Finally you need to specify the locations of the files you want to tweet from.
The following conditions apply:
- Must be hosted on GitHub
- Must be publicly accessible
- Must be in the default branch
Paths are specified in the following format: username/repo/path/to/file.txt
Config entry:
source = [
"tomonocle/tc-twitterer/README.md",
"tomonocle/trello-list2card/README.md",
]
twitter_consumer_key = "012a3AbcBdefg4ChiDjklEmnF"
twitter_consumer_secret = "AaBCDEbFGcdHefIgJKhi0jLk1MNOlm2nPQoRS3pTqU4rsVtWuv"
twitter_access_token = "012345678901234567-abAcBdeCDfEghFi0GHIJKjk9l1Lmnop"
twitter_access_token_secret = "a0AbcB1C2dDEFeGH7If3ghJK4Li15j678kMNlO9PQRmno"
history_file = "./var/twitterer.history"
source = [
"tomonocle/tc-twitterer/README.md",
"tomonocle/trello-list2card/README.md",
]
$ twitterer -c config.toml
This will pull down each file in the source list, pick a suitable line then tweet it in the following format:
<first N characters of line> <url>
Where N
is defined as the maximum tweet length (which will forever be 140 chars) minus the maximum URL length
from t.co
(23 as of December 2017). 140-23 = 117
Log output goes to STDERR
.
Log level can be adjusted with -l [debug,info,warn,error,fatal]
(defaults to warn).
Dry-run (read-only, don't tweet) can be enabled with -d
. Note: you'll probably want to increase the log level with -l
for this to be useful.
Code | Meaning |
---|---|
0 | Success (wrote output, or nothing to do) |
1 | Failure. Something went wrong. Always accompanied by a FATAL log message. |