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.