|
@@ -0,0 +1,64 @@
|
|
|
+const html = require("node-html-parser");
|
|
|
+const axios = require("axios");
|
|
|
+const db = require("../../db.js");
|
|
|
+
|
|
|
+const updatePage = "http://com3d2.jp/update/";
|
|
|
+const changeLogPattern = /\[\s*([^\s\]]+)\s*\]\s*((・.*)\s+)+/gim;
|
|
|
+
|
|
|
+function getVersionNumber(verStr) {
|
|
|
+ let verPart = verStr.replace(/[\.\s]/g, "");
|
|
|
+ if(verPart.length < 4)
|
|
|
+ verPart += "0";
|
|
|
+ return +verPart;
|
|
|
+}
|
|
|
+
|
|
|
+async function aggregate() {
|
|
|
+ let lastVersion = db.get("lastCOMJPVersion").value();
|
|
|
+
|
|
|
+ try {
|
|
|
+ let mainPageRes = await axios.get(updatePage);
|
|
|
+
|
|
|
+ if(mainPageRes.status != 200)
|
|
|
+ return [];
|
|
|
+
|
|
|
+ let rootNode = html.parse(mainPageRes.data, {
|
|
|
+ pre: true,
|
|
|
+ script: false,
|
|
|
+ style: false
|
|
|
+ });
|
|
|
+
|
|
|
+ let readme = rootNode.querySelector("div.readme");
|
|
|
+
|
|
|
+ if(!readme) {
|
|
|
+ console.log("[COM3D2 JP UPDATE] Failed to find listing!");
|
|
|
+ }
|
|
|
+
|
|
|
+ let latestVersionChangelog = changeLogPattern.exec(readme.text);
|
|
|
+
|
|
|
+ if(!latestVersionChangelog)
|
|
|
+ return [];
|
|
|
+
|
|
|
+ let version = getVersionNumber(latestVersionChangelog[1]);
|
|
|
+ let text = latestVersionChangelog[0];
|
|
|
+
|
|
|
+ if(version <= lastVersion)
|
|
|
+ return [];
|
|
|
+
|
|
|
+ db.set("lastCOMJPVersion", version).write();
|
|
|
+
|
|
|
+ return [{
|
|
|
+ id: `com3d2-jp-updates-${version}`,
|
|
|
+ link: updatePage,
|
|
|
+ title: latestVersionChangelog[1],
|
|
|
+ author: "COM3D2 UPDATE",
|
|
|
+ contents: text,
|
|
|
+ embedColor: 0xcccccc
|
|
|
+ }];
|
|
|
+ } catch(err) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ aggregate: aggregate
|
|
|
+};
|