获取推特用户时间轴并应用过滤器
get twitter user timeline and apply filters
我正在按照官方文档 (https://github.com/twitter/twitter-kit-android/wiki) 在我的应用程序中为 android 实施 Twitter 工具包。
我登录了,基本数据正确无误。
当我想获取用户的推文或时间线时,会指示执行此操作的方法,但始终会显示在列表或回收站视图中 (https://github.com/twitter/twitter-kit-android/wiki/Show-Timelines)
我在 Whosebug 中也看到了这些示例,其中给出了相同的解决方案,但总是将数据转换为列表或 recyclerview
我的问题:有什么方法可以只得到 JSON 对查询的响应,?
我找到的答案并没有具体回应这个。
通过以下方式可以获得推文列表,但我无法应用日期或关键字(untilDate 等)等搜索过滤器
void writeInFile()
{
userTimeline = new UserTimeline.Builder()
.userId(userID)
.includeRetweets(false)
.maxItemsPerRequest(200)
.build();
userTimeline.next(null, callback);
}
Callback<TimelineResult<Tweet>> callback = new Callback<TimelineResult<Tweet>>()
{
@Override
public void success(Result<TimelineResult<Tweet>> searchResult)
{
List<Tweet> tweets = searchResult.data.items;
for (Tweet tweet : tweets)
{
String str = tweet.text; //Here is the body
maxId = tweet.id;
Log.v(TAG,str);
}
if (searchResult.data.items.size() == 100) {
userTimeline.previous(maxId, callback);
}
else {
}
}
@Override
public void failure(TwitterException error)
{
Log.e(TAG,"Error");
}
};
您在
中获得了所有必要的数据
public void success(Result<TimelineResult<Tweet>> searchResult)
回调。
您有来自
的推文列表
searchResult.data.items;
然后您可以只选择您需要的数据。 Tweet class has a lot of data inside that you can use. Here are the docs.
如果您将它与 JSON api response 进行比较,您会发现您拥有相同的信息。
您需要做的就是从您的 Tweet 对象获取数据并根据它进行过滤。例如,我们只获取过去 6 小时内创建的推文:
List<Tweet> tweets = searchResult.data.items;
List<Tweet> filteredTweets = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, -6);
Date sixHoursBefore = cal.getTime();
for (Tweet tweet : tweets)
{
Date tweetCreatedAtDate = null;
try {
tweetCreatedAtDate = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy").parse(tweet.createdAt);
if (tweetCreatedAtDate.after(sixHoursBefore)) {
filteredTweets.add(tweet);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
twitter returns createdAt
格式Wed Aug 27 13:08:45 +0000 2008
不是很方便,但我们可以解析它。
我建议你稍微重构一下,将日历和解析逻辑提取到一个单独的函数中,但你可以从上面的代码中得到这个想法。
我正在按照官方文档 (https://github.com/twitter/twitter-kit-android/wiki) 在我的应用程序中为 android 实施 Twitter 工具包。 我登录了,基本数据正确无误。
当我想获取用户的推文或时间线时,会指示执行此操作的方法,但始终会显示在列表或回收站视图中 (https://github.com/twitter/twitter-kit-android/wiki/Show-Timelines)
我在 Whosebug 中也看到了这些示例,其中给出了相同的解决方案,但总是将数据转换为列表或 recyclerview
我的问题:有什么方法可以只得到 JSON 对查询的响应,?
我找到的答案并没有具体回应这个。
通过以下方式可以获得推文列表,但我无法应用日期或关键字(untilDate 等)等搜索过滤器
void writeInFile()
{
userTimeline = new UserTimeline.Builder()
.userId(userID)
.includeRetweets(false)
.maxItemsPerRequest(200)
.build();
userTimeline.next(null, callback);
}
Callback<TimelineResult<Tweet>> callback = new Callback<TimelineResult<Tweet>>()
{
@Override
public void success(Result<TimelineResult<Tweet>> searchResult)
{
List<Tweet> tweets = searchResult.data.items;
for (Tweet tweet : tweets)
{
String str = tweet.text; //Here is the body
maxId = tweet.id;
Log.v(TAG,str);
}
if (searchResult.data.items.size() == 100) {
userTimeline.previous(maxId, callback);
}
else {
}
}
@Override
public void failure(TwitterException error)
{
Log.e(TAG,"Error");
}
};
您在
中获得了所有必要的数据public void success(Result<TimelineResult<Tweet>> searchResult)
回调。
您有来自
的推文列表searchResult.data.items;
然后您可以只选择您需要的数据。 Tweet class has a lot of data inside that you can use. Here are the docs.
如果您将它与 JSON api response 进行比较,您会发现您拥有相同的信息。
您需要做的就是从您的 Tweet 对象获取数据并根据它进行过滤。例如,我们只获取过去 6 小时内创建的推文:
List<Tweet> tweets = searchResult.data.items;
List<Tweet> filteredTweets = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, -6);
Date sixHoursBefore = cal.getTime();
for (Tweet tweet : tweets)
{
Date tweetCreatedAtDate = null;
try {
tweetCreatedAtDate = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy").parse(tweet.createdAt);
if (tweetCreatedAtDate.after(sixHoursBefore)) {
filteredTweets.add(tweet);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
twitter returns createdAt
格式Wed Aug 27 13:08:45 +0000 2008
不是很方便,但我们可以解析它。
我建议你稍微重构一下,将日历和解析逻辑提取到一个单独的函数中,但你可以从上面的代码中得到这个想法。