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

"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 }
});
}
};
};