Building A Smart Twitter Bot with Apache NiFi
This article gives a simple tutorial on how to build your first Twitter bot with ease using Apache NiFi. Read on to find out more.
Join the DZone community and get the full member experience.
Join For FreeLet's start with a few images.
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 date-time 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 is no existing retweet, and the followers of the tweet are more than 1,000. I can also feed all of 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'})}
Download NAR to Install in Apache NiFi lib Directory and Then Restart:
https://github.com/tspannhw/nifi-puttwitter-processor/releases/tag/1.0
Opinions expressed by DZone contributors are their own.
Trending
-
Top 10 Pillars of Zero Trust Networks
-
How To Integrate the Stripe Payment Gateway Into a React Native Application
-
Deploying Smart Contract on Ethereum Blockchain
-
Unlocking Game Development: A Review of ‘Learning C# By Developing Games With Unity'
Comments