KSController.java 3.61 KB
package cn.fw.freya.controller;

import cn.fw.freya.model.data.pool.LivePool;
import cn.fw.freya.model.data.pool.VideoPool;
import cn.fw.freya.service.crawl.impl.KuaiShouCrawl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author unknown
 * @version 1.0
 * @date 2021/12/10 14:56
 * @Description
 */
@Validated
@RequestMapping("/kuaishou")
@RestController
@RequiredArgsConstructor
public class KSController {

    private final KuaiShouCrawl kuaishouCrawl;

    /**
     * 获取所有'作品'信息, 并存库
     *
     * @param accountNo 账户号
     */
    @GetMapping("/getVideoInfo")
    public List<VideoPool> getVideoInfo(String accountNo, HttpServletRequest request) throws IOException {
        request.getHeader("host");
        return kuaishouCrawl.getAllVideoMsg(accountNo);
    }

    /**
     * 获取所有'直播'信息, 并存库
     *
     * @param accountNo 账户号
     */
    @GetMapping("/getLiveInfo")
    public List<LivePool> getLiveInfo(String accountNo) throws IOException {
        return kuaishouCrawl.getYesterdayLiveMsg(accountNo);
    }

    /**
     * 更新用户粉丝数
     *
     * @param accountNo 账户号
     */
    @GetMapping("/updateAccountFans")
    public Integer updateAccountFans(String accountNo) throws IOException {
        return kuaishouCrawl.updateAccountFans(accountNo);
    }

    /**
     * 进入指定账户号的创作者平台首页
     *
     * @param accountNo 账户号
     */
    @GetMapping("/loginIndex")
    public void loginIndex(String accountNo) {
        kuaishouCrawl.loginIndex(accountNo);
    }

    /**
     * 获取指定用户指定类型的sig3签名
     *
     * @param accountNo 账户号
     */
    @GetMapping("/getNS_sig3")
    public String getNS_sig3(String accountNo, Integer type) {
        return kuaishouCrawl.getNS_sig3(accountNo, type);
    }

    /**
     * 设置setSig3Map
     *
     */
    @GetMapping("/setSig3Map")
    public boolean setSig3Map() {
        return kuaishouCrawl.setSig3Map();
    }

    /**
     * 停止设置setSig3Map
     *
     */
    @GetMapping("/stopSetSig3Map")
    public boolean stopSetSig3Map() {
        return kuaishouCrawl.stopSetSig3Map();
    }

    /**
     * 获取getSig3Map
     *
     */
    @GetMapping("/getSig3Map")
    public String getSig3Map() {
        return kuaishouCrawl.getSig3Map();
    }

    /**
     * 获取账户直播回放地址
     *
     * @param accountNo 账户号
     */
    @GetMapping("/getPlayback")
    public List<JSONObject> getPlayback(String accountNo) {
        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return kuaishouCrawl.getUserLivePlayback(accountNo).stream()
                .map(item -> {
                    JSONObject obj = (JSONObject) item;
                    obj.put("duration", BigDecimal.valueOf(obj.getLong("duration")).divide(BigDecimal.valueOf(60), 2, RoundingMode.HALF_UP));
                    Arrays.asList("createTime").forEach(item1 -> obj.put(item1, sdf.format(new Date(obj.getLong(item1)))));
                    return obj;
                }).collect(Collectors.toList());
    }

}