api-interface
Version:
48 lines (47 loc) • 1.8 kB
JavaScript
;
const jsdom_1 = require("jsdom");
const utils_1 = require("../../utils");
module.exports = async (params) => {
const { url, type } = params;
let video_id = '';
const result = {
author: {},
video: {},
redirect: ''
};
if ((0, utils_1.isNumber)(url))
video_id = url;
else {
if (!((0, utils_1.isHttp)(url) && (0, utils_1.isUrl)(url)))
(0, utils_1.throwUrlError)();
const { searchParams } = new URL(url);
const pid = searchParams.get('pid') || '';
video_id = pid;
}
const zuiYouAPI = 'https://share.izuiyou.com/hybrid/share/post?pid=' + video_id;
const { raw } = await (0, utils_1.getRequest)(zuiYouAPI);
const dom = new jsdom_1.JSDOM(raw, { runScripts: 'dangerously' });
const data = dom.window.APP_INITIAL_STATE.sharePost.postDetail.post;
// 无内容
if (!data)
(0, utils_1.throwUrlError)();
// 作者信息
result.author = {};
result.author.name = data.member.name;
result.author.sex = data.member.gender;
result.author.desc = data.member.sign;
result.author.cover = data.member.coverUrls.origin.urls[0];
result.author.avatar = [];
result.author.avatar.push(data.member.avatarUrls.aspectLow.urls[0], data.member.avatarUrls.origin.urls[0]);
// 视频信息
result.video = {};
result.video.title = data.content;
const cover_id = data.imgs[0].id;
result.video.url = data.videos[cover_id].url;
result.video.music = data.videos[cover_id].h265[0].urls[0].url;
result.video.cover = data.videos[cover_id].coverUrls[0];
if (type && result.video.url)
result.redirect = result.video.url;
return result;
};
/* eslint-enable camelcase*/