|
@@ -300,12 +300,17 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
const titleElement = this.doc.querySelector("title");
|
|
const titleElement = this.doc.querySelector("title");
|
|
|
- if (titleElement) {
|
|
|
|
|
- this.options.title = titleElement.textContent.trim();
|
|
|
|
|
- } else {
|
|
|
|
|
- this.options.title = "";
|
|
|
|
|
- }
|
|
|
|
|
- const matchTitle = this.baseURI.match(/([^/]*)\/?(\.html?.*)$/) || this.baseURI.match(/\/\/([^/]*)\/?$/);
|
|
|
|
|
|
|
+ this.options.title = titleElement ? titleElement.textContent.trim() : "";
|
|
|
|
|
+ this.options.info = {};
|
|
|
|
|
+ const descriptionElement = this.doc.querySelector("meta[name=description]");
|
|
|
|
|
+ this.options.info.description = descriptionElement ? descriptionElement.content.trim() : "";
|
|
|
|
|
+ this.options.info.lang = this.doc.documentElement.lang;
|
|
|
|
|
+ const authorElement = this.doc.querySelector("meta[name=author]");
|
|
|
|
|
+ this.options.info.author = authorElement ? authorElement.content.trim() : "";
|
|
|
|
|
+ const creatorElement = this.doc.querySelector("meta[name=creator]");
|
|
|
|
|
+ this.options.info.creator = creatorElement ? creatorElement.content.trim() : "";
|
|
|
|
|
+ const publisherElement = this.doc.querySelector("meta[name=publisher]");
|
|
|
|
|
+ this.options.info.publisher = creatorElement ? publisherElement.content.trim() : "";
|
|
|
const url = new URL(this.baseURI);
|
|
const url = new URL(this.baseURI);
|
|
|
let size;
|
|
let size;
|
|
|
if (this.options.displayStats) {
|
|
if (this.options.displayStats) {
|
|
@@ -318,6 +323,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
this.stats.add("discarded", "HTML bytes", size - contentSize);
|
|
this.stats.add("discarded", "HTML bytes", size - contentSize);
|
|
|
}
|
|
}
|
|
|
const filename = await DomProcessorHelper.getFilename(this.options, content);
|
|
const filename = await DomProcessorHelper.getFilename(this.options, content);
|
|
|
|
|
+ const matchTitle = this.baseURI.match(/([^/]*)\/?(\.html?.*)$/) || this.baseURI.match(/\/\/([^/]*)\/?$/);
|
|
|
return {
|
|
return {
|
|
|
stats: this.stats.data,
|
|
stats: this.stats.data,
|
|
|
title: this.options.title || (this.baseURI && matchTitle ? matchTitle[1] : (url.hostname ? url.hostname : "")),
|
|
title: this.options.title || (this.baseURI && matchTitle ? matchTitle[1] : (url.hostname ? url.hostname : "")),
|
|
@@ -787,7 +793,12 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
let filename = options.filenameTemplate;
|
|
let filename = options.filenameTemplate;
|
|
|
const date = new Date();
|
|
const date = new Date();
|
|
|
const url = new URL(options.url);
|
|
const url = new URL(options.url);
|
|
|
- filename = await DomUtil.evalTemplateVariable(filename, "page-title", () => options.title);
|
|
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-title", () => options.title || "No title");
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-language", () => options.info.lang || "No language");
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-description", () => options.info.description || "No description");
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-author", () => options.info.author || "No author");
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-creator", () => options.info.creator || "No creator");
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "page-publisher", () => options.info.publisher || "No publisher");
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "datetime-iso", () => date.toISOString());
|
|
filename = await DomUtil.evalTemplateVariable(filename, "datetime-iso", () => date.toISOString());
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "date-iso", () => date.toISOString().split("T")[0]);
|
|
filename = await DomUtil.evalTemplateVariable(filename, "date-iso", () => date.toISOString().split("T")[0]);
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "time-iso", () => date.toISOString().split("T")[1].split("Z")[0]);
|
|
filename = await DomUtil.evalTemplateVariable(filename, "time-iso", () => date.toISOString().split("T")[1].split("Z")[0]);
|
|
@@ -811,7 +822,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-protocol", () => url.protocol);
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-protocol", () => url.protocol);
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-search", () => url.search.substring(1));
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-search", () => url.search.substring(1));
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-username", () => url.username);
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-username", () => url.username);
|
|
|
- filename = await DomUtil.evalTemplateVariable(filename, "tab-id", () => String(options.tabId || ""));
|
|
|
|
|
|
|
+ filename = await DomUtil.evalTemplateVariable(filename, "tab-id", () => String(options.tabId || "No tab id"));
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-last-segment", () => DomUtil.getLastSegment(url));
|
|
filename = await DomUtil.evalTemplateVariable(filename, "url-last-segment", () => DomUtil.getLastSegment(url));
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "digest-sha-256", async () => DOM.digest("SHA-256", content));
|
|
filename = await DomUtil.evalTemplateVariable(filename, "digest-sha-256", async () => DOM.digest("SHA-256", content));
|
|
|
filename = await DomUtil.evalTemplateVariable(filename, "digest-sha-384", async () => DOM.digest("SHA-384", content));
|
|
filename = await DomUtil.evalTemplateVariable(filename, "digest-sha-384", async () => DOM.digest("SHA-384", content));
|
|
@@ -824,7 +835,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
filename = filename.substring(0, 192 - extension.length) + "…" + extension;
|
|
filename = filename.substring(0, 192 - extension.length) + "…" + extension;
|
|
|
}
|
|
}
|
|
|
if (!filename) {
|
|
if (!filename) {
|
|
|
- filename = "Untitled page";
|
|
|
|
|
|
|
+ filename = "Unnamed page";
|
|
|
}
|
|
}
|
|
|
return filename;
|
|
return filename;
|
|
|
}
|
|
}
|