@lzwme/m3u8-dl
Version:
Batch download of m3u8 files and convert to mp4
46 lines (45 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PipixiaParser = void 0;
const utils_js_1 = require("../../lib/utils.js");
const base_parser_1 = require("./base-parser");
class PipixiaParser extends base_parser_1.BaseParser {
static async parse(url) {
try {
const loc = await (0, utils_js_1.getLocation)(url);
if (!loc.includes('/item/'))
return PipixiaParser.error(400, '无效的URL格式');
const idMatch = loc.match(/item\/([^?]*)/);
if (!idMatch?.[1])
return PipixiaParser.error(400, '无法解析视频 ID');
const headers = { referer: 'https://www.pipix.com' };
const furl = `https://h5.pipix.com/bds/cell/cell_h5_comment/?cell_id=${idMatch[1]}&aid=1319&app_name=super`;
const { data } = await utils_js_1.request.get(furl, null, headers);
if (!data)
return PipixiaParser.error(400, '未找到视频数据');
const item = data.data.cell_comments[0].comment_info.item;
const videoUrl = item.video.video_high.url_list[0].url;
if (!videoUrl)
return PipixiaParser.error(201, '未找到视频URL');
return PipixiaParser.success({
referer: headers.referer,
title: item.content,
author: item.author.name,
url: videoUrl,
uid: item.author.uid || '',
avatar: item.author.avatar?.url_list[0].url || '',
like: item.digg_count || 0,
time: item.create_time || 0,
cover: item.cover?.url_list[0].url || '',
music: {
author: item.author?.name || '',
avatar: item.video?.cover_image?.url_list[0].url || '',
},
});
}
catch (error) {
return PipixiaParser.error(500, `解析失败: ${error instanceof Error ? error.message : '未知错误'}`);
}
}
}
exports.PipixiaParser = PipixiaParser;