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 puppeteer from "../../../lib/puppeteer/puppeteer.js";
|
||||||
import {
|
import {
|
||||||
BILI_CDN_SELECT_LIST,
|
BILI_CDN_SELECT_LIST,
|
||||||
BILI_DEFAULT_INTRO_LEN_LIMIT,
|
BILI_DEFAULT_INTRO_LEN_LIMIT, BILI_RESOLUTION_LIST,
|
||||||
COMMON_USER_AGENT,
|
COMMON_USER_AGENT,
|
||||||
DIVIDING_LINE,
|
DIVIDING_LINE,
|
||||||
douyinTypeMap,
|
douyinTypeMap,
|
||||||
@ -998,8 +998,10 @@ export class tools extends plugin {
|
|||||||
}
|
}
|
||||||
// =================默认下载方式=====================
|
// =================默认下载方式=====================
|
||||||
try {
|
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) {
|
if (data.audioUrl != null) {
|
||||||
await this.downBili(tempPath, data.videoUrl, data.audioUrl);
|
await this.downBili(tempPath, data.videoUrl, data.audioUrl);
|
||||||
|
@ -20,7 +20,7 @@ biliDisplaySummary: false # 是否显示哔哩哔哩的总结
|
|||||||
biliUseBBDown: false # 是否使用BBDown,默认不开启,开启后使用强劲的BBDown下载最高画质
|
biliUseBBDown: false # 是否使用BBDown,默认不开启,开启后使用强劲的BBDown下载最高画质
|
||||||
biliCDN: 0 # 哔哩哔哩 CDN,默认为0表示不使用
|
biliCDN: 0 # 哔哩哔哩 CDN,默认为0表示不使用
|
||||||
biliDownloadMethod: 0 # 哔哩哔哩的下载方式:0默认使用原生稳定的下载方式,如果你在乎内存可以使用轻量的wget和axel下载方式,如果在乎性能可以使用Aria2下载
|
biliDownloadMethod: 0 # 哔哩哔哩的下载方式:0默认使用原生稳定的下载方式,如果你在乎内存可以使用轻量的wget和axel下载方式,如果在乎性能可以使用Aria2下载
|
||||||
biliResolution: 1 # 哔哩哔哩的下载画质,0为原画,1为清晰画,2为流畅画(默认为0)
|
biliResolution: 5 # 哔哩哔哩的下载画质,默认480p(因为不用登录),参考 {BILI_RESOLUTION_LIST}
|
||||||
|
|
||||||
useLocalNeteaseAPI: false # 是否使用网易云解析自建API
|
useLocalNeteaseAPI: false # 是否使用网易云解析自建API
|
||||||
useNeteaseSongRequest: false # 是否开启网易云点歌功能
|
useNeteaseSongRequest: false # 是否开启网易云点歌功能
|
||||||
|
@ -184,13 +184,13 @@ export const BILI_DOWNLOAD_METHOD = Object.freeze([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
export const BILI_RESOLUTION_LIST = Object.freeze([
|
export const BILI_RESOLUTION_LIST = Object.freeze([
|
||||||
{ label: '8K 超高清', value: 0 },
|
{ label: '8K 超高清', value: 0, qn: 127 },
|
||||||
{ label: '4K 超清', value: 1 },
|
{ label: '4K 超清', value: 1, qn: 120 },
|
||||||
{ label: '1080P 高码率', value: 2 },
|
{ label: '1080P 高码率', value: 2, qn: 112 },
|
||||||
{ label: '1080P 高清', value: 3 },
|
{ label: '1080P 高清', value: 3, qn: 80 },
|
||||||
{ label: '720P 高清', value: 4 },
|
{ label: '720P 高清', value: 4, qn: 64 },
|
||||||
{ label: '480P 清晰', value: 5 },
|
{ label: '480P 清晰', value: 5, qn: 32 },
|
||||||
{ label: '360P 流畅', value: 6 },
|
{ label: '360P 流畅', value: 6, qn: 16 },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
export const YOUTUBE_GRAPHICS_LIST = Object.freeze([
|
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
|
* https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/video/videostream_url.md
|
||||||
* @type {string}
|
* @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",
|
field: "tools.biliResolution",
|
||||||
label: "bili最高分辨率",
|
label: "bili最高分辨率",
|
||||||
bottomHelpMessage:
|
bottomHelpMessage:
|
||||||
"哔哩哔哩的最高分辨率(目前仅适用于开启BBDown后),默认为1080p,可以自行根据服务器进行调整",
|
"【开不开BBDown都同步】哔哩哔哩的最高分辨率,默认为480p,可以自行根据服务器进行调整",
|
||||||
component: "Select",
|
component: "Select",
|
||||||
componentProps: {
|
componentProps: {
|
||||||
options: BILI_RESOLUTION_LIST,
|
options: BILI_RESOLUTION_LIST,
|
||||||
|
@ -14,7 +14,6 @@ import {
|
|||||||
BILI_SCAN_CODE_GENERATE,
|
BILI_SCAN_CODE_GENERATE,
|
||||||
BILI_VIDEO_INFO
|
BILI_VIDEO_INFO
|
||||||
} from "../constants/tools.js";
|
} from "../constants/tools.js";
|
||||||
import { saveJsonToFile } from "./common.js";
|
|
||||||
import { mkdirIfNotExists } from "./file.js";
|
import { mkdirIfNotExists } from "./file.js";
|
||||||
|
|
||||||
export const BILI_HEADER = {
|
export const BILI_HEADER = {
|
||||||
@ -204,9 +203,9 @@ async function axelDownloadBFile(url, fullFileName, progressCallback, videoDownl
|
|||||||
* @param SESSDATA
|
* @param SESSDATA
|
||||||
* @returns {Promise<any>}
|
* @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 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 { video, audio } = dash;
|
||||||
const videoData = video?.[0];
|
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) {
|
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
|
// 返回一个fetch的promise
|
||||||
return (new Promise((resolve, reject) => {
|
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: {
|
headers: {
|
||||||
...BILI_HEADER,
|
...BILI_HEADER,
|
||||||
Cookie: `SESSDATA=${ SESSDATA }`
|
Cookie: `SESSDATA=${ SESSDATA }`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user