UNPKG

@bililive-tools/bilibili-recorder

Version:
72 lines (71 loc) 3.11 kB
/** * API 参考自 https://github.com/SocialSisterYi/bilibili-API-collect */ import axios from "axios"; import { assert } from "./utils.js"; const requester = axios.create({ timeout: 10e3, // axios 会自动读取环境变量中的 http_proxy 和 https_proxy 并应用, // 但会导致请求报错 "Client network socket disconnected before secure TLS connection was established"。 proxy: false, }); export async function getRoomInit(roomIdOrShortId) { const res = await requester.get(`https://api.live.bilibili.com/room/v1/Room/room_init?id=${roomIdOrShortId}`); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; } export async function getRoomInfo(roomIdOrShortId) { const res = await requester.get(`https://api.live.bilibili.com/room/v1/Room/get_info?id=${roomIdOrShortId}`); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; } export async function getMasterInfo(userId) { const res = await requester.get(`http://api.live.bilibili.com/live_user/v1/Master/info?uid=${userId}`); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; } export async function getStatusInfoByUIDs(userIds) { const res = await requester.get("http://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids", { params: { uids: userIds }, }); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; } export async function getRoomBaseInfo(roomId) { const res = await requester.get("https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomBaseInfo", { params: { room_ids: roomId, req_biz: "web_room_componet" }, }); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data.by_room_ids; } export async function getPlayURL(roomId, opts = {}) { const res = await requester.get(`https://api.live.bilibili.com/room/v1/Room/playUrl`, { params: { cid: roomId, platform: opts.useHLS ? "h5" : "web", quality: opts.quality, qn: opts.qn, }, }); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; } export async function getRoomPlayInfo(roomIdOrShortId, opts = {}) { const res = await requester.get("https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo", { params: { room_id: roomIdOrShortId, qn: opts.qn, // 0 http_stream, 1 http_hls protocol: "0,1", // 0 avc, 1 hevc codec: "0,1", // 0 flv, 1 ts, 2 fmp4 format: "0,1,2", }, headers: { Cookie: opts.cookie, }, }); assert(res.data.code === 0, `Unexpected resp, code ${res.data.code}, msg ${res.data.message}`); return res.data.data; }