プログラマメモ2 - programmer no memo2

blogger API 本日の投稿だけ取得 2007/10/07

blogger APIです。

Blogger Data API Developer's Guide

記事の取得に関してのサンプルがほとんどサンプルないような気が...

DateTimeにsetDateOnlyしたほうがよいようです。
もっと他の方法知りたいところです。

みつからないとnullを返すという仕様にしてみました。


/**
* <p>
* 本日、発行されたpostを一件だけ取得します。ですので、目的のものがみつかるという保証はありません。
* </p>
*
* @param myService
* @param blogId
* @return
* @throws ServiceException
* @throws IOException
*/
public static Entry getTodayPublishedPost(GoogleService myService,
String blogId) throws ServiceException, IOException {
DateTime startTime, endTime;
startTime = DateTime.now();
endTime = DateTime.now();

startTime.setDateOnly(true);

URL feedUrl = new URL("http://www.blogger.com/feeds/" + blogId
+ "/posts/default");
Query myQuery = new Query(feedUrl);
myQuery.setPublishedMin(startTime);
myQuery.setPublishedMax(endTime);
Feed resultFeed = myService.query(myQuery, Feed.class);

if (resultFeed.getEntries().size() == 0)
return null;

return resultFeed.getEntries().get(0);
}


追記
本当に正しく動いているかどうか自信がない。
で、下記のコードに変更

/**
* <p>
* 本日、発行されたpostを一件だけ取得します。ですので、目的のものがみつかるという保証はありません。
* </p>
*
* @param myService
* @param blogId
* @return
* @throws ServiceException
* @throws IOException
*/
public static Entry getTodayPublishedPost(GoogleService myService,
String blogId) throws ServiceException, IOException {
DateTime startTime, endTime;

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);

startTime = new DateTime(calendar.getTime());

calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
endTime = new DateTime(calendar.getTime());

URL feedUrl = new URL("http://www.blogger.com/feeds/" + blogId
+ "/posts/default");
Query myQuery = new Query(feedUrl);
myQuery.setPublishedMin(startTime);
myQuery.setPublishedMax(endTime);
Feed resultFeed = myService.query(myQuery, Feed.class);

if (resultFeed.getEntries().size() == 0)
return null;

return resultFeed.getEntries().get(0);
}

: