代码之家  ›  专栏  ›  技术社区  ›  Moisei

Twitter4j:如何从状态获取twitURL?

  •  8
  • Moisei  · 技术社区  · 12 年前

    我在Windows上使用twitter4j-3.0.5。

    当新状态到达StatusListener时。 onStatus() 方法,我想打印出它的URL,但我找不到任何合适的方法。地位 getURLEntities() 总是空的,即使我查看传递给客户端的json,url字段也不是空的,并且包含有效的url。 我只是不知道如何从java中获得这个值。

    请告知。

    2 回复  |  直到 12 年前
        1
  •  24
  •   Jason Pather    12 年前

    这个 getURLEntities() 方法返回推文本身内容中的任何URL,而不是URL 属于 推特。

    幸运的是,推特的URL格式如下:

    https://twitter.com/[screen name of user]/status/[id of status]

    因此,您可以使用以下代码获取状态的URL:

    Status status;
    String url= "https://twitter.com/" + status.getUser().getScreenName() 
        + "/status/" + status.getId();
    System.out.println(url);
    
        2
  •  1
  •   SkyWalker    8 年前

    URL可以通过两种方式公开。

    • 提供推特链接

    • 给出在推特上发布的网站链接。

    示例:

    package com.twitter.example;
    
    import java.util.List;
    
    import twitter4j.Status;
    import twitter4j.Twitter;
    import twitter4j.TwitterException;
    import twitter4j.TwitterFactory;
    import twitter4j.URLEntity;
    import twitter4j.conf.ConfigurationBuilder;
    
    public class TwitterApplication {
        public static void main(String[] args) throws TwitterException {
            ConfigurationBuilder cf = new ConfigurationBuilder();
            cf.setOAuthConsumerKey("OAUTH_CONSUMER_KEY")
                    .setOAuthConsumerSecret("OAUTH_CONSUMER_KEY_SECRET")
                    .setOAuthAccessToken("OAUTH_ACCESS_TOKEN")
                    .setOAuthAccessTokenSecret("OAUTH_ACCESS_TOKEN_SECRET");
    
            TwitterFactory tf = new TwitterFactory(cf.build());
            Twitter twitter = tf.getInstance();
    
            // get username and status
            List<Status> statusList = twitter.getHomeTimeline();
    
            int i = 0;
            for (Status status : statusList) {
                i++;
                String url = "https://twitter.com/" + status.getUser().getScreenName() + "/status/" + status.getId();
                System.out.println("Twitter URL:"+url);
    
                URLEntity[] urls = status.getURLEntities();
                for(URLEntity urlEntity : urls) {
                    url = urlEntity.getURL();
                    System.out.println("Website link URL in the tweet: "+url);
                }
                if (i == 1)
                    break;
            }
        }
    }
    

    输出:

    推特URL: https://twitter.com/CulturalGM/status/966308069884952577

    推文中的网站链接URL: https://websitelink