【问题标题】:How to get blog posts by label in blogger api如何在 blogger api 中按标签获取博客文章
【发布时间】:2019-06-12 09:23:41
【问题描述】:

我在我的 Android 应用程序中使用blogger api,通过使用 REST API 将博客内容与其集成,作为 JSON 的对象。

我需要按标签检索/过滤帖子。在大多数博客中,博客标签的链接通常是

https://abtallaldigital.blogspot.com/search/label/Food
https://abtallaldigital.blogspot.com/search/label/Technology

我阅读了所有 API 文档,发现它涉及博客、帖子、评论、页面、用户,但其中没有处理标签/类别的内容。

应用中有一个类 BloggerAPI 用于检索博客

package abtallaldigital.blogspot.com.dummyapp;

import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
import retrofit2.http.Url;

public class BloggerAPI {

    public static final String BASE_URL =
            "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/";
    public static final String KEY = "THE-KEY";

    public static PostService postService = null;

    public static PostService getService() {

        if (postService == null) {
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            postService = retrofit.create(PostService.class);
        }

        return postService;
    }

    public interface PostService {
        @GET
        Call<PostList> getPostList(@Url String url);
    }
}

这样用的

  private void getData(){

    String url = BloggerAPI.BASE_URL + "?key=" + BloggerAPI.KEY;

    if(token != ""){
        url = url+ "&pageToken="+token;
    }
    if(token == null){
        return;
    }

   final Call<PostList> postList = BloggerAPI.getService().getPostList(url);
    postList.enqueue(new Callback<PostList>() {
        @Override
        public void onResponse(Call<PostList> call, Response<PostList> response) {
            PostList list = response.body();
            token = list.getNextPageToken();
            items.addAll(list.getItems());
            adapter.notifyDataSetChanged();
            Toast.makeText(MainActivity.this, "Sucess", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<PostList> call, Throwable t) {
            Toast.makeText(MainActivity.this,"Error occured",Toast.LENGTH_LONG).show();
            Log.i(TAG, "onFailure: "+t.toString());
        }
    });

}

我在谷歌上搜索如何获取任何标签的 RSS Feed 链接,我发现了这个结果

https://example.blogspot.com/feeds/posts/default/-/label/?alt=rss

这将获取任何标签的博客文章,并替换链接中的“标签”一词

【问题讨论】:

    标签: java android jquery json blogger


    【解决方案1】:

    搜索查询 (q=) 选项

    如果您想获取带有特定标签的帖子,您可以使用以下查询:

    获取https://www.googleapis.com/blogger/v3/blogs/2399953/posts/search?q=label:label1&key=THE-KEY

    如果您想获得标有“this”以及“that”的帖子(如果其中一个不匹配,则不匹配),您可以使用:

    获取https://www.googleapis.com/blogger/v3/blogs/2399953/posts/search?q=label:this+label:that&key=THE-KEY

    在带有空格的标签周围使用引号:

    获取https://www.googleapis.com/blogger/v3/blogs/15045980/posts/search?q=label%3A%22James+Whittaker%22&key=THE-KEY

    可能是按标签获取帖子的更好选择

    来源:https://developers.google.com/blogger/docs/3.0/reference/posts/list

    HTTP 请求:

    GET https://www.googleapis.com/blogger/v3/blogs/blogId/posts

    在可选参数中有labels参数:

    labels string Comma-separated list of labels to search for.

    HTTP 请求示例(使用 Google 测试博客的 blogId):

    获取https://www.googleapis.com/blogger/v3/blogs/15045980/posts?labels=James+Whittaker&key=THE-KEY

    请注意,标签周围的引号不应使用此选项。

    要获取帖子的下一页,请存储给定的nextPageToken,如 cmets 中所述,并将其放入 pageToken 参数中,例如:

    获取https://www.googleapis.com/blogger/v3/blogs/15045980/posts?labels=James+Whittaker&pageToken=CgkIChiAjpb65CUQ3KqWBw&key=THE-KEY

    【讨论】:

    • 它正在工作,谢谢你 :) ,如果我使用参数“nextPageToken”:token 这将获得第二十个项目吗?因为我试过但得到相同的物品
    • “q=" 搜索查询提供了 nextPageToken 但设置 pageToken 也确实产生了相同的结果。 GET googleapis.com/blogger/v3/blogs/2399953/… 确实尊重 nextPageToken。见developers.google.com/blogger/docs/3.0/reference/posts/list
    • 我知道这不是 OP 所要求的,但如果您想在标签和内容中搜索“this”:GET posts/search?q=this|label:this&key=THE-KEY
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多