• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Development of Twitter Application #4 - Timeline and Tweet
 

Development of Twitter Application #4 - Timeline and Tweet

on

  • 511 views

This series of slides describes how to develop a twitter application.

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.

Statistics

Views

Total Views
511
Views on SlideShare
511
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Development of Twitter Application #4 - Timeline and Tweet Development of Twitter Application #4 - Timeline and Tweet Document Transcript

    • Linked Data &Semantic WebTechnologyDevelopment ofTwitter ApplicationsPart 4. Timeline and TweetDr. Myungjin Lee
    • Linked Data & Semantic Web TechnologyTimeline• Home Timeline– a long stream showing all Tweets from those you havechosen to follow on Twitterhome timeline2
    • Linked Data & Semantic Web TechnologyTimelineuser timelinementions timelineretweets of me3
    • Linked Data & Semantic Web TechnologyREST API related to Timeline• Timelines– Timelines are collections of Tweets, ordered with themost recent first.Resource DescriptionGETstatuses/mentions_timelineReturns the 20 most recent mentions (tweetscontaining a userss @screen_name) for theauthenticating userGETstatuses/user_timelineReturns a collection of the most recent Tweetsposted by the user indicated by the screen_name oruser_id parametersGETstatuses/home_timelineReturns a collection of the most recent Tweets andretweets posted by the authenticating user and theusers they followGETstatuses/retweets_of_meReturns the most recent tweets authored by theauthenticating user that have been retweeted byothers4
    • Linked Data & Semantic Web TechnologyResponses 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. 1539. ]40. }41. ]42. },43. "favorited": false,44. "retweeted": false,45. "lang": "ko"46. }47. ]5
    • Linked Data & Semantic Web TechnologyTweets Primary Field Guide6Field Type Descriptioncoordinates CoordinatesNullable. Represents the geographic location of thisTweet 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 theTweet.favorite_count IntegerNullable. Indicates approximately how many times thisTweet has been "favorited" by Twitter users.id Int64The integer representation of the unique identifier for thisTweet.id_str StringThe string representation of the unique identifier for thisTweet.in_reply_to_screen_name StringNullable. If the represented Tweet is a reply, this field willcontain the screen name of the original Tweets author.in_reply_to_status_id_str StringNullable. If the represented Tweet is a reply, this field willcontain the string representation of the original TweetsID.in_reply_to_user_id_str StringNullable. If the represented Tweet is a reply, this field willcontain the string representation of the original Tweetsauthor ID.place PlacesNullable. When present, indicates that the tweet isassociated 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.
    • Linked Data & Semantic Web TechnologyTwitter4J 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()7
    • Linked Data & Semantic Web TechnologyGET 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.1countoptionalSpecifies the number of records to retrieve. Must be less than or equalto 200. Defaults to 20.since_idoptionalReturns results with an ID greater than (that is, more recent than) thespecified ID. There are limits to the number of Tweets which can beaccessed through the API. If the limit of Tweets has occured since thesince_id, the since_id will be forced to the oldest ID available.max_idoptionalReturns results with an ID less than (that is, older than) or equal to thespecified ID.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline willinclude a user object including only the status authors numerical ID.Omit this parameter to receive the complete user object.exclude_repliesoptionalThis parameter will prevent replies from appearing in the returnedtimeline. Using exclude_replies with the count parameter will meanyou will receive up-to count tweets — this is because the countparameter retrieves that many tweets before filtering out retweets andreplies.contributor_detailsoptionalThis parameter enhances the contributors element of the statusresponse to include the screen_name of the contributor. By defaultonly the user_id of the contributor is included.include_entitiesoptionalThe entities node will be disincluded when set to false.8
    • Linked Data & Semantic Web TechnologyGetting 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.consumerSecret);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. }9
    • Linked Data & Semantic Web TechnologySetting 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.getText());7. }8. }9. private List<Status> getHomeTimeline() throws TwitterException {10. return this.twitter.getHomeTimeline();11. }10
    • Linked Data & Semantic Web TechnologyGetting 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.getText());11. System.out.println("tuser: " + tweet.getUser());12. }13. }11
    • Linked Data & Semantic Web TechnologyGET 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.1user_idoptionalThe ID of the user for whom to return results for.screen_nameoptionalThe screen name of the user for whom to return results for.countoptionalSpecifies the number of records to retrieve. Must be less than or equal to 200. Defaults to20.since_idoptionalReturns results with an ID greater than (that is, more recent than) the specified ID. Thereare limits to the number of Tweets which can be accessed through the API. If the limit ofTweets has occured since the since_id, the since_id will be forced to the oldest IDavailable.max_idoptionalReturns results with an ID less than (that is, older than) or equal to the specified ID.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline will include a user objectincluding only the status authors numerical ID. Omit this parameter to receive thecomplete user object.exclude_repliesoptionalThis parameter will prevent replies from appearing in the returned timeline. Usingexclude_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 retweetsand replies.contributor_detailsoptionalThis parameter enhances the contributors element of the status response to include thescreen_name of the contributor. By default only the user_id of the contributor is included.include_rtsoptionalWhen set to false, the timeline will strip any native retweets (though they will still counttoward both the maximal length of the timeline and the slice selected by the countparameter). Note: If youre using the trim_user parameter in conjunction with include_rts,the retweets will still contain a full user object.12
    • Linked Data & Semantic Web TechnologyGetting 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.getText());8. }9. }13
    • Linked Data & Semantic Web TechnologyGET 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.1countoptionalSpecifies the number of records to retrieve. Must be less than or equalto 200. Defaults to 20.since_idoptionalReturns results with an ID greater than (that is, more recent than) thespecified ID. There are limits to the number of Tweets which can beaccessed through the API. If the limit of Tweets has occured since thesince_id, the since_id will be forced to the oldest ID available.max_idoptionalReturns results with an ID less than (that is, older than) or equal to thespecified ID.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline willinclude a user object including only the status authors numerical ID.Omit this parameter to receive the complete user object.contributor_detailsoptionalThis parameter enhances the contributors element of the statusresponse to include the screen_name of the contributor. By defaultonly the user_id of the contributor is included.include_entitiesoptionalThe entities node will be disincluded when set to false.14
    • Linked Data & Semantic Web TechnologyGET 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.1countoptionalSpecifies the number of records to retrieve. Must be less than or equalto 200. Defaults to 20.since_idoptionalReturns results with an ID greater than (that is, more recent than) thespecified ID. There are limits to the number of Tweets which can beaccessed through the API. If the limit of Tweets has occured since thesince_id, the since_id will be forced to the oldest ID available.max_idoptionalReturns results with an ID less than (that is, older than) or equal to thespecified ID.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline willinclude a user object including only the status authors numerical ID.Omit this parameter to receive the complete user object.include_entitiesoptionalThe entities node will be disincluded when set to false.include_user_entitiesoptionalThe user entities node will be disincluded when set to false15
    • Linked Data & Semantic Web TechnologyMentions 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. }16
    • Linked Data & Semantic Web TechnologyTweets• What is tweets?– the atomic building blocks of Twitter– 140-character status updates with additionalassociated metadata– for a variety of reasons about a multitude of topicstweetretweets countretweet17
    • Linked Data & Semantic Web TechnologyREST API related to Tweets18Resource DescriptionGETstatuses/retweets/:idReturns up to 100 of the first retweets of a given tweet.GETstatuses/show/:idReturns a single Tweet, specified by the id parameter. TheTweets author will also be embedded within the tweet. SeeEmbeddable Timelines, Embeddable Tweets, and GETstatuses/oembed for tools to render Tweets according toDisplay Requirements.
    • Linked Data & Semantic Web TechnologyTwitter4J Classes for Tweet• TweetsResources Interface– Methods• ResponseList<Status> getRetweets(long statusId)• Status retweetStatus(long statusId)• Status showStatus(long id)19
    • Linked Data & Semantic Web TechnologyGET 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.1idrequiredThe numerical ID of the desired Tweet.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline willinclude a user object including only the status authors numerical ID.Omit this parameter to receive the complete user object.include_my_retweetoptionalWhen set to either true, t or 1, any Tweets returned that have beenretweeted by the authenticating user will include an additionalcurrent_user_retweet node, containing the ID of the source status forthe retweet.include_entitiesoptionalThe entities node will be disincluded when set to false.20
    • Linked Data & Semantic Web TechnologyGetting 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.consumerSecret);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. }21
    • Linked Data & Semantic Web TechnologyGET 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.1idrequiredThe numerical ID of the desired status.countoptionalSpecifies the number of records to retrieve. Must be less than or equal to100.trim_useroptionalWhen set to either true, t or 1, each tweet returned in a timeline will includea user object including only the status authors numerical ID. Omit thisparameter to receive the complete user object.22
    • Linked Data & Semantic Web TechnologyGetting 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.consumerSecret);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(Long17. .parseLong("319908547800481792"));18. for (int i = 0; i < list.size(); i++) {19. Status status = list.get(i);20. System.out.println("retweet user: " + status.getUser().getName());21. }22. }23. }23
    • Linked Data & Semantic Web TechnologyTweet’s Entities• Entities– to provide metadata and additional contextualinformation about content posted on Twitter• Types of Entity– hashtags• Represents hashtags which have been parsed out of theTweet text– media• Represents media elements uploaded with the Tweet– urls• Represents URLs included in the text of a Tweet orwithin textual fields of a user object– user mentions• Represents other Twitter users mentioned in the text ofthe Tweet24
    • Linked Data & Semantic Web TechnologyEntities’ Field Guide• Hashtag• Media25Field Type Descriptionindices Array of IntAn array of integers indicating the offsets within the Tweet text wherethe hashtag begins and ends.text String Name of the hashtag, minus the leading # character.Field Type Descriptiondisplay_url String URL of the media to display to clients.expanded_url StringAn expanded version of display_url. Links to the media displaypage.id Int64 ID of the media expressed as a 64-bit integer.id_str String ID of the media expressed as a string.indicesArray ofIntAn array of integers indicating the offsets within the Tweet textwhere 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, forembedding 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 adifferent tweet, this ID points to the original Tweet.source_status_id_str Int64For Tweets containing media that was originally associated with adifferent tweet, this string-based ID points to the original Tweet.type String Type of uploaded media.url String Wrapped URL for the media link.
    • Linked Data & Semantic Web TechnologyEntities’ Field Guide• URL• User Mention26Field Type Descriptiondisplay_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 theraw Tweet text, and the values for the indices parameter.Field Type Descriptionid Int64 ID of the mentioned user, as an integer.id_str String If of the mentioned user, as a string.indicesArray ofIntAn 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.
    • Linked Data & Semantic Web TechnologyTwitter4J 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()27
    • Linked Data & Semantic Web TechnologyGetting 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.getHashtagEntities();10. for(int j = 0; j < hes.length; j++) {11. System.out.println("tt" + hes[j].getText());12. }13. }14. if(tweet.getMediaEntities().length != 0) {15. System.out.println("tmedia:");16. MediaEntity[] mes = tweet.getMediaEntities();17. for(int j = 0; j < mes.length; j++) {18. System.out.println("tt" + mes[j].getType() + ", " + mes[j].getMediaURL());19. }20. }21. if(tweet.getURLEntities().length != 0) {22. System.out.println("tURLs:");23. URLEntity[] urls = tweet.getURLEntities();24. for(int j = 0; j < urls.length; j++) {25. System.out.println("tt" + urls[j].getExpandedURL());26. }27. }28. if(tweet.getUserMentionEntities().length != 0) {29. System.out.println("tmentions:");30. UserMentionEntity[] umes = tweet.getUserMentionEntities();31. for(int j = 0; j < umes.length; j++) {32. System.out.println("tt" + umes[j].getScreenName());33. }34. }35. }36. }28