mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
✨ feat: 哔哩哔哩默认使用不用登录的 480p 防止出现问题
This commit is contained in:
parent
752e3346a8
commit
75601ae064
@ -12,7 +12,7 @@ import querystring from "querystring";
|
||||
import puppeteer from "../../../lib/puppeteer/puppeteer.js";
|
||||
import {
|
||||
BILI_CDN_SELECT_LIST,
|
||||
BILI_DEFAULT_INTRO_LEN_LIMIT,
|
||||
BILI_DEFAULT_INTRO_LEN_LIMIT, BILI_RESOLUTION_LIST,
|
||||
COMMON_USER_AGENT,
|
||||
DIVIDING_LINE,
|
||||
douyinTypeMap,
|
||||
@ -998,8 +998,10 @@ export class tools extends plugin {
|
||||
}
|
||||
// =================默认下载方式=====================
|
||||
try {
|
||||
// 获取分辨率参数 QN,如果没有默认使用 480p --> 32
|
||||
const qn = BILI_RESOLUTION_LIST.find(item => item.value === this.biliResolution).qn || 32;
|
||||
// 获取下载链接
|
||||
const data = await getDownloadUrl(url, this.biliSessData);
|
||||
const data = await getDownloadUrl(url, this.biliSessData, qn);
|
||||
|
||||
if (data.audioUrl != null) {
|
||||
await this.downBili(tempPath, data.videoUrl, data.audioUrl);
|
||||
|
@ -20,7 +20,7 @@ biliDisplaySummary: false # 是否显示哔哩哔哩的总结
|
||||
biliUseBBDown: false # 是否使用BBDown,默认不开启,开启后使用强劲的BBDown下载最高画质
|
||||
biliCDN: 0 # 哔哩哔哩 CDN,默认为0表示不使用
|
||||
biliDownloadMethod: 0 # 哔哩哔哩的下载方式:0默认使用原生稳定的下载方式,如果你在乎内存可以使用轻量的wget和axel下载方式,如果在乎性能可以使用Aria2下载
|
||||
biliResolution: 1 # 哔哩哔哩的下载画质,0为原画,1为清晰画,2为流畅画(默认为0)
|
||||
biliResolution: 5 # 哔哩哔哩的下载画质,默认480p(因为不用登录),参考 {BILI_RESOLUTION_LIST}
|
||||
|
||||
useLocalNeteaseAPI: false # 是否使用网易云解析自建API
|
||||
useNeteaseSongRequest: false # 是否开启网易云点歌功能
|
||||
|
@ -184,13 +184,13 @@ export const BILI_DOWNLOAD_METHOD = Object.freeze([
|
||||
]);
|
||||
|
||||
export const BILI_RESOLUTION_LIST = Object.freeze([
|
||||
{ label: '8K 超高清', value: 0 },
|
||||
{ label: '4K 超清', value: 1 },
|
||||
{ label: '1080P 高码率', value: 2 },
|
||||
{ label: '1080P 高清', value: 3 },
|
||||
{ label: '720P 高清', value: 4 },
|
||||
{ label: '480P 清晰', value: 5 },
|
||||
{ label: '360P 流畅', value: 6 },
|
||||
{ label: '8K 超高清', value: 0, qn: 127 },
|
||||
{ label: '4K 超清', value: 1, qn: 120 },
|
||||
{ label: '1080P 高码率', value: 2, qn: 112 },
|
||||
{ label: '1080P 高清', value: 3, qn: 80 },
|
||||
{ label: '720P 高清', value: 4, qn: 64 },
|
||||
{ label: '480P 清晰', value: 5, qn: 32 },
|
||||
{ label: '360P 流畅', value: 6, qn: 16 },
|
||||
]);
|
||||
|
||||
export const YOUTUBE_GRAPHICS_LIST = Object.freeze([
|
||||
|
@ -10,7 +10,7 @@ export const BILI_SUMMARY = "https://api.bilibili.com/x/web-interface/view/concl
|
||||
* https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/video/videostream_url.md
|
||||
* @type {string}
|
||||
*/
|
||||
export const BILI_PLAY_STREAM = "https://api.bilibili.com/x/player/playurl?cid={cid}&bvid={bvid}&qn=64&fnval=16"
|
||||
export const BILI_PLAY_STREAM = "https://api.bilibili.com/x/player/playurl?cid={cid}&bvid={bvid}&qn={qn}&fnval=16"
|
||||
|
||||
/**
|
||||
* 动态信息
|
||||
|
@ -214,7 +214,7 @@ export function supportGuoba() {
|
||||
field: "tools.biliResolution",
|
||||
label: "bili最高分辨率",
|
||||
bottomHelpMessage:
|
||||
"哔哩哔哩的最高分辨率(目前仅适用于开启BBDown后),默认为1080p,可以自行根据服务器进行调整",
|
||||
"【开不开BBDown都同步】哔哩哔哩的最高分辨率,默认为480p,可以自行根据服务器进行调整",
|
||||
component: "Select",
|
||||
componentProps: {
|
||||
options: BILI_RESOLUTION_LIST,
|
||||
|
@ -14,7 +14,6 @@ import {
|
||||
BILI_SCAN_CODE_GENERATE,
|
||||
BILI_VIDEO_INFO
|
||||
} from "../constants/tools.js";
|
||||
import { saveJsonToFile } from "./common.js";
|
||||
import { mkdirIfNotExists } from "./file.js";
|
||||
|
||||
export const BILI_HEADER = {
|
||||
@ -204,9 +203,9 @@ async function axelDownloadBFile(url, fullFileName, progressCallback, videoDownl
|
||||
* @param SESSDATA
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
export async function getDownloadUrl(url, SESSDATA) {
|
||||
export async function getDownloadUrl(url, SESSDATA, qn) {
|
||||
const videoId = /video\/[^\?\/ ]+/.exec(url)[0].split("/")[1];
|
||||
const dash = await getBiliVideoWithSession(videoId, "", SESSDATA);
|
||||
const dash = await getBiliVideoWithSession(videoId, "", SESSDATA, qn);
|
||||
// 获取关键信息
|
||||
const { video, audio } = dash;
|
||||
const videoData = video?.[0];
|
||||
@ -327,13 +326,20 @@ export async function getBiliAudio(bvid, cid) {
|
||||
}))
|
||||
}
|
||||
|
||||
export async function getBiliVideoWithSession(bvid, cid, SESSDATA) {
|
||||
export async function getBiliVideoWithSession(bvid, cid, SESSDATA, qn) {
|
||||
if (!cid) {
|
||||
cid = await fetchCID(bvid).catch((err) => console.log(err))
|
||||
cid = await fetchCID(bvid).catch((err) => logger.error(err))
|
||||
}
|
||||
logger.info(`[R插件][BILI请求审计]:${ BILI_PLAY_STREAM
|
||||
.replace("{bvid}", bvid)
|
||||
.replace("{cid}", cid)
|
||||
.replace("{qn}", qn) }`);
|
||||
// 返回一个fetch的promise
|
||||
return (new Promise((resolve, reject) => {
|
||||
fetch(BILI_PLAY_STREAM.replace("{bvid}", bvid).replace("{cid}", cid), {
|
||||
fetch(BILI_PLAY_STREAM
|
||||
.replace("{bvid}", bvid)
|
||||
.replace("{cid}", cid)
|
||||
.replace("{qn}", qn), {
|
||||
headers: {
|
||||
...BILI_HEADER,
|
||||
Cookie: `SESSDATA=${ SESSDATA }`
|
||||
|
Loading…
x
Reference in New Issue
Block a user