Как получить сообщения в блоге по ярлыку в API блогов - PullRequest
0 голосов
/ 18 января 2019

Я использую blogger api в своем приложении для Android, чтобы интегрировать контент блоггера с ним с помощью API REST в качестве объектов 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-канал для любого ярлыка, и я нашел этот результат

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

, он получит сообщения в блоге любого ярлыка с заменой слова "ярлык" в ссылке

1 Ответ

0 голосов
/ 24 января 2019

Опция поискового запроса (q =)

Если вы хотите получать сообщения с определенной меткой, вы можете использовать этот запрос:

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

Если вы хотите получать посты с надписью 'this' , а также 'that' (если один из них не совпадает, это не совпадает), вы можете использовать:

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

Используйте кавычки вокруг меток с пробелами:

GET 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-запроса (с использованием blogId блога тестирования Google):

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

Обратите внимание, что кавычки вокруг метки должны не включается с использованием этой опции.

Чтобы получить следующую страницу постов, сохраните заданный nextPageToken, как указано в комментариях, и поместите его в pageToken -параметр, как:

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

...