Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st. We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here. Need help or have questions? Drop us a line at [email protected]
Created on 05-07-201801:39 PM - edited 08-17-201907:33 AM
Automating Social Media: Sending Tweets with Apache NiFi: Building A Smart Bot
This is the new processor, PutTwitterProcessor, it will use Twitter4J to send tweets from a parameter you set.
This is an example tweet and my reply to it. It's a regular tweet.
This is the result of a run. I put the tweet id and datetime stamp in the result attribute.
Another example:
You need to create a Twitter application and obtain the Consumer Key, Consumer Secret, Access Token and Access secret. If you have a lat and long in your data you can send that. It's optional. The message takes expression language and lets you build a message.
JUnit Test of my Processor
JUnit Run Results
Most of the code is using the very easy to use Twitter4J library.
So what can I do with this? In my flow I am ingesting Tweets and with a streaming SQL query I can retweet ones where there's no existing retweet and the followers of the tweet are more than 1,000. I can also feed all this information to a Hive table and then run some machine learning on it to figure out other parameters to filter on for my bot.
This is a start. I put a scheduler on my PutTweet to only tweet every 10 minutes (600 seconds). Let's see how this goes.
SQL for QueryRecord
SELECT * FROM FLOWFILE WHERE CAST(retweet_count AS DOUBLE) <= 0 AND CAST(followers_count AS DOUBLE) > 1000
Quick tip: When you create a free Twitter app at apps.twitter.com, they will let you read and write but not a lot. Don't tweet every 5 minutes for hours or you will get that app's write ability blocked. Also be sure you are no reposting SPAM.