UNPKG

@lzwme/m3u8-dl

Version:

Batch download of m3u8 files and convert to mp4

46 lines (45 loc) 2.1 kB
"use strict"; 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;