|
|
@@ -2,214 +2,212 @@
|
|
|
* 每天运行一次,生成站点地图
|
|
|
*/
|
|
|
|
|
|
-const fs = require('fs');
|
|
|
-const datefns = require('date-fns');
|
|
|
-const models = require('../../models');
|
|
|
+const fs = require("fs");
|
|
|
+const datefns = require("date-fns");
|
|
|
+const models = require("../../models");
|
|
|
|
|
|
-const sitemapPath = __dirname + '/../../dist/sitemap.xml';
|
|
|
-const sitemapTempPath = __dirname + '/../../dist/sitemap.xml.temp';
|
|
|
+const sitemapPath = __dirname + "/../../dist/sitemap.xml";
|
|
|
+const sitemapTempPath = __dirname + "/../../dist/sitemap.xml.temp";
|
|
|
|
|
|
// 生成站点地图
|
|
|
async function generateSitemap() {
|
|
|
let commonXml = [
|
|
|
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
|
// '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
|
|
|
- '<urlset',
|
|
|
+ "<urlset",
|
|
|
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
|
|
|
' xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.w3.org/1999/xhtml http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"',
|
|
|
' xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"',
|
|
|
' xmlns:xhtml="http://www.w3.org/1999/xhtml"',
|
|
|
- '>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/coloring-page-gallery</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/coloring-page-albums</loc>',
|
|
|
+ ">",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/coloring-page-gallery</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/coloring-page-albums</loc>",
|
|
|
` <lastmod>2025-07-22</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/video-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/mandala-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/zentangle-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/zen-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/flower-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/cat-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/butterfly-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/architecture-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/simple-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/girl-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/fantasy-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/christmas-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/patterns-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/peacock-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/dragon-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/unicorn-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/food-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/how-to-color-online</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/how-to-color-mandala-coloring-page</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/benefit-of-coloring-pages</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/choose-the-right-coloring-tools</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/color-combinations-guide</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/tips-tricks/coloring-techniques-for-beginners</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/app</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/contact</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/about</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/faq</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/privacy-policy</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ' <url>',
|
|
|
- ' <loc>https://art.pcoloring.com/terms-of-service</loc>',
|
|
|
- ` <lastmod>2025-07-05</lastmod>`,
|
|
|
- ' </url>',
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/video-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/mandala-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/zentangle-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/zen-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/flower-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/cat-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/butterfly-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/architecture-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/simple-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/girl-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/fantasy-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/christmas-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/patterns-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/peacock-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/dragon-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/unicorn-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/food-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/how-to-color-online</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/how-to-color-mandala-coloring-page</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/benefit-of-coloring-pages</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/choose-the-right-coloring-tools</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/color-combinations-guide</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/tips-tricks/coloring-techniques-for-beginners</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/app</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/contact</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/about</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/faq</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/privacy-policy</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ " <url>",
|
|
|
+ " <loc>https://art.pcoloring.com/terms-of-service</loc>",
|
|
|
+ ` <lastmod>2026-03-02</lastmod>`,
|
|
|
+ " </url>",
|
|
|
];
|
|
|
|
|
|
// albums
|
|
|
let albumsXml = [];
|
|
|
- let albums = await models.ArtAlbum
|
|
|
- .find({ pid: 'art', enabled: true })
|
|
|
- .sort({ order: 'asc' })
|
|
|
- .select('_id timeLastModify')
|
|
|
+ let albums = await models.ArtAlbum.find({ pid: "art", enabled: true })
|
|
|
+ .sort({ order: "asc" })
|
|
|
+ .select("_id timeLastModify")
|
|
|
.lean()
|
|
|
.exec();
|
|
|
- albums.forEach(e => {
|
|
|
+ albums.forEach((e) => {
|
|
|
albumsXml = albumsXml.concat([
|
|
|
- ' <url>',
|
|
|
+ " <url>",
|
|
|
` <loc>https://art.pcoloring.com/coloring-page-album/${e._id}</loc>`,
|
|
|
- ` <lastmod>${datefns.format(e.timeLastModify, 'yyyy-MM-dd')}</lastmod>`,
|
|
|
- ' </url>',
|
|
|
- ])
|
|
|
+ ` <lastmod>${datefns.format(e.timeLastModify, "yyyy-MM-dd")}</lastmod>`,
|
|
|
+ " </url>",
|
|
|
+ ]);
|
|
|
});
|
|
|
|
|
|
// details
|
|
|
let detailsXml = [];
|
|
|
- const cursor = await models.Art
|
|
|
- .find({ status: 9000 })
|
|
|
- .select('name title publishTime')
|
|
|
- .sort({ publishTime: -1 }).cursor(); // 使用cursor,避免一次查询太多记录内存受不了
|
|
|
+ const cursor = await models.Art.find({ status: 9000 })
|
|
|
+ .select("name title publishTime")
|
|
|
+ .sort({ publishTime: -1 })
|
|
|
+ .cursor(); // 使用cursor,避免一次查询太多记录内存受不了
|
|
|
// 遍历游标中的每个文档
|
|
|
for await (const doc of cursor) {
|
|
|
detailsXml = detailsXml.concat([
|
|
|
- ' <url>',
|
|
|
+ " <url>",
|
|
|
` <loc>https://art.pcoloring.com/coloring-page/${doc._id}</loc>`,
|
|
|
- ` <lastmod>${datefns.format(doc.publishTime, 'yyyy-MM-dd')}</lastmod>`,
|
|
|
- ' </url>',
|
|
|
+ ` <lastmod>${datefns.format(doc.publishTime, "yyyy-MM-dd")}</lastmod>`,
|
|
|
+ " </url>",
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
- let endXml = ['</urlset>'];
|
|
|
+ let endXml = ["</urlset>"];
|
|
|
|
|
|
let sitemapXml = [...commonXml, ...albumsXml, ...detailsXml, ...endXml];
|
|
|
|
|
|
- let sitemapXmlStr = sitemapXml.join('\n');
|
|
|
+ let sitemapXmlStr = sitemapXml.join("\n");
|
|
|
|
|
|
- fs.writeFileSync(sitemapTempPath, sitemapXmlStr); // 先写入临时文件
|
|
|
+ fs.writeFileSync(sitemapTempPath, sitemapXmlStr); // 先写入临时文件
|
|
|
fs.renameSync(sitemapTempPath, sitemapPath); // 再重命名
|
|
|
|
|
|
- console.log('生成sitemap成功');
|
|
|
+ console.log("生成sitemap成功");
|
|
|
}
|
|
|
|
|
|
function run() {
|
|
|
generateSitemap();
|
|
|
}
|
|
|
|
|
|
-module.exports = { run }
|
|
|
-
|
|
|
+module.exports = { run };
|
|
|
|
|
|
if (require.main == module) {
|
|
|
run();
|
|
|
-}
|
|
|
+}
|