mirror of
https://github.com/lyz05/danmaku.git
synced 2026-02-02 17:59:53 +08:00
Refactor: 抽象弹幕获取到父类
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { filesize } from "filesize";
|
||||
|
||||
export default class BaseSource {
|
||||
// 构造函数,初始化通用配置
|
||||
constructor() {
|
||||
@@ -26,6 +28,16 @@ export default class BaseSource {
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
memory() {
|
||||
const memoryUsage = process.memoryUsage();
|
||||
console.log("memory", JSON.stringify({
|
||||
rss: filesize(memoryUsage.rss),//RAM 中保存的进程占用的内存部分,包括代码本身、栈、堆。
|
||||
heapTotal: filesize(memoryUsage.heapTotal),//堆中总共申请到的内存量。
|
||||
heapUsed: filesize(memoryUsage.heapUsed),//堆中目前用到的内存量,判断内存泄漏我们主要以这个字段为准。
|
||||
external: filesize(memoryUsage.external),// V8 引擎内部的 C++ 对象占用的内存。
|
||||
}));
|
||||
}
|
||||
|
||||
// 解析传入的视频网址,获取弹幕请求地址(Promise数组)
|
||||
async resolve(url) {
|
||||
@@ -33,7 +45,7 @@ export default class BaseSource {
|
||||
}
|
||||
|
||||
// 请求弹幕资源,返回标准化弹幕内容
|
||||
async parse(promises) {
|
||||
async parse(datas) {
|
||||
throw new Error("Method 'parse()' must be implemented.");
|
||||
}
|
||||
|
||||
@@ -42,7 +54,13 @@ export default class BaseSource {
|
||||
const promises = await this.resolve(url);
|
||||
if (!this.error_msg) {
|
||||
console.log(this.name, "API lens:", promises.length);
|
||||
this.content = await this.parse(promises);
|
||||
this.memory(); //显示内存使用量
|
||||
// 并发请求弹幕数据,等待所有请求完成。
|
||||
let datas = (await Promise.allSettled(promises))
|
||||
.filter(x => x.status === "fulfilled")
|
||||
.map(x => x.value.data);
|
||||
this.memory(); //显示内存使用量
|
||||
this.content = await this.parse(datas);
|
||||
}
|
||||
return {
|
||||
title: this.title,
|
||||
|
||||
@@ -46,11 +46,7 @@ export default class GamerSource extends BaseSource {
|
||||
|
||||
};
|
||||
|
||||
async parse(promises) {
|
||||
//筛选出成功的请求
|
||||
let datas = (await Promise.allSettled(promises))
|
||||
.filter(x => x.status === "fulfilled")
|
||||
.map(x => x.value.data);
|
||||
async parse(datas) {
|
||||
let contents = [];
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
const data = datas[i].data;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import axios from "axios";
|
||||
import BaseSource from "./base.mjs";
|
||||
import pako from "pako";
|
||||
import memory from "../../utils/memory.js";
|
||||
|
||||
export default class IqiyiSource extends BaseSource {
|
||||
constructor() {
|
||||
@@ -91,12 +90,7 @@ export default class IqiyiSource extends BaseSource {
|
||||
}
|
||||
};
|
||||
|
||||
async parse(promises) {
|
||||
memory();
|
||||
let datas = (await Promise.allSettled(promises))
|
||||
.filter(x => x.status === "fulfilled")
|
||||
.map(x => x.value.data);
|
||||
memory();
|
||||
async parse(datas) {
|
||||
let contents = [];
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
const data = datas[i];
|
||||
@@ -118,6 +112,5 @@ export default class IqiyiSource extends BaseSource {
|
||||
// m.work(m.example_urls[0])
|
||||
// .then(() => {
|
||||
// console.log(m.title);
|
||||
// memory();
|
||||
// });
|
||||
// }
|
||||
@@ -38,11 +38,8 @@ export default class MgtvSource extends BaseSource {
|
||||
return promises;
|
||||
}
|
||||
|
||||
async parse(promises) {
|
||||
async parse(datas) {
|
||||
let contents = [];
|
||||
const results = await Promise.allSettled(promises);
|
||||
let datas = results.filter(result => result.status === 'fulfilled')
|
||||
.map(result => result.value.data);
|
||||
for (const data of datas) {
|
||||
if (data.data.items === null)
|
||||
continue;
|
||||
|
||||
@@ -48,12 +48,8 @@ export default class TencentvideoSource extends BaseSource {
|
||||
return promises;
|
||||
}
|
||||
|
||||
async parse(promises) {
|
||||
async parse(datas) {
|
||||
let contents = [];
|
||||
const results = await Promise.allSettled(promises);
|
||||
let datas = results.filter(result => result.status === 'fulfilled')
|
||||
.map(result => result.value.data);
|
||||
|
||||
for (const data of datas) {
|
||||
for (const item of data.barrage_list) {
|
||||
const content = JSON.parse(JSON.stringify(this.content_template));
|
||||
|
||||
@@ -130,12 +130,8 @@ export default class YoukuSource extends BaseSource {
|
||||
return promises;
|
||||
}
|
||||
|
||||
async parse(promises) {
|
||||
async parse(datas) {
|
||||
let contents = [];
|
||||
const results = await Promise.allSettled(promises);
|
||||
let datas = results.filter(result => result.status === 'fulfilled')
|
||||
.map(result => result.value.data);
|
||||
|
||||
for (const res of datas) {
|
||||
const result = JSON.parse(res.data.result);
|
||||
if (result.code === '-1') {
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
import express from "express";
|
||||
import axios from "axios";
|
||||
import { createSourceList } from "./sources.mjs";
|
||||
import memory from "../utils/memory.js";
|
||||
import db from "../utils/db.js";
|
||||
import { inflateRawSync } from "zlib";
|
||||
|
||||
|
||||
const router = express.Router();
|
||||
const list = createSourceList();
|
||||
@@ -48,7 +45,7 @@ async function build_response(url, req) {
|
||||
try {
|
||||
ret = await fc.work(url);
|
||||
} catch (e) {
|
||||
console.log("全局错误捕获,详情查阅数据库" + e.message);
|
||||
console.log("全局错误捕获,详情查阅数据库", e);
|
||||
let err = JSON.stringify(e, Object.getOwnPropertyNames(e));
|
||||
db.errorInsert({
|
||||
ip: req.ip,
|
||||
@@ -64,7 +61,6 @@ async function resolve(req, res) {
|
||||
const url = req.query.url;
|
||||
const download = (req.query.download === "on");
|
||||
const ret = await build_response(url, req);
|
||||
memory(); //显示内存使用量
|
||||
if (ret.msg !== "ok") {
|
||||
res.status(403).send(ret.msg);
|
||||
return;
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
const {filesize} = require("filesize");
|
||||
|
||||
const print = function () {
|
||||
const memoryUsage = process.memoryUsage();
|
||||
|
||||
console.log("memory", JSON.stringify({
|
||||
rss: filesize(memoryUsage.rss),//RAM 中保存的进程占用的内存部分,包括代码本身、栈、堆。
|
||||
heapTotal: filesize(memoryUsage.heapTotal),//堆中总共申请到的内存量。
|
||||
heapUsed: filesize(memoryUsage.heapUsed),//堆中目前用到的内存量,判断内存泄漏我们主要以这个字段为准。
|
||||
external: filesize(memoryUsage.external),// V8 引擎内部的 C++ 对象占用的内存。
|
||||
}));
|
||||
};
|
||||
|
||||
module.exports = print;
|
||||
Reference in New Issue
Block a user