diff --git a/lib/router.js b/lib/router.js
old mode 100644
new mode 100755
index 29d440f8c..81863d0db
--- a/lib/router.js
+++ b/lib/router.js
@@ -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;
diff --git a/lib/routes/unit-image/films.js b/lib/routes/unit-image/films.js
new file mode 100755
index 000000000..ef309c7b4
--- /dev/null
+++ b/lib/routes/unit-image/films.js
@@ -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}
`;
+ }
+ }
+ // 不同源主视频
+ if (articledata[index].video.mp4) {
+ content += `
`;
+ } else if (articledata[index].video.vimeo) {
+ content += `
`;
+ } else if (articledata[index].video.youtube) {
+ content += `
`;
+ }
+ // 不同源幕后视频
+
+ if (articledata[index].bhts.mp4) {
+ content += `Behind The Scene:
`;
+ } else if (articledata[index].bhts.vimeo) {
+ content += `Behind The Scene:
`;
+ } else if (articledata[index].bhts.youtube) {
+ content += `Behind The Scene:
`;
+ }
+
+ // 项目图片
+ if (articledata[index].images) {
+ for (let p = 0; p < articledata[index].images.length; p++) {
+ content += `
`;
+ }
+ }
+ // 故事板
+ if (articledata[index].storyboard.length > 0) {
+ let storyboard = '';
+ for (let s = 0; s < articledata[index].storyboard.length; s++) {
+ storyboard += `
| Storyboard |
|---|