Automating Social Media: Sending Tweets with Apache NiFi: Building A Smart Bot
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
Example Message Building
${'user_name':append( ' '):append( ${'location'} ):append(' '):append( ${'hashtags'} ):append(' ' ):append(${'msg'})}
Source:
https://github.com/tspannhw/nifi-puttwitter-processor
Download NAR to install in Apache NiFi lib directory and then restart:
https://github.com/tspannhw/nifi-puttwitter-processor/releases/tag/1.0

