添加B站排行榜接口拉取
This commit is contained in:
		
							
								
								
									
										87
									
								
								src/get_bilibili_rank.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/get_bilibili_rank.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const fs = require('fs');
 | 
			
		||||
const path = require('path');
 | 
			
		||||
 | 
			
		||||
const fileUtils = require('./utils/fileUtils');
 | 
			
		||||
const requestUtils = require('./utils/requestUtils');
 | 
			
		||||
 | 
			
		||||
const API_URL = "https://api.bilibili.com/x/web-interface/ranking/v2?type=all";
 | 
			
		||||
const SUB_FOLDER = "bilibili-rank";
 | 
			
		||||
 | 
			
		||||
const DATA_FOLDER = path.join(path.dirname(__dirname), process.env.DATA_FOLDER ?? 'data', SUB_FOLDER);
 | 
			
		||||
console.log("DATA_FOLDER", DATA_FOLDER);
 | 
			
		||||
fileUtils.createFolder(DATA_FOLDER); // 程序运行就保证 data 目录存在
 | 
			
		||||
 | 
			
		||||
async function main() {
 | 
			
		||||
    let requestTimestamp = Date.now();
 | 
			
		||||
    let now = new Date(requestTimestamp + 8 * 3600 * 1000).toISOString();
 | 
			
		||||
 | 
			
		||||
    let result = await requestUtils.getApiResult(API_URL);
 | 
			
		||||
    if (result.code != 0) {
 | 
			
		||||
        console.log(new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString(), SUB_FOLDER, "请求成功,但服务器处理失败,正在重试。");
 | 
			
		||||
        result = await requestUtils.getApiResult(API_URL);
 | 
			
		||||
        if (result.ok != 1) {
 | 
			
		||||
            console.log(new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString(), SUB_FOLDER, "请求成功,但服务器处理失败,保存失败信息。");
 | 
			
		||||
            // ok 不为 1,那么久直接保存便于后续分析,不进行后续处理
 | 
			
		||||
            fileUtils.saveJSON({
 | 
			
		||||
                saveFolder: DATA_FOLDER,
 | 
			
		||||
                now: now,
 | 
			
		||||
                fileNameSuffix: `origin-error`,
 | 
			
		||||
                object: result,
 | 
			
		||||
                compress: true,
 | 
			
		||||
                uncompress: false
 | 
			
		||||
            });
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    console.log(new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString(), SUB_FOLDER, "请求成功");
 | 
			
		||||
    // console.log("result", result);
 | 
			
		||||
 | 
			
		||||
    let data = result.data;
 | 
			
		||||
 | 
			
		||||
    // // 去除 trackid
 | 
			
		||||
    // delete data["trackid"];
 | 
			
		||||
    // console.log(data);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存原始数据
 | 
			
		||||
     */
 | 
			
		||||
    fileUtils.saveJSON({
 | 
			
		||||
        saveFolder: DATA_FOLDER,
 | 
			
		||||
        now: now,
 | 
			
		||||
        fileNameSuffix: `origin`,
 | 
			
		||||
        object: result,
 | 
			
		||||
        compress: true,
 | 
			
		||||
        uncompress: false
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // /**
 | 
			
		||||
    //  * 获取需要的数据,进行转换
 | 
			
		||||
    //  */
 | 
			
		||||
    // let convert = [];
 | 
			
		||||
    // data.list.forEach(item => {
 | 
			
		||||
    //     convert.push(item);
 | 
			
		||||
    // });
 | 
			
		||||
    // fileUtils.saveJSON({
 | 
			
		||||
    //     saveFolder: DATA_FOLDER,
 | 
			
		||||
    //     now: now,
 | 
			
		||||
    //     fileNameSuffix: `final`,
 | 
			
		||||
    //     object: convert,
 | 
			
		||||
    //     compress: true,
 | 
			
		||||
    //     uncompress: false,
 | 
			
		||||
    // });
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新最新的
 | 
			
		||||
     */
 | 
			
		||||
    fs.writeFileSync(`${DATA_FOLDER}/latest.json`, JSON.stringify({
 | 
			
		||||
        update_time: requestTimestamp,
 | 
			
		||||
        update_time_friendly: now.substring(0, 19).replace(/T/g, " "),
 | 
			
		||||
        note: data.note,
 | 
			
		||||
        data: data.list,
 | 
			
		||||
    }));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exports.main = main;
 | 
			
		||||
		Reference in New Issue
	
	Block a user