MM-Tweeter
From MidsouthMakers - Memphis Area Hackerpace
Contents |
Conditional Auto Tweeter written in PHP
- Using OAuth Library by Matt Harris: https://github.com/themattharris/tmhOAuth
- Running via CLI PHP
- Design an application to use Matt Harris' library as a function to auto tweet events based on existing conditions
Project Status
- Functional
Software License
- TBD - Source Currently Unavailable
Usage
- Build a HTTP request with the following variables
- source (Your Source - predetermined)
- secret (Your secret - predetermined)
- post_date (When the tweet should be posted + 5 minutes)
- content (this is what you want tweeted)
- Example:
http://api.midsouthmakers.org/mm-tweeter/?source=samplesource&secret=samplesecret&post_date=2012-05-07%2011:46:10&content=Sample Tweet
- $_POST or $_GET methods should work in the same manner.
- Execute the request
- Currently debugging information is turned on.
- Please report any errors.
Current Functionality
- Using MidsouthMakersDev Twitter account
- Able to be run from the command line to post static tweets.
- Able to be run from a url to post static tweets.
- Checks pending table and checks if their post date < current time
- Cron running every 30 minutes to post any pending
- If there is an error with a tweet it will try to tweet it $attempts times (Default 3)
- If it is unable to be tweeted (Error Code != 200) after $attempts times it is deleted from pending and added to history with the last error code
To Be Done
- Perhaps ability for source to query their tweets based on history/pending?
-
Need to ensure response code making it back to userSolved By: Impossible since we're always tweeting into the future. Refer to ability of source to query their history -
Need to handle adding to pending table -
Need to handle adding to history -
Need to handle Remove from pending -
Cron local system to test for pending tweets -
Need to provide fallback if no $post_date supplied. -
Need to add warning if $content > 160 characters OR Blank.Solved by: they're using a twitter api, they should self limit <= 160 characters -
Need ensure $content is not NULL in addpending()Solved by: checking if $content = before addpending() -
Log post attempts? Check error codes so we're not hammering away at twitterSolved by: $attempts checking: default 3
Goals
- Take input from multiple sources
- Reliably validate source of all incoming data
- Use access list or secret hash to prevent abuse
Database Schema
- Pending Table
CREATE TABLE IF NOT EXISTS `pending` ( `id` int(6) NOT NULL AUTO_INCREMENT, `content` varchar(160) NOT NULL, `post_date` datetime NOT NULL, `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `source` varchar(255) NOT NULL, `attempts` int(1) NOT NULL, `last_error_code` int(3) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
- History Table
CREATE TABLE IF NOT EXISTS `history` ( `id` int(6) NOT NULL AUTO_INCREMENT, `content` varchar(160) NOT NULL, `post_date` date NOT NULL, `added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `source` varchar(255) NOT NULL, `response_code` int(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
- Secrets Table
CREATE TABLE IF NOT EXISTS `secrets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `source` varchar(255) NOT NULL, `secret` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;