28
Linked Data & Semantic Web Technology Development of Twitter Applications Part 4. Timeline and Tweet Dr. Myungjin Lee

Development of Twitter Application #4 - Timeline and Tweet

Embed Size (px)

DESCRIPTION

This series of slides describes how to develop a twitter application. This slide describes how to implement Twitter applications related to collecting a set of tweets using Twitter4J.

Citation preview

Page 1: Development of Twitter Application #4 - Timeline and Tweet

Linked Data &Semantic WebTechnology

Development ofTwitter Applications

Part 4. Timeline and Tweet

Dr. Myungjin Lee

Page 2: Development of Twitter Application #4 - Timeline and Tweet

2Linked Data & Semantic Web Technology

Timeline

• Home Timeline– a long stream showing all Tweets from those you have

chosen to follow on Twitterhome timeline

Page 3: Development of Twitter Application #4 - Timeline and Tweet

3Linked Data & Semantic Web Technology

Timeline

user timeline

mentions timeline

retweets of me

Page 4: Development of Twitter Application #4 - Timeline and Tweet

4Linked Data & Semantic Web Technology

REST API related to Timeline

• Timelines– Timelines are collections of Tweets, ordered with the

most recent first.

Resource Description

GETstatuses/mentions_timeline

Returns the 20 most recent mentions (tweets containing a users's @screen_name) for the authenticating user

GETstatuses/user_timeline

Returns a collection of the most recent Tweets posted by the user indicated by the screen_name or user_id parameters

GETstatuses/home_timeline

Returns a collection of the most recent Tweets and retweets posted by the authenticating user and the users they follow

GETstatuses/retweets_of_me

Returns the most recent tweets authored by the authenticating user that have been retweeted by others

Page 5: Development of Twitter Application #4 - Timeline and Tweet

5Linked Data & Semantic Web Technology

Responses of Timeline REST API1. [

2. {

3. "created_at": "Mon Mar 25 08:47:46 +0000 2013",

4. "id": 316109141032714240,

5. "id_str": "316109141032714240",

6. "text": "RT @wonsoonpark: 이 협동조합국제회의에는 ...",

7. "source": "web",

8. "truncated": false,

9. "in_reply_to_status_id": null,

10. "in_reply_to_status_id_str": null,

11. "in_reply_to_user_id": null,

12. "in_reply_to_user_id_str": null,

13. "in_reply_to_screen_name": null,

14. "user": {

15. "id": 92297124,

16. "id_str": "92297124"

17. },

18. "geo": null,

19. "coordinates": null,

20. "place": null,

21. "contributors": null,

22. "retweeted_status": {

23. ... skip ...

24. },

25. "retweet_count": 27,

26. "favorite_count": 0,

27. "entities": {

28. "hashtags": [],

29. "urls": [],

30. "user_mentions": [

31. {

32. "screen_name": "wonsoonpark",

33. "name": "박원순",

34. "id": 76295962,

35. "id_str": "76295962",

36. "indices": [

37. 3,

38. 15

39. ]

40. }

41. ]

42. },

43. "favorited": false,

44. "retweeted": false,

45. "lang": "ko"

46. }

47. ]

Page 6: Development of Twitter Application #4 - Timeline and Tweet

6Linked Data & Semantic Web Technology

Tweets Primary Field GuideField Type Description

coordinates CoordinatesNullable. Represents the geographic location of this Tweet as reported by the user or client application.

created_at String UTC time when this Tweet was created.

entities EntitiesEntities which have been parsed out of the text of the Tweet.

favorite_count IntegerNullable. Indicates approximately how many times this Tweet has been "favorited" by Twitter users.

id Int64 The integer representation of the unique identifier for this Tweet.

id_str String The string representation of the unique identifier for this Tweet.

in_reply_to_screen_name String Nullable. If the represented Tweet is a reply, this field will contain the screen name of the original Tweet's author.

in_reply_to_status_id_str String Nullable. If the represented Tweet is a reply, this field will contain the string representation of the original Tweet's ID.

in_reply_to_user_id_str String Nullable. If the represented Tweet is a reply, this field will contain the string representation of the original Tweet's author ID.

place PlacesNullable. When present, indicates that the tweet is associated a Place.

retweet_count Int Number of times this Tweet has been retweeted.

text String The actual UTF-8 text of the status update.

user Users The user who posted this Tweet.

Page 7: Development of Twitter Application #4 - Timeline and Tweet

7Linked Data & Semantic Web Technology

Twitter4J Classes for Timeline API• TimelinesResources Interface

– interface to support REST API related to timeline– Methods

• ResponseList<Status> getHomeTimeline() • ResponseList<Status> getHomeTimeline(Paging paging)• ResponseList<Status> getMentionsTimeline()• ResponseList<Status> getMentionsTimeline(Paging paging)• ResponseList<Status> getRetweetsOfMe()• ResponseList<Status> getRetweetsOfMe(Paging paging) • ResponseList<Status> getUserTimeline() • ResponseList<Status> getUserTimeline(Paging paging)• ResponseList<Status> getUserTimeline(long userId)• ResponseList<Status> getUserTimeline(java.lang.String screenName)

• Paging Class– controls pagination– Constructors

• Paging(int page, int count, long sinceId, long maxId)

• ResponseList<T> Interface– list of Twitter Response

• Status Interface– a data interface representing one single status of a user– Methods

• java.util.Date getCreatedAt() • long getId() • Status getRetweetedStatus() • java.lang.String getText() • User getUser()

Page 8: Development of Twitter Application #4 - Timeline and Tweet

8Linked Data & Semantic Web Technology

GET statuses/home_timeline

• Resource URL– https://api.twitter.com/1.1/statuses/home_timeline.json

• Parameters

• Other Information– Requests per rate limit window: 15/user– Authentication: Requires user context– Response Object: Tweets– API Version: v1.1

countoptional

Specifies the number of records to retrieve. Must be less than or equal to 200. Defaults to 20.

since_idoptional

Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID available.

max_idoptional

Returns results with an ID less than (that is, older than) or equal to the specified ID.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will in-clude a user object including only the status authors numerical ID. Omit this parameter to receive the complete user object.

exclude_repliesoptional

This parameter will prevent replies from appearing in the returned timeline. Using exclude_replies with the count parameter will mean you will receive up-to count tweets — this is because the count param-eter retrieves that many tweets before filtering out retweets and replies.

contributor_detailsoptional

This parameter enhances the contributors element of the status re-sponse to include the screen_name of the contributor. By default only the user_id of the contributor is included.

include_entitiesoptional

The entities node will be disincluded when set to false.

Page 9: Development of Twitter Application #4 - Timeline and Tweet

9Linked Data & Semantic Web Technology

Getting Home Timeline1. import java.util.List;

2. import twitter4j.Twitter;

3. import twitter4j.TwitterException;

4. import twitter4j.TwitterFactory;

5. import twitter4j.Status;

6. public class TwitterTimeline {

7. Twitter twitter = null;

8. public TwitterTimeline() {

9. this.twitter = TwitterFactory.getSingleton();

10.this.twitter.setOAuthConsumer(TwitterAccessToken.consumerKey,

11. TwitterAccessToken.consumer-Secret);

12.this.twitter.setOAuthAccessToken(TwitterAccessToken.loadAccessToken());

13. }

14. public static void main(String args[]) throws TwitterException {

15. TwitterTimeline tt = new TwitterTimeline();

16. List<Status> tweets = tt.twitter.getHomeTimeline();

17. for (int i = 0; i < tweets.size(); i++) {

18. Status tweet = tweets.get(i);

19. System.out.println("tweet: " + tweet.getText());

20. }

21. }

22. }

Page 10: Development of Twitter Application #4 - Timeline and Tweet

10Linked Data & Semantic Web Technology

Setting Pagination

• Constructors of Paging Class– Paging() – Paging(int page) – Paging(int page, int count) – Paging(int page, int count, long sinceId) – Paging(int page, int count, long sinceId, long maxId) – Paging(int page, long sinceId) – Paging(long sinceId)

1. public static void main(String args[]) throws TwitterException {

2. TwitterTimeline tt = new TwitterTimeline();

3. List<Status> tweets = tt.twitter.getHomeTimeline(new Paging(1, 5));

4. for (int i = 0; i < tweets.size(); i++) {

5. Status tweet = tweets.get(i);

6. System.out.println("tweet: " + tweet.get-Text());

7. }

8. }

9. private List<Status> getHomeTimeline() throws TwitterException {

10. return this.twitter.getHomeTimeline();

11. }

Page 11: Development of Twitter Application #4 - Timeline and Tweet

11Linked Data & Semantic Web Technology

Getting Status of Tweets1. public static void main(String args[]) throws TwitterException {

2. TwitterTimeline tt = new TwitterTimeline();

3. List<Status> tweets = tt.twitter.getHomeTimeline();

4. for (int i = 0; i < tweets.size(); i++) {

5. Status tweet = tweets.get(i);

6. System.out.println(i + " tweet:");

7. System.out.println("\tcreated at: " + tweet-.getCreatedAt());

8. System.out.println("\tid: " + tweet.getId());

9. System.out.println("\tretweet count: " + tweet.getRetweetCount());

10. System.out.println("\ttext: " + tweet.get-Text());

11. System.out.println("\tuser: " + tweet.ge-tUser());

12. }

13. }

Page 12: Development of Twitter Application #4 - Timeline and Tweet

12Linked Data & Semantic Web Technology

GET statuses/user_timeline• Resource URL

– https://api.twitter.com/1.1/statuses/user_timeline.json

• Parameters

• Other Information– Requests per rate limit window: 180/user, 300/app– Authentication: Required– Response Object: Tweets– API Version: v1.1

user_idoptional The ID of the user for whom to return results for.

screen_nameoptional The screen name of the user for whom to return results for.

countoptional

Specifies the number of records to retrieve. Must be less than or equal to 200. Defaults to 20.

since_idoptional

Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID avail-able.

max_idoptional Returns results with an ID less than (that is, older than) or equal to the specified ID.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will include a user object including only the status authors numerical ID. Omit this parameter to receive the com-plete user object.

exclude_repliesoptional

This parameter will prevent replies from appearing in the returned timeline. Using ex-clude_replies with the count parameter will mean you will receive up-to count tweets — this is because the count parameter retrieves that many tweets before filtering out retweets and replies.

contributor_detailsoptional

This parameter enhances the contributors element of the status response to include the screen_name of the contributor. By default only the user_id of the contributor is included.

include_rtsoptional

When set to false, the timeline will strip any native retweets (though they will still count toward both the maximal length of the timeline and the slice selected by the count parame-ter). Note: If you're using the trim_user parameter in conjunction with include_rts, the retweets will still contain a full user object.

Page 13: Development of Twitter Application #4 - Timeline and Tweet

13Linked Data & Semantic Web Technology

Getting User Timeline1. public static void main(String args[]) throws TwitterException {

2. TwitterTimeline tt = new TwitterTimeline();

3. List<Status> tweets = tt.twitter.getUserTimeline(92297124);

4. // List<Status> tweets = tt.twitter.getUserTimeline("linked_data");

5. for (int i = 0; i < tweets.size(); i++) {

6. Status tweet = tweets.get(i);

7. System.out.println("text: " + tweet.get-Text());

8. }

9. }

Page 14: Development of Twitter Application #4 - Timeline and Tweet

14Linked Data & Semantic Web Technology

GET statuses/mentions_timeline

• Resource URL– https://api.twitter.com/1.1/statuses/mentions_timeline.json

• Parameters

• Other Information– Requests per rate limit window: 15/user– Authentication: Requires user context– Response Object: Tweets– API Version: v1.1

countoptional

Specifies the number of records to retrieve. Must be less than or equal to 200. Defaults to 20.

since_idoptional

Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID available.

max_idoptional

Returns results with an ID less than (that is, older than) or equal to the specified ID.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will in-clude a user object including only the status authors numerical ID. Omit this parameter to receive the complete user object.

contributor_detailsoptional

This parameter enhances the contributors element of the status re-sponse to include the screen_name of the contributor. By default only the user_id of the contributor is included.

include_entitiesoptional

The entities node will be disincluded when set to false.

Page 15: Development of Twitter Application #4 - Timeline and Tweet

15Linked Data & Semantic Web Technology

GET statuses/retweet_of_me

• Resource URL– https://api.twitter.com/1.1/statuses/retweets_of_me.json

• Parameters

• Other Information– Requests per rate limit window: 15/user– Authentication: Requires user context– Response Object: Tweets– API Version: v1.1

countoptional

Specifies the number of records to retrieve. Must be less than or equal to 200. Defaults to 20.

since_idoptional

Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID available.

max_idoptional

Returns results with an ID less than (that is, older than) or equal to the specified ID.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will in-clude a user object including only the status authors numerical ID. Omit this parameter to receive the complete user object.

include_entitiesoptional

The entities node will be disincluded when set to false.

include_user_entitiesoptional

The user entities node will be disincluded when set to false

Page 16: Development of Twitter Application #4 - Timeline and Tweet

16Linked Data & Semantic Web Technology

Mentions Timeline and Retweets1. public static void main(String args[]) throws TwitterException {

2. TwitterTimeline tt = new TwitterTimeline();

3. // List<Status> tweets = tt.twitter.getMentionsTimeline();

4. List<Status> tweets = tt.twitter.getRetweetsOfMe();

5. for (int i = 0; i < tweets.size(); i++) {

6. Status tweet = tweets.get(i);

7. System.out.println("text: " + tweet.getText());

8. }

9. }

Page 17: Development of Twitter Application #4 - Timeline and Tweet

17Linked Data & Semantic Web Technology

Tweets

• What is tweets?– the atomic building blocks of Twitter– 140-character status updates with additional associ-

ated metadata– for a variety of reasons about a multitude of topics

tweet

retweets count

retweet

Page 18: Development of Twitter Application #4 - Timeline and Tweet

18Linked Data & Semantic Web Technology

REST API related to Tweets

Resource Description

GETstatuses/retweets/:id Returns up to 100 of the first retweets of a given tweet.

GETstatuses/show/:id

Returns a single Tweet, specified by the id parameter. The Tweet's author will also be embedded within the tweet. See Embeddable Timelines, Embeddable Tweets, and GET statuses/oembed for tools to render Tweets according to Display Requirements.

Page 19: Development of Twitter Application #4 - Timeline and Tweet

19Linked Data & Semantic Web Technology

Twitter4J Classes for Tweet

• TweetsResources Interface– Methods

• ResponseList<Status> getRetweets(long statusId)• Status retweetStatus(long statusId)• Status showStatus(long id)

Page 20: Development of Twitter Application #4 - Timeline and Tweet

20Linked Data & Semantic Web Technology

GET statuses/show/:id

• Resource URL– https://api.twitter.com/1.1/statuses/show.json

• Parameters

• Other Information– Requests per rate limit window: 180/user, 180/app– Authentication: Required– Response Object: Tweets– API Version: v1.1

idrequired

The numerical ID of the desired Tweet.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will in-clude a user object including only the status authors numerical ID. Omit this parameter to receive the complete user object.

include_my_retweetoptional

When set to either true, t or 1, any Tweets returned that have been retweeted by the authenticating user will include an additional current_user_retweet node, containing the ID of the source status for the retweet.

include_entitiesoptional

The entities node will be disincluded when set to false.

Page 21: Development of Twitter Application #4 - Timeline and Tweet

21Linked Data & Semantic Web Technology

Getting the Tweet1. import java.util.List;

2. import twitter4j.Status;

3. import twitter4j.Twitter;

4. import twitter4j.TwitterException;

5. import twitter4j.TwitterFactory;

6. public class TwitterTweet {

7. Twitter twitter = null;

8. public TwitterTweet() {

9. this.twitter = TwitterFactory.getSingleton();

10.this.twitter.setOAuthConsumer(TwitterAccessToken.consumerKey,

11. TwitterAccessToken.consumer-Secret);

12.this.twitter.setOAuthAccessToken(TwitterAccessToken.loadAccessToken());

13. }

14. public static void main(String args[]) throws TwitterException {

15. TwitterTweet tt = new TwitterTweet();

16. Status status = tt.twitter.showStatus(Long.parseLong("319908547800481792"));

17. System.out.println("text: " + status.getText());

18. }

19. }

Page 22: Development of Twitter Application #4 - Timeline and Tweet

22Linked Data & Semantic Web Technology

GET statuses/retweets/:id

• Resource URL– https://api.twitter.com/1.1/statuses/retweets/:id.json

• Parameters

• Other Information– Requests per rate limit window: 15/user, 60/app– Authentication: Required– Response Object: Tweets– API Version: v1.1

idrequired

The numerical ID of the desired status.

countoptional

Specifies the number of records to retrieve. Must be less than or equal to 100.

trim_useroptional

When set to either true, t or 1, each tweet returned in a timeline will include a user object including only the status authors numerical ID. Omit this pa-rameter to receive the complete user object.

Page 23: Development of Twitter Application #4 - Timeline and Tweet

23Linked Data & Semantic Web Technology

Getting Retweets1. import java.util.List;

2. import twitter4j.Status;

3. import twitter4j.Twitter;

4. import twitter4j.TwitterException;

5. import twitter4j.TwitterFactory;

6. public class TwitterTweet {

7. Twitter twitter = null;

8. public TwitterTweet() {

9. this.twitter = TwitterFactory.getSingleton();

10.this.twitter.setOAuthConsumer(TwitterAccessToken.consumerKey,

11. TwitterAccessToken.consumer-Secret);

12.this.twitter.setOAuthAccessToken(TwitterAccessToken.loadAccessToken());

13. }

14. public static void main(String args[]) throws TwitterException {

15. TwitterTweet tt = new TwitterTweet();

16. List<Status> list = tt.twitter.getRetweets(Long

17..parseLong("319908547800481792"));

18. for (int i = 0; i < list.size(); i++) {

19. Status status = list.get(i);

20. System.out.println("retweet user: " + status.ge-tUser().getName());

21. }

22. }

23. }

Page 24: Development of Twitter Application #4 - Timeline and Tweet

24Linked Data & Semantic Web Technology

Tweet’s Entities

• Entities– to provide metadata and additional contextual infor-

mation about content posted on Twitter

• Types of Entity– hashtags

• Represents hashtags which have been parsed out of the Tweet text

– media• Represents media elements uploaded with the Tweet

– urls• Represents URLs included in the text of a Tweet or

within textual fields of a user object

– user mentions• Represents other Twitter users mentioned in the text of

the Tweet

Page 25: Development of Twitter Application #4 - Timeline and Tweet

25Linked Data & Semantic Web Technology

Entities’ Field Guide

• Hashtag

• Media

Field Type Description

indices Array of IntAn array of integers indicating the offsets within the Tweet text where the hashtag begins and ends.

text String Name of the hashtag, minus the leading '#' character.

Field Type Description

display_url String URL of the media to display to clients.

expanded_url StringAn expanded version of display_url. Links to the media display page.

id Int64 ID of the media expressed as a 64-bit integer.

id_str String ID of the media expressed as a string.

indices Array of Int

An array of integers indicating the offsets within the Tweet text where the URL begins and ends.

media_url String An http:// URL pointing directly to the uploaded media file.

media_url_https StringAn https:// URL pointing directly to the uploaded media file, for embedding on https pages.

sizes Object An object showing available sizes for the media file.

source_status_id Int64For Tweets containing media that was originally associated with a different tweet, this ID points to the original Tweet.

source_status_id_str Int64For Tweets containing media that was originally associated with a different tweet, this string-based ID points to the original Tweet.

type String Type of uploaded media.

url String Wrapped URL for the media link.

Page 26: Development of Twitter Application #4 - Timeline and Tweet

26Linked Data & Semantic Web Technology

Entities’ Field Guide

• URL

• User Mention

Field Type Description

display_url String Version of the URL to display to clients.

expanded_url String Expanded version of display_url.

indices Array of IntAn array of integers representing offsets within the Tweet text where the URL begins and ends.

url StringWrapped URL, corresponding to the value embedded directly into the raw Tweet text, and the values for the indices parameter.

Field Type Description

id Int64 ID of the mentioned user, as an integer.

id_str String If of the mentioned user, as a string.

indices Array of Int

An array of integers representing the offsets within the Tweet text where the user reference begins and ends.

name String Display name of the referenced user.

screen_name String Screen name of the referenced user.

Page 27: Development of Twitter Application #4 - Timeline and Tweet

27Linked Data & Semantic Web Technology

Twitter4J Classes for Entities• Status Interface

– Methods• HashtagEntity[] getHashtagEntities() • MediaEntity[] getMediaEntities()• URLEntity[] getURLEntities()• UserMentionEntity[] getUserMentionEntities()

• HashtagEntity Interface– A data interface representing one single Hashtag entity– Methods

• String getText()

• MediaEntity Interface– Methods

• long getId()• String getMediaURL()• String getType()

• URLEntity Interface – A data interface representing one single URL entity.– Methods

• String getDisplayURL()• String getExpandedURL()• String getURL()

• UserMentionEntity Interface – A data interface representing one single user mention entity.– Methods

• long getId()• String getScreenName()

Page 28: Development of Twitter Application #4 - Timeline and Tweet

28Linked Data & Semantic Web Technology

Getting Entities1. public static void main(String args[]) throws TwitterException {

2. TwitterTweet tt = new TwitterTweet();

3. List<Status> tweets = tt.twitter.getHomeTimeline();

4. for (int i = 0; i < tweets.size(); i++) {

5. Status tweet = tweets.get(i);

6. System.out.println("tweet id: " + tweet.getId());

7. if(tweet.getHashtagEntities().length != 0) {

8. System.out.println("\thastags:");

9. HashtagEntity[] hes = tweet.getHash-tagEntities();

10. for(int j = 0; j < hes.length; j++) {

11. System.out.println("\t\t" + hes[j].getText());

12. }

13. }

14. if(tweet.getMediaEntities().length != 0) {

15. System.out.println("\tmedia:");

16. MediaEntity[] mes = tweet.getMedi-aEntities();

17. for(int j = 0; j < mes.length; j++) {

18. System.out.println("\t\t" + mes[j].getType() + ", " + mes[j].getMediaURL());

19. }

20. }

21. if(tweet.getURLEntities().length != 0) {

22. System.out.println("\tURLs:");

23. URLEntity[] urls = tweet.getURLEn-tities();

24. for(int j = 0; j < urls.length; j++) {

25. System.out.println("\t\t" + urls[j].getExpandedURL());

26. }

27. }

28. if(tweet.getUserMentionEntities().length != 0) {

29. System.out.println("\tmentions:");

30. UserMentionEntity[] umes = tweet.ge-tUserMentionEntities();

31. for(int j = 0; j < umes.length; j++) {

32. System.out.println("\t\t" + umes[j].getScreenName());

33. }

34. }

35. }

36. }