temp-unit-image
This commit is contained in:
parent
15fc953f75
commit
a7d0132dcc
|
|
@ -2555,4 +2555,6 @@ router.get('/51voa/:channel', require('./routes/51voa/channel'));
|
|||
// zhuixinfan
|
||||
router.get('/zhuixinfan/list', require('./routes/zhuixinfan/list'));
|
||||
|
||||
//unit-image
|
||||
router.get('/unit-image', require('./routes/unit-image/films'));
|
||||
module.exports = router;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
const got = require('@/utils/got');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: `https://www.unit-image.fr/data/en/wp-json/unitimage/v1/films`,
|
||||
});
|
||||
const data = response.data.slice(0, 5);
|
||||
const list = data.content.posts;
|
||||
const articledata = await Promise.all(
|
||||
list.map(async (item) => {
|
||||
const url = `https://www.unit-image.fr/data/en/wp-json/unitimage/v1${item.href}`; // 获取所有文章URL
|
||||
const cache = await ctx.cache.get(url); // 这里是不是单单缓存 URL?
|
||||
if (cache) {
|
||||
return Promise.resolve(JSON.phrase(cache)); // 如果有 URL 的缓存,则返回 JSON.phrase 的数据
|
||||
}
|
||||
|
||||
const response2 = await got({
|
||||
method: 'get',
|
||||
url,
|
||||
});
|
||||
// data2为每文章数据
|
||||
const data2 = response2.data;
|
||||
|
||||
const infosdata = data2.infos || []; // 文章数据返回为data
|
||||
const slideshowdata = data2.caseStudy.slideshow || [];
|
||||
const storyboarddata = data2.caseStudy.storyboard || [];
|
||||
const bhtsdata = data2.behindTheScene[0] || {};
|
||||
const compare0 = data2.caseStudy.compare[0] || {};
|
||||
const compare1 = data2.caseStudy.compare[1] || {};
|
||||
const infos = infosdata.map((item) => ({
|
||||
infolabel: item.label, // 项目信息
|
||||
infovalue: item.value,
|
||||
}));
|
||||
const images = slideshowdata.map((item) => ({
|
||||
image: item.img, // 图片组
|
||||
}));
|
||||
const storyboard = storyboarddata.map((item) => ({
|
||||
storyboard0: item.items[0].img, // 故事板上
|
||||
storyboard1: item.items[1].img, // 故事板下
|
||||
}));
|
||||
const video = {
|
||||
// 主视频
|
||||
mp4: data2.video.mp4.url,
|
||||
youtube: data2.video.youtube,
|
||||
vimeo: data2.video.vimeo,
|
||||
};
|
||||
const compare = {
|
||||
// 对比视频 感谢@piggy_usera 教我用 ["值"] 选择带有横杠的值!但是不能一开始就const不知道为什么。
|
||||
compare0: compare0['video-mp4'],
|
||||
compare1: compare1['video-mp4'],
|
||||
};
|
||||
const bhts = {
|
||||
// Behind The Scene
|
||||
mp4: bhtsdata['video-mp4'],
|
||||
youtube: bhtsdata['youtube-id'],
|
||||
vimeo: bhtsdata['vimeo-id'],
|
||||
};
|
||||
|
||||
const single = {
|
||||
infos,
|
||||
images,
|
||||
storyboard,
|
||||
video,
|
||||
compare,
|
||||
bhts,
|
||||
};
|
||||
ctx.cache.set(url, JSON.stringify(single)); // 设定缓存为序列化文章数据
|
||||
return Promise.resolve(single); // 返回 articledata 为序列化文章数据。
|
||||
})
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
// 源标题
|
||||
title: `Unit Image Films`,
|
||||
// 源链接
|
||||
link: `https://www.unit-image.fr/films`,
|
||||
// 源说明
|
||||
description: `Unit Images Films`,
|
||||
// 遍历此前获取的数据
|
||||
item: list.map((item, index) => {
|
||||
let content = '';
|
||||
const videostyle = `width="640" height="360"`;
|
||||
const imgstyle = `style="max-width: 650px; height: auto; object-fit: contain; flex: 0 0 auto;"`;
|
||||
|
||||
// 运用index数组ID来匹配文章ID!参考来自instagram!
|
||||
// 项目信息
|
||||
if (articledata[index].infos) {
|
||||
for (let i = 0; i < articledata[index].infos.length; i++) {
|
||||
content += `${articledata[index].infos[i].infolabel}:${articledata[index].infos[i].infovalue}<br>`;
|
||||
}
|
||||
}
|
||||
// 不同源主视频
|
||||
if (articledata[index].video.mp4) {
|
||||
content += `<video width="100%" controls="controls" ${videostyle} source src="${articledata[index].video.mp4}" type="video/mp4"></video><br>`;
|
||||
} else if (articledata[index].video.vimeo) {
|
||||
content += `<iframe ${videostyle} src='https://player.vimeo.com/video/${articledata[index].video.vimeo}' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>`;
|
||||
} else if (articledata[index].video.youtube) {
|
||||
content += `<iframe id="ytplayer" type="text/html" ${videostyle} src='https://youtube.com/embed/${articledata[index].video.youtube}' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>`;
|
||||
}
|
||||
// 不同源幕后视频
|
||||
|
||||
if (articledata[index].bhts.mp4) {
|
||||
content += `Behind The Scene:<br><video width="100%" controls="controls" ${videostyle} source src="${articledata[index].bhts.mp4.url}" type="video/mp4"></video><br>`;
|
||||
} else if (articledata[index].bhts.vimeo) {
|
||||
content += `Behind The Scene:<br><iframe ${videostyle} src='https://player.vimeo.com/video/${articledata[index].bhts.vimeo}' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>`;
|
||||
} else if (articledata[index].bhts.youtube) {
|
||||
content += `Behind The Scene:<br><iframe id="ytplayer" type="text/html" ${videostyle} src='https://youtube.com/embed/${articledata[index].bhts.youtube}' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><br>`;
|
||||
}
|
||||
|
||||
// 项目图片
|
||||
if (articledata[index].images) {
|
||||
for (let p = 0; p < articledata[index].images.length; p++) {
|
||||
content += `<img ${imgstyle} src="${articledata[index].images[p].image}"><br>`;
|
||||
}
|
||||
}
|
||||
// 故事板
|
||||
if (articledata[index].storyboard.length > 0) {
|
||||
let storyboard = '';
|
||||
for (let s = 0; s < articledata[index].storyboard.length; s++) {
|
||||
storyboard += `<tr><td><img ${imgstyle} src="${articledata[index].storyboard[s].storyboard0}"><td/><td><img ${imgstyle} src="${articledata[index].storyboard[s].storyboard1}"></td></tr>`;
|
||||
}
|
||||
content += `<table><tr><th colspan="2" style="background-color: #333; color: #fff;">Storyboard</th></tr>${storyboard}<table><br>`;
|
||||
}
|
||||
|
||||
// 对比视频
|
||||
if (articledata[index].compare.compare0) {
|
||||
content += `Compare:<br><video width="100%" controls="controls" ${videostyle}><source src="${articledata[index].compare.compare0.url}" type="video/mp4"></video><br><video width="100%" controls="controls" ${videostyle}><source src="${articledata[index].compare.compare1.url}" type="video/mp4"></video><br>`;
|
||||
}
|
||||
return {
|
||||
title: `${item.title}`,
|
||||
description: `${content}`,
|
||||
link: `https://www.unit-image.fr${item.href}`,
|
||||
pubDate: `${item.preview.mp4.date}`,
|
||||
};
|
||||
}),
|
||||
};
|
||||
};
|
||||
// 数据返回样式:http://www.unit-image.fr/data/en/wp-json/unitimage/v1/film/baldurs-gate-3-intro
|
||||
// 非常感谢@xunco @johnson_Flex @lemonplusplus @yeFoenix @piggy_user
|
||||
Loading…
Reference in New Issue