You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
898 B
JavaScript
31 lines
898 B
JavaScript
"use strict";
|
|
|
|
const syncpipe = require("syncpipe");
|
|
const url = require("url");
|
|
|
|
const assureResponse = require("../../shared/assure-response");
|
|
const surgeon = require("../../shared/surgeon-utils");
|
|
const uniqueArray = require("../../shared/unique-array");
|
|
|
|
module.exports = function findCategories({ session }) {
|
|
return async function({ createItem }) {
|
|
let response = await session.get("https://focuslcds.com/");
|
|
assureResponse(response);
|
|
|
|
let urls = syncpipe(null, [
|
|
_ => surgeon(`selectMany ".category-list a" | readAttr href`, response.body.toString()),
|
|
_ => uniqueArray(_),
|
|
_ => _.filter((relativeURL) => relativeURL !== ""),
|
|
_ => _.map((relativeURL) => url.resolve("https://focuslcds.com/", relativeURL))
|
|
]);
|
|
|
|
for (let url of urls) {
|
|
createItem({
|
|
id: `focus-lcds:category:${url}`,
|
|
tags: [ "focus-lcds:category" ],
|
|
data: { url: url }
|
|
});
|
|
}
|
|
};
|
|
};
|