在 ASP.net C# 中查询 Google GData Blogger API 以查找下一个博客
本文关键字:API 查找 下一个 Blogger GData net ASP Google 查询 | 更新日期: 2023-09-27 18:34:06
目前,我正在努力将"上一个博客"和"下一个博客"链接到一个 ASP.net C#应用程序,该应用程序从blogspot上托管的客户博客提供其博客。一旦我抓住一个特定的博客,我就会想立即获得它的上一个博客和下一个博客。获得以前的博客并不难。
// THIS IS MY CALL TO GET THE PREVIOUS BLOG
FeedQuery prevQuery = new FeedQuery();
prevQuery.Uri = new Uri(String.Format("{0}", blogCred.feedUri));
// {0} This is automatically retrieved from the database [ https://www.blogger.com/feeds/XXXXXXXXXXXXXXXXXX/posts/default/ ]
prevQuery.MaxPublication = entry.Published.AddSeconds(-1);
prevQuery.NumberToRetrieve = 1;
AtomFeed prevFeed = googleService.Query(prevQuery);
AtomEntry prevEntry = prevFeed.Entries.FirstOrDefault();
prevBlog(prevEntry);
这让我得到了我想要的结果。问题是获取下一个博客。
// THIS IS MY CALL TO GET THE NEXT BLOG
FeedQuery nextQuery = new FeedQuery();
nextQuery.Uri = new Uri(String.Format("{0}", blogCred.feedUri));
// {0} This is automatically retrieved from the database [ https://www.blogger.com/feeds/XXXXXXXXXXXXXXXXXX/posts/default/ ]
nextQuery.MinPublication = entry.Published.AddSeconds(1);
nextQuery.NumberToRetrieve = 1;
AtomFeed nextFeed = googleService.Query(nextQuery);
AtomEntry nextEntry = nextFeed.Entries.FirstOrDefault();
nextBlog(nextEntry);
我遇到的问题是我无法让 Blogger 按降序排列这些帖子。它不断按升序对它们进行排序,并抓取已发布的最新博客,而不是下一篇文章。我不想抓取包含所有博客文章的完整 xml 文件并抓取最后一项。我想以与此 LINQ to SQL 调用类似的方式获取最后一项:
var query = from f in nextEntry
where f.date > desiredDate
orderby date descending
select f;
如果有人有任何想法或我错过的任何东西 - 希望像从谷歌的回应中吐出的条目中的某个地方获取"下一篇文章"链接一样简单。
Kiquenet,我无法发布完整的解决方案,但我可以发布实现此目的所需的代码片段。
FeedQuery nextQuery = new FeedQuery();
nextQuery.Uri = new Uri(String.Format("{0}", blogCred.feedUri));
DateTime dateToFind = entry.Published.AddSeconds(1);
int numberOfDates = (int)(DateTime.Now - dateToFind).TotalDays;
nextQuery.MinPublication = dateToFind;
nextQuery.NumberToRetrieve = 1;
AtomFeed nextFeed = null;
AtomEntry nextEntry = null;
for (int i = 0; i < numberOfDates; )
{
nextQuery.MaxPublication = dateToFind.AddDays(i);
nextFeed = googleService.Query(nextQuery);
if (nextFeed.TotalResults >= 1)
{
nextEntry = nextFeed.Entries.FirstOrDefault();
break;
}
i = i + 10;
}
因此,这对您的作用是查看您刚刚抓取的最后一个帖子 10 天后是否有任何帖子。如果该时间跨度内没有任何帖子,请再添加 10 天。它将继续以 10 为增量进行搜索,直到到达今天的日期。dateToFind 和"现在"之间的日期数。
希望这对您有所帮助。这就是我目前 - 并且一直在 - 使用的。