我正在尝试使用Blogger API从博客中获取所有帖子。由于某些未知原因,要获取的最大帖子数量似乎限制为20个。
如果我试试这个网址:
我得到以下回复(按预期列出最后20个帖子标题):
{
"items": [
{
"title": "El Caballero"
},
{
"title": "Une traversée de frontière… étonnante!"
},
{
"title": "Hasta luego querida Argentina!"
},
{
"title": "Dernier jour en Argentine"
},
{
"title": "Humahuaca"
},
{
"title": "Purmamarca"
},
{
"title": "Tilcara"
},
{
"title": "Premières grèves"
},
{
"title": "Le Nord Argentin: Salta"
},
{
"title": "Ca en fait de l'eau tout ça..."
},
{
"title": "Un peu de pluie au Brésil"
},
{
"title": "Iguazu"
},
{
"title": "San José"
},
{
"title": "Adieu à Buenos Aires"
},
{
"title": "Traversons en Uruguay"
},
{
"title": "Retour à Buenos Aires"
},
{
"title": "Fin de l'aventure Patagonienne"
},
{
"title": "Les fameuses tours nous surprennent"
},
{
"title": "Un peu de pluie pour se changer les idées"
},
{
"title": "Valle Francés"
}
]
}
但是,如果我增加maxResults参数,
我收到以下错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid Value"
}
],
"code": 400,
"message": "Invalid Value"
}
}
如何增加我可以获取的最大帖子数限制?
谢谢,
尼古拉斯
答案 0 :(得分:6)
我认为API仅限于将20个结果作为最大值。
因此,为了获取超过20个结果,您必须使用Bloggers参考API中指定的pageToken
参数。
您的第一个请求应包含nextPageToken
,以便您在回复中获得该请求。比使用此令牌来检索下一页等等。
您的第一个请求必须是这样的:
以下是预期结果:
{
"nextPageToken": "CgkIChignPaz5ycQ-rn0pIfipe8q",
"items": [
{
"title": "El Caballero"
},
{
"title": "Une traversée de frontière… étonnante!"
},
{
"title": "Hasta luego querida Argentina!"
},
{
"title": "Dernier jour en Argentine"
},
{
"title": "Humahuaca"
},
{
"title": "Purmamarca"
},
{
"title": "Tilcara"
},
{
"title": "Premières grèves"
},
{
"title": "Le Nord Argentin: Salta"
},
{
"title": "Ca en fait de l'eau tout ça..."
}
]
}
现在你要做的就是在结果中选择"nextPageToken": "CgkIChignPaz5ycQ-rn0pIfipe8q"
并将其包含在下一个请求中:
除了在下一个请求中使用的新``nextPageToken`之外,结果应显示接下来的20个帖子。
答案 1 :(得分:2)
我实施了Walid Laribi建议的旅游博客页面,该页面从博客中检索所有帖子的位置并绘制旅行期间的路径(blog)。
要获取所有帖子的位置,我首先会找到一个脚本来检索前10个帖子并给我nextPageToken
:
<script src="https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?fields=nextPageToken,items(title,location(name,lat,lng),url,published)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU&callback=handleResponse">
在上一个脚本的回调中,我们可以获取每个帖子的位置,以及创建和执行脚本以获取下一个帖子:
// Get latitude/longitude from Blogger
function handleResponse(response) {
for(i=0; i< response.items.length; i++){
if(response.items[i].location != undefined){
Lat.push(response.items[i].location.lat);
Lng.push(response.items[i].location.lng);
// etc.
}
}
if(response.nextPageToken != undefined){
var srctxt = 'https://www.googleapis.com/blogger/v3/blogs/3089072491354463482/posts?fields=nextPageToken,items(title,location(name,lat,lng),url,published)&key=AIzaSyAJO5J-pRCaGOIeRLIJfvAPwxpMLKvwebU&callback=handleResponse&pageToken=' + response.nextPageToken;
// Execute the new script
var head = document.getElementsByTagName('head')[0];
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', srctxt);
head.appendChild(scriptElement);
head.removeChild(scriptElement);
}
}