All Downloads are FREE. Search and download functionalities are using the official Maven repository.

weibo4j.model.Query Maven / Gradle / Ivy

/*
 * Copyright © 2021 pengjianqiang
 * All rights reserved.
 * 项目名称:微博开放平台API-JAVA SDK
 * 项目描述:基于微博开放平台官网的weibo4j-oauth2-beta3.1.1包及新版接口做二次开发
 * 项目地址:https://github.com/qqxadyy/weibo-openapi-4java
 * 许可证信息:见下文
 *
 * ======================================================================
 *
 * src/main/java/weibo4j下的文件是从weibo4j-oauth2-beta3.1.1.zip中复制出来的
 * 本项目对这个目录下的部分源码做了重新改造
 * 但是许可信息和"https://github.com/sunxiaowei2014/weibo4j-oauth2-beta3.1.1"或源码中已存在的保持一致
 */
package weibo4j.model;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import lombok.Getter;
import lombok.Setter;

/**
 * 搜索条件
 * 
 * @author SinaWeibo
 *
 */
@Getter
@Setter
public class Query {
    private String q; // 搜索的关键字。
    private Boolean snick = null;// 搜索范围是否包含昵称
    private int rpp = 20;
    private Boolean sdomain = null;// 搜索范围是否包含个性域名
    private Boolean sintro = null;// 搜索范围是否包含简介
    private Integer province = null;// 省份ID,参考省份城市编码表
    private Integer city = null;// 城市ID,参考省份城市编码表
    private Gender gender = null;// 性别
    private String comorsch = null;
    private int sort = 1;// 排序方式,1为按更新时间,2为按粉丝数。
    private Integer page = null;
    private Integer count = null;// 默认每页10条
    private boolean base_app = true;// 是否不基于当前应用来获取数据
    private int filter_ori = 0;// 过滤器,是否为原创,0为全部,5为原创,4为转发。默认为0。
    private int filter_pic;// 过滤器。是否包含图片。0为全部,1为包含,2为不包含。
    private long fuid;// 微博作者的用户ID。
    private Date starttime;// 开始时间,Unix时间戳
    private Date endtime;// 结束时间,Unix时间戳
    private boolean needcount = false;// 返回结果中是否包含返回记录数。true则返回搜索结果记录数。
    private String geocode = null;// 返回指定经纬度附近的信息。经纬度参数格式是“纬度,经度,半径”,半径支持km(公里),m(米),mi(英里)。格式需要URL Encode编码

    public PostParameter[] getParameters() throws WeiboException {
        List list = new ArrayList<>();
        Class clz = Query.class;
        Field[] fields = clz.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            String fieldName = field.getName();
            String firstLetter = fieldName.substring(0, 1).toUpperCase();
            String getMethodName = "get" + firstLetter + fieldName.substring(1);
            Method getMethod;
            try {
                getMethod = clz.getMethod(getMethodName, new Class[] {});
                Object value = getMethod.invoke(this, new Object[] {});
                if (value != null) {
                    list.add(getParameterValue(fieldName, value));
                }
            } catch (Exception e) {
                throw new WeiboException(e);
            }
        }
        return list.toArray(new PostParameter[list.size()]);

    }

    private PostParameter getParameterValue(String name, Object value) {
        if (value instanceof Boolean) {
            return new PostParameter(name, (Boolean)value ? "0" : "1");
        } else if (value instanceof String) {
            return new PostParameter(name, value.toString());
        } else if (value instanceof Integer) {
            return new PostParameter(name, Integer.toString((Integer)value));
        } else if (value instanceof Long) {
            return new PostParameter(name, Long.toString((Long)value));
        } else if (value instanceof Gender) {
            return new PostParameter(name, Gender.valueOf((Gender)value));
        }
        return null;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy