2022-03-25 00:14:34 +01:00
|
|
|
import { SitemapNews } from './smartsitemap.classes.sitemapnews.js';
|
2025-11-19 21:03:37 +00:00
|
|
|
import {
|
|
|
|
|
type IUrlInfo,
|
|
|
|
|
SitemapWebsite,
|
|
|
|
|
} from './smartsitemap.classes.sitemapwebsite.js';
|
2022-03-25 00:14:34 +01:00
|
|
|
import * as plugins from './smartsitemap.plugins.js';
|
|
|
|
|
import * as interfaces from './interfaces/index.js';
|
2020-10-25 22:12:38 +00:00
|
|
|
|
|
|
|
|
export class SmartSitemap {
|
|
|
|
|
constructor() {}
|
|
|
|
|
|
|
|
|
|
/**
|
2020-10-26 12:18:33 +00:00
|
|
|
* creates a sitemap for news from feedurl
|
2020-10-25 22:12:38 +00:00
|
|
|
*/
|
2025-11-19 21:03:37 +00:00
|
|
|
public async createSitemapNewsFromFeedUrl(
|
|
|
|
|
feedUrlArg: string,
|
|
|
|
|
): Promise<string> {
|
2020-10-26 00:52:04 +00:00
|
|
|
const sitemapNewsInstance = new SitemapNews({});
|
2020-10-28 15:54:39 +00:00
|
|
|
await sitemapNewsInstance.readAndAddFromRssFeedUrl(feedUrlArg);
|
2020-10-26 12:18:33 +00:00
|
|
|
return sitemapNewsInstance.exportSitemapXml();
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-28 17:43:58 +00:00
|
|
|
/**
|
|
|
|
|
* creates a sitemap for news from feedxmlstring
|
|
|
|
|
*/
|
2025-11-19 21:03:37 +00:00
|
|
|
public async createSitemapNewsFromAFeedStringArg(
|
|
|
|
|
feedStringArg: string,
|
|
|
|
|
): Promise<string> {
|
2020-10-28 17:43:58 +00:00
|
|
|
const sitemapNewsInstance = new SitemapNews({});
|
|
|
|
|
await sitemapNewsInstance.readAndAddFromRssFeedString(feedStringArg);
|
|
|
|
|
return sitemapNewsInstance.exportSitemapXml();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* creates a sitemap for news from an array of articles
|
|
|
|
|
*/
|
2023-07-27 16:16:37 +02:00
|
|
|
public async createSitemapNewsFromArticleArray(
|
2025-11-19 21:03:37 +00:00
|
|
|
articleArrayArg: plugins.tsclass.content.IArticle[],
|
2023-07-27 16:16:37 +02:00
|
|
|
): Promise<string> {
|
2020-10-28 17:43:58 +00:00
|
|
|
const sitemapNewsInstance = new SitemapNews({});
|
|
|
|
|
await sitemapNewsInstance.readAndParseArticles(articleArrayArg);
|
|
|
|
|
return sitemapNewsInstance.exportSitemapXml();
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-26 12:18:33 +00:00
|
|
|
/**
|
|
|
|
|
* creates a normal sitemap from a list of urls
|
|
|
|
|
*/
|
2020-10-28 15:14:54 +00:00
|
|
|
public async createSitemapFromYmlString(yamlString: string): Promise<string> {
|
2025-11-19 21:03:37 +00:00
|
|
|
const yamlObject: interfaces.ISitemapYaml =
|
|
|
|
|
await plugins.smartyaml.yamlStringToObject(yamlString);
|
2020-10-26 17:19:23 +00:00
|
|
|
const sitemapWebsite = new SitemapWebsite();
|
2023-07-27 16:16:37 +02:00
|
|
|
for (const urlArg of yamlObject.daily) {
|
2020-10-26 17:19:23 +00:00
|
|
|
sitemapWebsite.addUrl({
|
|
|
|
|
url: urlArg,
|
|
|
|
|
timestamp: Date.now() - 10000,
|
2023-07-27 16:16:37 +02:00
|
|
|
frequency: 'daily',
|
2020-10-26 17:19:23 +00:00
|
|
|
});
|
|
|
|
|
}
|
2020-10-28 15:14:54 +00:00
|
|
|
return sitemapWebsite.exportSitemapXml();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* creates a normal sitemap from a list of urls
|
|
|
|
|
*/
|
|
|
|
|
public async createSitemapFromUrlInfoArray(urlInfosArg: IUrlInfo[]) {
|
|
|
|
|
const sitemapWebsite = new SitemapWebsite();
|
2023-07-27 16:16:37 +02:00
|
|
|
for (const urlInfo of urlInfosArg) {
|
2020-10-28 15:14:54 +00:00
|
|
|
sitemapWebsite.addUrl(urlInfo);
|
|
|
|
|
}
|
|
|
|
|
return sitemapWebsite.exportSitemapXml();
|
2020-10-25 22:12:38 +00:00
|
|
|
}
|
2021-01-03 02:08:00 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* parses a sitemap url
|
|
|
|
|
*/
|
|
|
|
|
public async parseSitemapUrl(urlArg: string) {
|
2025-11-19 21:03:37 +00:00
|
|
|
const response = await plugins.webrequest.webrequest(urlArg);
|
|
|
|
|
const sitemapXml = await response.text();
|
2021-01-03 02:08:00 +00:00
|
|
|
|
|
|
|
|
const parsedSitemap = await this.parseSitemap(sitemapXml);
|
|
|
|
|
return parsedSitemap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* parses a sitemap
|
|
|
|
|
*/
|
2025-11-19 21:03:37 +00:00
|
|
|
public async parseSitemap(
|
|
|
|
|
sitemapXmlArg: string,
|
|
|
|
|
): Promise<interfaces.IParsedSiteMap> {
|
2023-07-27 16:16:37 +02:00
|
|
|
return new plugins.smartxml.SmartXml().parseXmlToObject(sitemapXmlArg);
|
2021-01-03 02:08:00 +00:00
|
|
|
}
|
2020-10-26 00:52:04 +00:00
|
|
|
}
|