Objective :
Using Open source Twitter API
How to collect data from Social media - Twitter about IOT.
Twitter account :
Create a new twitter account and just follow all the IOT
related groups.
So that you will get tweets from your circle and also
official company groups related to IOT.
Twitter
Application :
Twitter API can only
connect to twitter application. Only twitter application will get the twitter
message and serve to Twitter API. Our Java code
get the data through twitter application .
https://apps.twitter.com/app/new is used to create a new
twitter application.
|
Application User
Credentials to connect with java application
Once we created the twitter application we can get the
following user credentials.
Using the following URL
you get User credentials
URL : https://apps.twitter.com/app/<applicationId>/keys
Consumer
Key (API Key) : <API KEY>
Consumer
Secret (API Secret) : <API Password>
Access
Token : <ACCESS
TOKEN>
Access
Token Secret : <ACCESS
TOKEN SECRET>
|
All these values will be generated by Twitter it self. You
just need to use that values.
Note : For security purpose you can generate API
key whenever you like.
Java Application - Twitter API
|
In Java
code we are going to create a java application, which will use the generated
twitter credentials . It will gather all the text from twitter related to given
keyword like IOT. This java application
collect all the text from twitter and store it in a text file every one hour
once. So Every one hour there will be new text file which will be used to store
current twitter text related to IOT.
Create a maven project and add maven dependencies
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tamil</groupId>
<artifactId>DataCollection</artifactId>
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-async</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-media-support</artifactId>
<version>4.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.tamil.TwitteFileWriter</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!--
bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
|
Maven assembly plugin to create a self executable jar file
pointing to TwitteFileWriter.java
Create a java class TwitteFileWriter.java in package com.tamil as mentioned in maven
pom.xml file.
TwitterFileWritter.java
package com.tamil;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import
java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import twitter4j.DirectMessage;
import twitter4j.FilterQuery;
import twitter4j.StallWarning;
import twitter4j.Status;
import
twitter4j.StatusDeletionNotice;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.User;
import twitter4j.UserList;
import
twitter4j.UserStreamListener;
import
twitter4j.conf.ConfigurationBuilder;
public class TwitteFileWriter {
private static StringBuffer buffer = new StringBuffer();
private static final UserStreamListener listener = new UserStreamListener() {
public void onException(Exception arg0) { }
public void onTrackLimitationNotice(int arg0) { }
public void onStatus(Status status) { writeTwtteFromStatus(status); }
public void onStallWarning(StallWarning arg0) { }
public void onScrubGeo(long arg0, long arg1) { }
public void
onDeletionNotice(StatusDeletionNotice arg0) { }
public void onUserProfileUpdate(User arg0) { }
public void onUserListUpdate(User arg0, UserList arg1) { }
public void onUserListUnsubscription(User arg0, User arg1, UserList arg2) { }
public void onUserListSubscription(User arg0, User arg1, UserList arg2) { }
public void onUserListMemberDeletion(User arg0, User arg1, UserList arg2) { }
public void onUserListMemberAddition(User arg0, User arg1, UserList arg2) { }
public void onUserListDeletion(User arg0, UserList arg1) { }
public void onUserListCreation(User arg0, UserList arg1) { }
public void onUnfollow(User arg0, User arg1) { }
public void onUnfavorite(User arg0, User arg1,Status arg2) {}
public void onUnblock(User arg0, User arg1) { }
public void onFriendList(long[] arg0) { }
public void onFollow(User arg0, User arg1) { }
public void onFavorite(User arg0, User arg1, Status arg2) {}
public void onDirectMessage(DirectMessage arg0) { }
public void onDeletionNotice(long arg0, long arg1) { }
public void onBlock(User arg0, User arg1) { }
};
private static final void writeTwtteFromStatus(Status status) {
String tweet = status.getUser().getScreenName() + "\t"
+
status.getUser().getDescription()
+ "\t"
+
status.getUser().getId()
+ "\t"
+
status.getUser().getLang()+
"\t"
+
status.getUser().getLocation()
+ "\t"
+
status.getUser().getName()
+ "\t"
+
status.getUser().getTimeZone()
+ "\t"
+
status.getText()+ "\t"
+
status.getSource()
+ "\t"
+
status.getCreatedAt();
buffer.append("\n" + tweet);
}
public static void main(String[] args) {
Timer timer = new Timer();
RemindTask task = new RemindTask();
String[] keywords = { "Internet Of Things", "InternetOfThings","internetofthings", "IOT", "iot" };
ConfigurationBuilder
conBuilder = new ConfigurationBuilder();
conBuilder.setOAuthConsumerKey(<API KEY>);
conBuilder.setOAuthConsumerSecret(<API Password>);
conBuilder.setOAuthAccessToken(<ACCESS TOKEN>);
conBuilder.setOAuthAccessTokenSecret(<ACCESS TOKEN SECRET> );
conBuilder.setJSONStoreEnabled(true);
conBuilder.setPrettyDebugEnabled(true);
// conBuilder.setHttpProxyHost("PROXY HOST");//
To Set Proxy server url [optional ]
// conBuilder.setHttpProxyPort(PROXY PORT); // To Set Proxy server port [optional ]
conBuilder.setIncludeEntitiesEnabled(true);
TwitterStream twitterStream = new TwitterStreamFactory(
conBuilder.build()).getInstance();
twitterStream.addListener(listener);
twitterStream.user();
FilterQuery query = new FilterQuery().track(keywords);
twitterStream.filter(query);
timer.schedule(task, 5 * 1000, 5 * 1000);
}
static class RemindTask extends TimerTask {
private SimpleDateFormat format = new SimpleDateFormat("yyyyMMMddHH");
private boolean flagToStop = false;
private long counter = 0;
private void checkStatusToStop() {
try {
File
newFile = new File("./Stop.txt");
if (newFile.exists()) {
flagToStop = true;
}
System.out.print(":" + counter);
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
if (!flagToStop) {
counter++;
writerFile();
buffer.setLength(0);
checkStatusToStop();
} else {
System.out.println("Going to End");
System.exit(0);
}
}
private void writerFile() {
try {
String
fileName = format.format(new Date());
File
newFile = new File("./" + fileName + ".txt");
if (!newFile.exists())
newFile.createNewFile();
if (newFile.exists()) {
FileWriter
writter = new FileWriter(newFile, true);
BufferedWriter
bufferWritter = new BufferedWriter(writter);
bufferWritter.write(buffer.toString());
bufferWritter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
|
Create Self executable jar file using maven build command
mvn clean compile install assembly:assembly
|
Now you can run the application using
java -jar DataCollection.jar
|
Application will generate txt file with the following format
<YYYY><MON><DD><HH>.txt file
Example :
2014Oct1913.txt
here year 2014 , Oct month 19th at 1 pm
generated file which contain twitter data collected between 1 pm to 2 am.
I was searching for the right blog to get Hadoop updates to know what is happening in the Big Data industry. I found your blog where I can get a lot of new updates in storing and retrieving the data concept. Thank you admin I would like to share this blog with my friends also. Keep updating, waiting for your next article.
ReplyDeleteRegards
Hadoop Training Chennai | Hadoop Training in Chennai
Awesome blog. I would thank the blog admin for sharing this info with us.
ReplyDeleteTOEFL Classes in Porur
TOEFL Coaching in Porur
TOEFL Classes in Adyar
TOEFL Class in Thiruvanmiyur
TOEFL Coaching in Anna Nagar
TOEFL Classes in Anna Nagar
TOEFL Coaching in T-Nagar
TOEFL Training in T-Nagar
This is really too useful and have more ideas and keep sharing many techniques. Eagerly waiting for your new blog keep doing more.
ReplyDeleteCCNA Course in Chennai
CCNA Training in Chennai
Cloud Computing Courses in Chennai
AWS Training in Chennai
Data Science Course in Chennai
CCNA Training in Porur
CCNA Training in Adyar
It’s always so sweet and also full of a lot of fun for me personally and my office colleagues to search your blog a minimum of thrice in a week to see the new guidance you have got.
ReplyDeleteBest PHP Training Institute in Chennai|PHP Course in chennai
Best .Net Training Institute in Chennai
Oracle DBA Training in Chennai
RPA Training in Chennai
UIpath Training in Chennai
awesome post presented by you..your writing style is fabulous and keep update with your blogs.
ReplyDeleteBig Data Hadoop Training In Chennai | Big Data Hadoop Training In anna nagar | Big Data Hadoop Training In omr | Big Data Hadoop Training In porur | Big Data Hadoop Training In tambaram | Big Data Hadoop Training In velachery
perde modelleri
ReplyDeletesms onay
TÜRK TELEKOM MOBİL ÖDEME BOZDURMA
Nft Nasil Alinir
ankara evden eve nakliyat
trafik sigortası
Dedektor
web sitesi kurma
aşk romanları
smm panel
ReplyDeletesmm panel
iş ilanları
İnstagram takipçi satın al
HIRDAVATÇI BURADA
Www.beyazesyateknikservisi.com.tr
Servis
tiktok jeton hilesi