guoziyun il y a 11 mois
Parent
commit
e34160ec39
4 fichiers modifiés avec 129 ajouts et 105 suppressions
  1. 16 9
      views/v2/album.ejs
  2. 26 13
      views/v2/detail.ejs
  3. 28 32
      views/v2/play.ejs
  4. 59 51
      views/v2/video-coloring-page.ejs

+ 16 - 9
views/v2/album.ejs

@@ -5,7 +5,9 @@
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="icon" href="/assets/icon/favicon.ico" type="image/x-icon">
-  <title><%= title %></title>
+  <title>
+    <%= title %>
+  </title>
 
   <meta name="description" content="<%= description %>">
   <meta property="og:title" content="<%= title %>">
@@ -23,12 +25,12 @@
   <meta property="al:ios:app_name" content="Art Number Coloring Book" /> <!-- **iOS 应用名称** -->
 
   <meta property="al:android:package" content="com.pcoloring.art.puzzle.color.by.number" /> <!-- **Android 包名** -->
-  <meta property="al:android:url" content="<%= applink %>>" />
+  <meta property="al:android:url" content="<%= applink %>" />
   <!-- ** Universal Link 路径** -->
   <meta property="al:android:app_name" content="Art Number Coloring Book" /> <!-- **Android 应用名称** -->
 
   <meta name="apple-itunes-app" content="app-id=1575480118">
-  
+
 
   <link rel="stylesheet" href="/stylesheets/v2/styles.css">
   <style>
@@ -230,13 +232,18 @@
         <a href="/">Home</a> &gt; <a href="/coloring-page-albums">Coloring Pages Albums</a> &gt; <%= data.title%>
       </div>
       <section>
-        <h1><%= data.title%></h1>
-        <h4 style="margin-bottom: 40px;">By Art Number Coloring / <%=data.timeCreate%></h4>
+        <h1>
+          <%= data.title%>
+        </h1>
+        <h4 style="margin-bottom: 40px;">By Art Number Coloring / <%=data.timeCreate%>
+        </h4>
         <div class="poster-image">
           <img src="<%= data.cover %>" alt="<%= data.title%>">
         </div>
 
-        <p><%= data.slogon %></p>
+        <p>
+          <%= data.slogon %>
+        </p>
       </section>
 
       <section>
@@ -289,13 +296,13 @@
 
       <%- include('tips-get-use-of-our-coloring-pages') %>
 
-      <%- include('comment') %>
+        <%- include('comment') %>
     </main>
 
     <%- include('footer') %>
 
-    <script src="/scripts/script.js"></script>
-    <script src="/scripts/progress2.js"></script>
+      <script src="/scripts/script.js"></script>
+      <script src="/scripts/progress2.js"></script>
 
 </body>
 

+ 26 - 13
views/v2/detail.ejs

@@ -5,8 +5,10 @@
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="icon" href="/assets/icon/favicon.ico" type="image/x-icon">
-  <title><%= title %></title>
-  
+  <title>
+    <%= title %>
+  </title>
+
   <meta name="description" content="<%= description %>">
   <meta property="og:title" content="<%= title %>">
   <meta property="og:description" content="<%= description %>">
@@ -23,7 +25,7 @@
   <meta property="al:ios:app_name" content="Art Number Coloring Book" /> <!-- **iOS 应用名称** -->
 
   <meta property="al:android:package" content="com.pcoloring.art.puzzle.color.by.number" /> <!-- **Android 包名** -->
-  <meta property="al:android:url" content="<%= applink %>>" />
+  <meta property="al:android:url" content="<%= applink %>" />
   <!-- ** Universal Link 路径** -->
   <meta property="al:android:app_name" content="Art Number Coloring Book" /> <!-- **Android 应用名称** -->
 
@@ -266,7 +268,7 @@
     }
   </script>
 
-  
+
   <!-- <script>
     const baseUniversalLink = 'https://art.pcoloring.com';
     const currentPageLink = baseUniversalLink + window.location.pathname + window.location.search;
@@ -349,7 +351,9 @@
 
         <div class="tags">
           <% detail.tags.forEach(tag=> { %>
-            <a href="/coloring-page-gallery?category=<%= tag %>"><span class="detail-tag"><%= tag %></span></a>
+            <a href="/coloring-page-gallery?category=<%= tag %>"><span class="detail-tag">
+                <%= tag %>
+              </span></a>
             <% }); %>
         </div>
 
@@ -363,8 +367,7 @@
           <a id="repaintBtn" onclick="onRepaint('<%= detail._id %>')" class="btn" style="display: none;">Repaint</a>
           <a id="reviewBtn" href="/play/<%= detail._id %>" class="btn"
             style="background-color: orange; display: none;">Review</a>
-          <a id="appBtn" class="btn" href="<%= downlink %>"
-            style="background-color: darkolivegreen;">Paint on APP</a>
+          <a id="appBtn" class="btn" href="<%= downlink %>" style="background-color: darkolivegreen;">Paint on APP</a>
           <a href="/download/pdf/page/<%= detail._id %>" class="btn"
             style="background-color: lightseagreen;">Download</a>
           <a id="printBtn" onclick="printImage('<%= detail._id %>')" class="btn"
@@ -397,16 +400,26 @@
                 <a href="<%= item.uri %>"><img src="<%= item.thumb %>" loading="lazy" alt="<%= item.title %>"></a>
               </div>
               <div class="coloring-content">
-                <div class="coloring-title"><%= item.title %></div>
-                <div class="coloring-author">by <a href="/coloring-page-gallery?author=<%= item.user.username %>"><%= item.user.username %></a></div>
+                <div class="coloring-title">
+                  <%= item.title %>
+                </div>
+                <div class="coloring-author">by <a href="/coloring-page-gallery?author=<%= item.user.username %>">
+                    <%= item.user.username %>
+                  </a></div>
                 <div class="coloring-meta">
-                  <div class="date"><%= item.publishTime %></div>
-                  <div class="views"><%= item.totalStartCount %></div>
+                  <div class="date">
+                    <%= item.publishTime %>
+                  </div>
+                  <div class="views">
+                    <%= item.totalStartCount %>
+                  </div>
                 </div>
                 <div class="coloring-tags">
                   <% item.tags.forEach(tag=> { %>
-                    <a href="/coloring-page-gallery?category=<%= tag %>"><span class="tag" data-tag="<%= tag %>"><%= tag %></span></a>
-                  <% }); %>
+                    <a href="/coloring-page-gallery?category=<%= tag %>"><span class="tag" data-tag="<%= tag %>">
+                        <%= tag %>
+                      </span></a>
+                    <% }); %>
                 </div>
               </div>
             </div>

+ 28 - 32
views/v2/play.ejs

@@ -23,7 +23,7 @@
   <meta property="al:ios:app_name" content="Art Number Coloring Book" /> <!-- **iOS 应用名称** -->
 
   <meta property="al:android:package" content="com.pcoloring.art.puzzle.color.by.number" /> <!-- **Android 包名** -->
-  <meta property="al:android:url" content="<%= applink %>>" />
+  <meta property="al:android:url" content="<%= applink %>" />
   <!-- ** Universal Link 路径** -->
   <meta property="al:android:app_name" content="Art Number Coloring Book" /> <!-- **Android 应用名称** -->
 
@@ -32,7 +32,7 @@
   <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
   <link rel="modulepreload" crossorigin href="/assets/WorkLayer-5uUyxw6h.js">
   <link rel="stylesheet" crossorigin href="/assets/main-BVTiTYwv.css">
-  
+
   <script type="text/javascript"
     src="https://platform-api.sharethis.com/js/sharethis.js#property=67e0d66a54a3d000192a4615&product=inline-share-buttons&source=platform"
     async="async"></script>
@@ -198,13 +198,9 @@
           <span style="margin-top: 5px;">Download</span>
         </div>
       </a>
-      <div id="finish-share" class="tools-btn st-custom-button"
-        data-network="sharethis"
-        data-url="<%= sharePageUrl %>"
+      <div id="finish-share" class="tools-btn st-custom-button" data-network="sharethis" data-url="<%= sharePageUrl %>"
         data-title="Come experience this artwork in the Art Number Coloring App!"
-        data-description="My latest coloring artwork, waiting for you to play!"
-        data-services="facebook"
-        >
+        data-description="My latest coloring artwork, waiting for you to play!" data-services="facebook">
         <img class="btn-img"
           src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAwFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+ZmZn9/f2goKCdnZ319fX5+fny8vLc3NywsLDZ2dmlpaW7u7uoqKjV1dXm5ubFxcXu7u7g4ODR0dHCwsK+vr62trbj4+PLy8utra3q6uqysrKqqqqioqKP/bhpAAAAInRSTlMA7Po2BsZV35ljSSkcE8L17+fi0su7ubKspaKLe2tLQC0Brj0GYQAABFdJREFUaN601tl6okAQBeACAXWMxn03mgMo7vsSo5n3f6uZzw6fCtJi0/xXenXooqsKepnWM9rNql5KKqqqJEt6tdk2ehrFK9OpJ/FQst7JUDyy6UYBXIVGOkuSaUZNRQhqzZBZ9UQqj9DyqQTJ0a3gRZUuRfdHhwD9T9QilyGoHKXg2RQiSIle8c+0gkiU9CcJeMshstwbvexDgQTKB71Ga0GSlvZSmXVIo79Q7kwREhUzoZtXgVRKIuSseodk76HmmKFCOtUIcV4VMVCfnjnxjli8J4groyAmSobbv0XEpsjpZ01HjHSNgrQQq1bgXkDMPgJesIKYKW8P934Osct9kl8aUay352nf/tmPHPCkySerQNxwb7r+LiwEU7LklYK4jW3eOA8QLOUblRA3Me/Necne0VmGsKXpNeZUu+zZSRBmzU2fLYLd7ykdwrYms1o6w9E3+207CJSjG12IY1n2iR1/xZInCNalqwqEDVnSCIw1vvydIVhFzpX+ugRN4dqwiw2OhJQennhOOLj874Ph97KWByA32AZHXiPGAI/8UsMgpoYIBvfX2Pp2K8BRY7lZFVGM2Utdstyde8l51KyEfYijyey+BuvJ3DdAONuxgQjWM/OBBfgal+ACGNE97He2wFeg/zIQNdyZD/04eCZDRB2IGez65kMHB091iKj+/GSbxXZ0su5jVzex9upa8ukEIdSJKAkua+Guuv0QLud4E9tfDYDh4vBjT8e7jYUwkkQauJZT82pl/cba97ECNOqBZ+H5pnFY7NVuACE9/qAemaY3eXsby6ovwqA2gq3997YfOZZpUxPBDiYzn63GvmeYrRFBk6oIdGIJ9ujSUwdJsUyV9315ZMV1I26SDydEpFMJTODCO+LXwK32eYnISrz5wVr45HmQ+RISJElBIHZCB669u/IkUEiFD//EI8ig/mPO3FYTCIIgirpGTRAScg8JgYqyMZcHQYX1+v9/JczLKA0zTB9B6wdW3O3uqlPmwdl33OgUapu/OvtVj+cjcbXsx5Wf4/8//uheYpwSm2s7E9R9aoHEXW31C4eqa1Zm4jqdclc/mSORvsfTDbrFUW/2LGYcSLM6uJHLbzn1nk1s1nP9ROgRZ6su81y6ylif6DKno4Pfsvs6nq16YVxm1vpUKpN1mdtZMy711aqCvXWoDpTFnSR6wdD7NAlxzZed9AIijLQOs+VJi/pAoS3OVmk+1g2MqWG2yomA7ngw18TBQPQKUAShPhoA+AI4l9pDgJsA2dPz2QAbQIqA3uq2AhAV8Gr1ATYGhF7qAFAOOgk9gmoAtDDSJyhDQO+kLqp/3E2bdM0KL2e3KD3gis/VpkodUGoS9UGNS9QaguKaaHBJVf2+ezsgAACEYRjm3zUagA3a+0ie4AQWx+gDFB65KSMjIqtqQjIqnWthQTKPbIBQOoFNo18Dcw7Cbg9lz+B9V1e4DRrOknKacNztaDdazahl+Uz3rQ8uGhTrMQRabC8AAAAASUVORK5CYII=" />
         <span style="margin-top: 5px;">Share</span>
@@ -220,48 +216,48 @@
 
 
   <script>
-  document.addEventListener('DOMContentLoaded', () => {
-    // MARK: 1. 获取用户 UUID
-    const uuidKey = 'artNumberColoringUserUUID'; // 用于 localStorage 的键名
-    let userUUID = localStorage.getItem(uuidKey);
+    document.addEventListener('DOMContentLoaded', () => {
+      // MARK: 1. 获取用户 UUID
+      const uuidKey = 'artNumberColoringUserUUID'; // 用于 localStorage 的键名
+      let userUUID = localStorage.getItem(uuidKey);
 
-    if (!userUUID) {
+      if (!userUUID) {
         // 如果 localStorage 中没有 UUID,则生成一个新的
         // 确保这里的 UUID 生成逻辑与您在 play 页面中保存 UUID 的逻辑一致
         if (window.crypto && window.crypto.randomUUID) {
-            userUUID = window.crypto.randomUUID();
+          userUUID = window.crypto.randomUUID();
         } else {
-            userUUID = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
-                const r = Math.random() * 16 | 0;
-                const v = c === 'x' ? r : (r & 0x3 | 0x8);
-                return v.toString(16);
-            });
+          userUUID = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+            const r = Math.random() * 16 | 0;
+            const v = c === 'x' ? r : (r & 0x3 | 0x8);
+            return v.toString(16);
+          });
         }
         localStorage.setItem(uuidKey, userUUID); // 存储新生成的 UUID
-    }
+      }
 
-    const sharePageBaseUrl = `https://art.pcoloring.com/share/<%= id %>`;
-    const sharePageUrlWithUUID = `${sharePageBaseUrl}?uuid=${userUUID}`;
+      const sharePageBaseUrl = `https://art.pcoloring.com/share/<%= id %>`;
+      const sharePageUrlWithUUID = `${sharePageBaseUrl}?uuid=${userUUID}`;
 
-    const shareThisContainer = document.querySelector('#finish-share');
-    if (shareThisContainer) {
+      const shareThisContainer = document.querySelector('#finish-share');
+      if (shareThisContainer) {
         shareThisContainer.setAttribute('data-url', sharePageUrlWithUUID);
         // MARK: 2. (重要) 如果 ShareThis 库已经加载,需要调用其 update 方法来刷新
         // ShareThis 库通常会异步加载,所以我们需要确保在它加载完成后再更新
         // 或者在它加载后立即调用 update。
         // 最可靠的方式是监听 ShareThis 的全局对象
         if (window.st && window.st.sharethis && typeof window.st.sharethis.update === 'function') {
-            window.st.sharethis.update();
-            console.log("ShareThis 按钮 URL 已更新并刷新:", sharePageUrlWithUUID);
+          window.st.sharethis.update();
+          console.log("ShareThis 按钮 URL 已更新并刷新:", sharePageUrlWithUUID);
         } else {
-            // 如果 ShareThis 尚未加载,我们可以在这里设置一个监听器,或者依赖它在加载时读取 data-url
-            // 但设置 data-url 属性通常在 ShareThis 初始化时会被读取
-            console.log("ShareThis 按钮 data-url 已设置:", sharePageUrlWithUUID);
+          // 如果 ShareThis 尚未加载,我们可以在这里设置一个监听器,或者依赖它在加载时读取 data-url
+          // 但设置 data-url 属性通常在 ShareThis 初始化时会被读取
+          console.log("ShareThis 按钮 data-url 已设置:", sharePageUrlWithUUID);
         }
-    } else {
+      } else {
         console.error("未找到 ShareThis 分享按钮容器");
-    }
-});
+      }
+    });
 
   </script>
 

+ 59 - 51
views/v2/video-coloring-page.ejs

@@ -5,7 +5,9 @@
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="icon" href="/assets/icon/favicon.ico" type="image/x-icon">
-  <title><%= title %></title>
+  <title>
+    <%= title %>
+  </title>
 
   <meta name="description" content="<%= description %>">
   <meta property="og:title" content="<%= title %>">
@@ -23,12 +25,12 @@
   <meta property="al:ios:app_name" content="Art Number Coloring Book" /> <!-- **iOS 应用名称** -->
 
   <meta property="al:android:package" content="com.pcoloring.art.puzzle.color.by.number" /> <!-- **Android 包名** -->
-  <meta property="al:android:url" content="<%= applink %>>" />
+  <meta property="al:android:url" content="<%= applink %>" />
   <!-- ** Universal Link 路径** -->
   <meta property="al:android:app_name" content="Art Number Coloring Book" /> <!-- **Android 应用名称** -->
 
   <meta name="apple-itunes-app" content="app-id=1575480118">
-  
+
 
   <link rel="stylesheet" href="/stylesheets/v2/styles.css">
   <style>
@@ -62,7 +64,8 @@
       border-radius: 8px;
       overflow: hidden;
       cursor: pointer;
-      aspect-ratio: 1/1; /* 修改为1:1比例 */
+      aspect-ratio: 1/1;
+      /* 修改为1:1比例 */
     }
 
     .video-player video {
@@ -196,7 +199,7 @@
   </style>
 
 
-<script type="application/ld+json">
+  <script type="application/ld+json">
 {
   "@context": "https://schema.org",
   "@type": "VideoObject",
@@ -221,7 +224,7 @@
 }
 </script>
 
-<script type="application/ld+json">
+  <script type="application/ld+json">
 {
   "@context": "https://schema.org",
   "@type": "CollectionPage",
@@ -275,8 +278,11 @@
         <a href="/">Home</a> &gt; <a href="/video-coloring-pages">Video Coloring Pages</a> &gt; <%= title%>
       </div>
       <section>
-        <h1><%= title%></h1>
-        <h4 style="margin-bottom: 40px;">By Art Number Coloring / <%=data.timeCreate%></h4>
+        <h1>
+          <%= title%>
+        </h1>
+        <h4 style="margin-bottom: 40px;">By Art Number Coloring / <%=data.timeCreate%>
+        </h4>
 
 
 
@@ -292,11 +298,13 @@
             <div class="lineart-container">
               <a href="<%= item.uri %>"><img src="<%= item.thumb %>" alt="<%= item.title %>"></a>
               <div class="lineart-overlay">
-                <div class="lineart-title"><%= item.title %></div>
+                <div class="lineart-title">
+                  <%= item.title %>
+                </div>
                 <div class="lineart-desc">Click to download or color online along with the video</div>
               </div>
             </div>
-          <% }); %>
+            <% }); %>
         </div>
 
       </section>
@@ -307,49 +315,49 @@
 
     <%- include('footer') %>
 
-    <script src="/scripts/script.js"></script>
-    <script src="/scripts/progress2.js"></script>
-
-    <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
-    <script>
-      const storyVideo = document.getElementById('storyVideo');
-      const video = storyVideo.querySelector('video');
-      const playButton = storyVideo.querySelector('.play-button');
-      // 视频播放控制
-      if (Hls.isSupported()) {
-        var hls = new Hls();
-        var url = '<%= data.url %>';
-        hls.loadSource(url);
-        hls.attachMedia(video);
-      } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
-        // Safari 不支持 hls.js 但原生支持 HLS
-        video.src = '<%= data.url %>';
-      } else {
-        // 浏览器不支持 HLS
-        console.error('Your browser does not support HLS.');
-      }
-      
-      playButton.addEventListener('click', () => {
+      <script src="/scripts/script.js"></script>
+      <script src="/scripts/progress2.js"></script>
+
+      <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
+      <script>
+        const storyVideo = document.getElementById('storyVideo');
+        const video = storyVideo.querySelector('video');
+        const playButton = storyVideo.querySelector('.play-button');
+        // 视频播放控制
+        if (Hls.isSupported()) {
+          var hls = new Hls();
+          var url = '<%= data.url %>';
+          hls.loadSource(url);
+          hls.attachMedia(video);
+        } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
+          // Safari 不支持 hls.js 但原生支持 HLS
+          video.src = '<%= data.url %>';
+        } else {
+          // 浏览器不支持 HLS
+          console.error('Your browser does not support HLS.');
+        }
+
+        playButton.addEventListener('click', () => {
           video.play();
           playButton.style.display = 'none';
-      });
-
-      // 视频播放时隐藏play button
-      video.addEventListener('play', () => {
-        playButton.style.display = 'none';
-      });
-
-      // 视频暂停时显示播放按钮
-      video.addEventListener('pause', () => {
-        playButton.style.display = 'flex';
-      });
-      
-      // 视频结束时显示播放按钮
-      video.addEventListener('ended', () => {
-        playButton.style.display = 'flex';
-      });
-      
-  </script>
+        });
+
+        // 视频播放时隐藏play button
+        video.addEventListener('play', () => {
+          playButton.style.display = 'none';
+        });
+
+        // 视频暂停时显示播放按钮
+        video.addEventListener('pause', () => {
+          playButton.style.display = 'flex';
+        });
+
+        // 视频结束时显示播放按钮
+        video.addEventListener('ended', () => {
+          playButton.style.display = 'flex';
+        });
+
+      </script>
 
 </body>