package nicelee.bilibili;

import java.net.HttpCookie;
import java.util.HashMap;
import java.util.List;

import nicelee.bilibili.util.HttpCookies;
import nicelee.bilibili.util.HttpHeaders;
import nicelee.bilibili.util.HttpRequestUtil;
import nicelee.bilibili.util.Logger;
import nicelee.bilibili.util.convert.ConvertUtil;

public class API {

	public static void main(String[] args) {
		List<HttpCookie> cookies = HttpCookies.convertCookies("[DedeUserID=xxx; DedeUserID__ckMd5=xxx; SESSDATA=xxx; bili_jct=xxx; bfe_id=xxx...]");
		HttpCookies.setGlobalCookies(cookies);
		boolean result = API.like(666);
		System.out.println(result);
		//API.logout();
	}
	
	/**
	 * 给视频点赞(前提是已经登录)
	 */
	public static boolean like(String BVid) {
		long avIdNum = ConvertUtil.Bv2Av(BVid);
		return like(avIdNum);
	}
	
	/**
	 * 给视频点赞(前提是已经登录)
	 */
	public static boolean like(long avIdNum) {
		/**
		 * 是否已经点赞
		 * https://api.bilibili.com/x/web-interface/archive/has/like?aid=666
		 * {"code":0,"message":"0","ttl":1,"data":1} 已经点赞
		 * {"code":0,"message":"0","ttl":1,"data":0} 没有点赞
		 */
		HttpRequestUtil util = new HttpRequestUtil();
		String url_query = "https://api.bilibili.com/x/web-interface/archive/has/like?aid=" + avIdNum;
		HashMap<String, String> headers = new HttpHeaders().getActionHeaders("av" + avIdNum);
		String result_query = util.getContent(url_query, headers, HttpCookies.getGlobalCookies());
		Logger.println(result_query);
		if(result_query.startsWith("{\"code\":0,\"message\":\"0\",\"ttl\":1,\"data\":0}")) {
			String url = "https://api.bilibili.com/x/web-interface/archive/like";
			// like 1 点赞 2 取消
			String param = String.format("aid=%d&like=1&csrf=%s", avIdNum, HttpCookies.getCsrf());
			String result = util.postContent(url, headers, param, HttpCookies.getGlobalCookies());
			//{"code":-101,"message":"账号未登录","ttl":1}
			//{"code":65006,"message":"已赞过","ttl":1}
			//{"code":0,"message":"0","ttl":1}
			Logger.println(result);
			if(result.startsWith("{\"code\":0"))
				return true;
		}
		return false;
	}
	
	/**
	 * 注销登录状态
	 */
	public static void logout() {
		HttpRequestUtil util = new HttpRequestUtil();
		String url = "https://passport.bilibili.com/login/exit/v2";
		String param = String.format("biliCSRF=%s", HttpCookies.getCsrf());
		String result = util.postContent(url, new HttpHeaders().getLogoutHeaders(), param, HttpCookies.getGlobalCookies());
		Logger.println(result);
	}
}
最近下载更多
玖零定制问题修复  LV34 3月3日
woldxy  LV12 2月19日
Seaskye  LV14 2023年11月10日
lipanlong  LV10 2023年7月6日
zhangjilu  LV18 2023年4月23日
wyx065747  LV67 2023年2月6日
快乐的程序员  LV25 2023年1月25日
Rommel  LV27 2022年11月12日
笑得很美  LV11 2022年10月27日
最代码官方  LV167 2022年10月23日
最近浏览更多
WBelong  LV7 3月28日
玖零定制问题修复  LV34 3月3日
3334004690  LV3 2月20日
woldxy  LV12 2月19日
哪里的完整版  LV7 2月1日
linfon  LV2 1月25日
shiaomon 2023年12月14日
暂无贡献等级
Seaskye  LV14 2023年11月10日
wl010101  LV9 2023年11月8日
jkjfdgbkl  LV2 2023年11月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友