【问题标题】:Consuming and Filtering Tweets using Twitter4j-4.0.2使用 Twitter4j-4.0.2 消费和过滤推文
【发布时间】:2014-11-14 15:50:56
【问题描述】:

我正在尝试根据用户输入字符串解析推文文本获取推文,从推文中提取网络链接(忽略没有网络链接的推文)并解析它以在带有下一个按钮的 WebView 对话框中显示(因此当单击以移动到下一个 WebView 时(显示从推文解析的链接的下一个内容))。我得到了推文结果(没有过滤),我如何过滤它们并获取 URL,以便我可以为 WebView 解析它?

这是我在后台线程上运行的代码:

 @Override
            protected WebView doInBackground(String... strings) {
                //Get userInput
                String searchTerm = strings[0];
                //Initialize Twitter Connection
                ConfigurationBuilder builder = new ConfigurationBuilder();
                    builder.setDebugEnabled(true);
                    builder.setOAuthConsumerKey(sharedPreferences.getString(TwitterConstants.getPrefConsumerKey(), ""));
                    builder.setOAuthConsumerSecret(sharedPreferences.getString(TwitterConstants.getPrefConsumerSecret(), ""));
                AccessToken accessToken = new AccessToken(sharedPreferences.getString(TwitterConstants.getPrefAccessToken(), ""), sharedPreferences.getString(TwitterConstants.getPrefAccessTokenSecret(), ""));
                Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
                try {
                    //Query object
                    Query query = new Query(searchTerm);
                    //The number of tweets to return per page [max:100]
                    query.count(2);
                    //Return only the most recent results in the response
                    query.resultType(Query.ResultType.recent);
                    QueryResult result = twitter.search(query);
                    Log.e("Twitter QueryResult", result.toString());
                }catch(TwitterException e){
                    e.printStackTrace();
                }
                return null;
            }

【问题讨论】:

    标签: android twitter webview twitter4j


    【解决方案1】:

    好的,如果有人遇到同样的问题,这里是答案:

     @Override
            protected WebView doInBackground(String... strings) {
                //Get userInput
                String searchTerm = strings[0];
                //Initialize Twitter Connection
                ConfigurationBuilder builder = new ConfigurationBuilder();
                    builder.setDebugEnabled(true);
                    builder.setOAuthConsumerKey(sharedPreferences.getString(TwitterConstants.getPrefConsumerKey(), ""));
                    builder.setOAuthConsumerSecret(sharedPreferences.getString(TwitterConstants.getPrefConsumerSecret(), ""));
                AccessToken accessToken = new AccessToken(sharedPreferences.getString(TwitterConstants.getPrefAccessToken(), ""), sharedPreferences.getString(TwitterConstants.getPrefAccessTokenSecret(), ""));
               //Gets Twitter instance with default credentials
                Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
                try {
                    //Query object
                    Query query = new Query(searchTerm);
                    //The number of tweets to return per page [max:100]
                    query.count(2);
                    //Return only the most recent results in the response
                    query.resultType(Query.ResultType.recent);
                    //Get all results
                    QueryResult result = twitter.search(query);
                    //Fetch only tweets from the results
                    List<twitter4j.Status> tweets = result.getTweets();
    
                    for(twitter4j.Status tweet : tweets){
                        //Get single tweet
                        String singleTweet = tweet.getText();
                        Log.e("Twitter Tweet", singleTweet);
                        //Get URLs (it returns an array of Urls)
                        URLEntity[] urlEntity = tweet.getURLEntities();
                        //If the UrlEntity array is not empty
                        if(urlEntity != null){
                            for(int i=0; i<urlEntity.length; i++){
                                //Get URL from the tweet
                                String tweetUrl = urlEntity[i].getURL();
                                Log.e("Tweet URL", tweetUrl);
                            }
                        }else{
                            return null;
                        }
                    }
    
                }catch(TwitterException e){
                    e.printStackTrace();
                }
                return null;
            }
    
            @Override
            protected void onPostExecute(WebView webView) {
                progressDialog.hide();
            }
        }
    

    【讨论】:

    • 这与我的回答相同。这只是您添加的代码。您需要接受它作为正确答案。
    【解决方案2】:

    如果您使用 twitter4j 库,则可以通过调用status.getURLEntities();twitter4j.Status 获取URLEntity 类,这将返回URLEntity 的数组。所以到这里,你可以检查推文里面是否有 urlEntity,你可以通过调用urlEntity.getURL();来获取推文中提到的 url

    编辑 对于包括代码在内的答案,请查看下面@hrskrs 的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2021-04-11
      • 1970-01-01
      • 2013-07-06
      • 2013-05-15
      • 2014-12-19
      相关资源
      最近更新 更多