-->

2013年3月14日星期四

获取blogger博客的全部文章列表

如果想要获取blogger博客的所有文章列表,可以使用如下的javascript脚本:

<div id="all_post_root">Loading ...</div>
<script type="text/javascript">
var entriesComparator = function(a, b) {
  return a.link[2].title > b.link[2].title;
} //这个函数会把文章按标题进行排序,不太清楚对中文的排序是按什么机制来的

var displayFeed = function(response) {
  var entries = response.feed.entry;
  entries.sort(entriesComparator); //调用排序函数,注释掉此句则默认按时间顺序显示所有文章列表

  var listUl = document.createElement("ul");
  for (var i in entries) {
     var elt = entries[i].link[2];

     var a = document.createElement("a");
     a.href = elt.href;
     a.title = entries[i].published.$t;
     a.appendChild(document.createTextNode(elt.title));


     var li = document.createElement("li");
     li.appendChild(a);

     listUl.appendChild(li);
  }

  var allPostRoot = document.getElementById('all_post_root');
  allPostRoot.innerHTML = "";
  allPostRoot.appendChild(listUl);
};
</script>
<script src="/feeds/posts/default?alt=json&amp;callback=displayFeed&amp;max-results=99999">
</script> //可以看到,这里采用max-results=99999来尽可能的获取更多的文章,当然,如果你的博客文章大于这个数,那只需在这里指定一个远大于当前文章数的数值即可

如果想要按照label来获取文章列表,比如label名为Picutre,则最后一句应该修改为:
<script src="/feeds/posts/default/-/Picture?alt=json&amp;callback=displayFeed&amp;max-results=99999">
</script>

另外,是否计划替换标题中的某些公共部分呢?比如标题中都有"[一个问题]"(带方括号,不带双引号),则需要使用这句代码:
a.appendChild(document.createTextNode(elt.title.replace(/\[一个问题\] /, "")));

以上都是使用的javascript的知识,从博客的feed中获取内容