feedscout 1.9.0 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/discover/defaults.js +1 -3
- package/dist/common/discover/utils.d.ts +2 -3
- package/dist/common/uris/feed/types.d.ts +2 -2
- package/dist/feeds/extractors.js +2 -2
- package/dist/feeds/platform/handlers/discourse.js +2 -6
- package/dist/feeds/platform/handlers/libsyn.js +1 -1
- package/package.json +23 -62
- package/dist/blogrolls/defaults.cjs +0 -57
- package/dist/blogrolls/defaults.d.cts +0 -16
- package/dist/blogrolls/extractors.cjs +0 -21
- package/dist/blogrolls/extractors.d.cts +0 -7
- package/dist/blogrolls/index.cjs +0 -25
- package/dist/blogrolls/index.d.cts +0 -7
- package/dist/blogrolls/types.d.cts +0 -6
- package/dist/blogrolls.cjs +0 -12
- package/dist/blogrolls.d.cts +0 -4
- package/dist/common/discover/defaults.cjs +0 -46
- package/dist/common/discover/defaults.d.cts +0 -6
- package/dist/common/discover/index.cjs +0 -105
- package/dist/common/discover/utils.cjs +0 -101
- package/dist/common/discover/utils.d.cts +0 -6
- package/dist/common/locales.cjs +0 -348
- package/dist/common/types.cjs +0 -10
- package/dist/common/types.d.cts +0 -90
- package/dist/common/uris/feed/index.cjs +0 -12
- package/dist/common/uris/feed/index.d.cts +0 -6
- package/dist/common/uris/feed/types.d.cts +0 -9
- package/dist/common/uris/guess/index.cjs +0 -8
- package/dist/common/uris/guess/index.d.cts +0 -7
- package/dist/common/uris/guess/types.d.cts +0 -10
- package/dist/common/uris/guess/utils.cjs +0 -42
- package/dist/common/uris/guess/utils.d.cts +0 -8
- package/dist/common/uris/headers/index.cjs +0 -26
- package/dist/common/uris/headers/index.d.cts +0 -6
- package/dist/common/uris/headers/types.d.cts +0 -9
- package/dist/common/uris/html/handlers.cjs +0 -59
- package/dist/common/uris/html/index.cjs +0 -35
- package/dist/common/uris/html/index.d.cts +0 -6
- package/dist/common/uris/html/types.d.cts +0 -13
- package/dist/common/uris/index.cjs +0 -32
- package/dist/common/uris/platform/index.cjs +0 -10
- package/dist/common/uris/platform/index.d.cts +0 -7
- package/dist/common/uris/platform/types.d.cts +0 -13
- package/dist/common/utils.cjs +0 -98
- package/dist/common/utils.d.cts +0 -12
- package/dist/favicons/defaults.cjs +0 -65
- package/dist/favicons/defaults.d.cts +0 -18
- package/dist/favicons/extractors.cjs +0 -25
- package/dist/favicons/extractors.d.cts +0 -7
- package/dist/favicons/index.cjs +0 -29
- package/dist/favicons/index.d.cts +0 -7
- package/dist/favicons/platform/handlers/bluesky.cjs +0 -27
- package/dist/favicons/platform/handlers/codeberg.cjs +0 -19
- package/dist/favicons/platform/handlers/deviantart.cjs +0 -29
- package/dist/favicons/platform/handlers/devto.cjs +0 -31
- package/dist/favicons/platform/handlers/github.cjs +0 -19
- package/dist/favicons/platform/handlers/githubGist.cjs +0 -19
- package/dist/favicons/platform/handlers/gitlab.cjs +0 -38
- package/dist/favicons/platform/handlers/lobsters.cjs +0 -21
- package/dist/favicons/platform/handlers/mastodon.cjs +0 -40
- package/dist/favicons/platform/handlers/reddit.cjs +0 -42
- package/dist/favicons/platform/handlers/sourceforge.cjs +0 -21
- package/dist/favicons/platform/handlers/tumblr.cjs +0 -16
- package/dist/favicons/types.d.cts +0 -4
- package/dist/favicons/utils.cjs +0 -10
- package/dist/favicons.cjs +0 -12
- package/dist/favicons.d.cts +0 -4
- package/dist/feeds/defaults.cjs +0 -290
- package/dist/feeds/defaults.d.cts +0 -21
- package/dist/feeds/extractors.cjs +0 -46
- package/dist/feeds/extractors.d.cts +0 -7
- package/dist/feeds/index.cjs +0 -26
- package/dist/feeds/index.d.cts +0 -7
- package/dist/feeds/platform/handlers/acast.cjs +0 -26
- package/dist/feeds/platform/handlers/ameblo.cjs +0 -36
- package/dist/feeds/platform/handlers/applePodcasts.cjs +0 -26
- package/dist/feeds/platform/handlers/arena.cjs +0 -42
- package/dist/feeds/platform/handlers/artstation.cjs +0 -52
- package/dist/feeds/platform/handlers/audioboom.cjs +0 -23
- package/dist/feeds/platform/handlers/bearblog.cjs +0 -45
- package/dist/feeds/platform/handlers/behance.cjs +0 -56
- package/dist/feeds/platform/handlers/blogspot.cjs +0 -72
- package/dist/feeds/platform/handlers/bluesky.cjs +0 -20
- package/dist/feeds/platform/handlers/bookwyrm.cjs +0 -48
- package/dist/feeds/platform/handlers/buttondown.cjs +0 -43
- package/dist/feeds/platform/handlers/buzzsprout.cjs +0 -22
- package/dist/feeds/platform/handlers/codeberg.cjs +0 -69
- package/dist/feeds/platform/handlers/csdn.cjs +0 -20
- package/dist/feeds/platform/handlers/dailymotion.cjs +0 -86
- package/dist/feeds/platform/handlers/deviantart.cjs +0 -85
- package/dist/feeds/platform/handlers/devto.cjs +0 -58
- package/dist/feeds/platform/handlers/discourse.cjs +0 -70
- package/dist/feeds/platform/handlers/douban.cjs +0 -56
- package/dist/feeds/platform/handlers/dreamwidth.cjs +0 -48
- package/dist/feeds/platform/handlers/exblog.cjs +0 -35
- package/dist/feeds/platform/handlers/fireside.cjs +0 -24
- package/dist/feeds/platform/handlers/friendica.cjs +0 -44
- package/dist/feeds/platform/handlers/ghost.cjs +0 -30
- package/dist/feeds/platform/handlers/github.cjs +0 -122
- package/dist/feeds/platform/handlers/githubGist.cjs +0 -56
- package/dist/feeds/platform/handlers/gitlab.cjs +0 -98
- package/dist/feeds/platform/handlers/goodreads.cjs +0 -49
- package/dist/feeds/platform/handlers/hackernews.cjs +0 -21
- package/dist/feeds/platform/handlers/hashnode.cjs +0 -16
- package/dist/feeds/platform/handlers/hatenablog.cjs +0 -56
- package/dist/feeds/platform/handlers/hearthis.cjs +0 -32
- package/dist/feeds/platform/handlers/heyWorld.cjs +0 -18
- package/dist/feeds/platform/handlers/insanejournal.cjs +0 -69
- package/dist/feeds/platform/handlers/itchio.cjs +0 -111
- package/dist/feeds/platform/handlers/kickstarter.cjs +0 -22
- package/dist/feeds/platform/handlers/lemmy.cjs +0 -88
- package/dist/feeds/platform/handlers/letterboxd.cjs +0 -46
- package/dist/feeds/platform/handlers/libsyn.cjs +0 -25
- package/dist/feeds/platform/handlers/listed.cjs +0 -20
- package/dist/feeds/platform/handlers/livejournal.cjs +0 -68
- package/dist/feeds/platform/handlers/lobsters.cjs +0 -57
- package/dist/feeds/platform/handlers/mastodon.cjs +0 -74
- package/dist/feeds/platform/handlers/mataroa.cjs +0 -16
- package/dist/feeds/platform/handlers/medium.cjs +0 -68
- package/dist/feeds/platform/handlers/microblog.cjs +0 -55
- package/dist/feeds/platform/handlers/misskey.cjs +0 -40
- package/dist/feeds/platform/handlers/myanimelist.cjs +0 -43
- package/dist/feeds/platform/handlers/naverBlog.cjs +0 -21
- package/dist/feeds/platform/handlers/nebula.cjs +0 -68
- package/dist/feeds/platform/handlers/note.cjs +0 -53
- package/dist/feeds/platform/handlers/observable.cjs +0 -34
- package/dist/feeds/platform/handlers/odysee.cjs +0 -20
- package/dist/feeds/platform/handlers/pagecord.cjs +0 -16
- package/dist/feeds/platform/handlers/paragraph.cjs +0 -20
- package/dist/feeds/platform/handlers/pika.cjs +0 -35
- package/dist/feeds/platform/handlers/pinterest.cjs +0 -57
- package/dist/feeds/platform/handlers/pixelfed.cjs +0 -46
- package/dist/feeds/platform/handlers/pleroma.cjs +0 -34
- package/dist/feeds/platform/handlers/podbean.cjs +0 -29
- package/dist/feeds/platform/handlers/podigee.cjs +0 -29
- package/dist/feeds/platform/handlers/posthaven.cjs +0 -24
- package/dist/feeds/platform/handlers/producthunt.cjs +0 -29
- package/dist/feeds/platform/handlers/prose.cjs +0 -26
- package/dist/feeds/platform/handlers/qiita.cjs +0 -58
- package/dist/feeds/platform/handlers/reddit.cjs +0 -149
- package/dist/feeds/platform/handlers/rssCom.cjs +0 -20
- package/dist/feeds/platform/handlers/seesaa.cjs +0 -22
- package/dist/feeds/platform/handlers/soundcloud.cjs +0 -39
- package/dist/feeds/platform/handlers/sourceforge.cjs +0 -53
- package/dist/feeds/platform/handlers/spreaker.cjs +0 -21
- package/dist/feeds/platform/handlers/stackExchange.cjs +0 -64
- package/dist/feeds/platform/handlers/steam.cjs +0 -35
- package/dist/feeds/platform/handlers/substack.cjs +0 -23
- package/dist/feeds/platform/handlers/tildes.cjs +0 -41
- package/dist/feeds/platform/handlers/tistory.cjs +0 -16
- package/dist/feeds/platform/handlers/transistor.cjs +0 -29
- package/dist/feeds/platform/handlers/tumblr.cjs +0 -24
- package/dist/feeds/platform/handlers/v2ex.cjs +0 -35
- package/dist/feeds/platform/handlers/velog.cjs +0 -24
- package/dist/feeds/platform/handlers/vimeo.cjs +0 -75
- package/dist/feeds/platform/handlers/weblogLol.cjs +0 -26
- package/dist/feeds/platform/handlers/weebly.cjs +0 -25
- package/dist/feeds/platform/handlers/wordpress.cjs +0 -209
- package/dist/feeds/platform/handlers/wpengine.cjs +0 -10
- package/dist/feeds/platform/handlers/writeas.cjs +0 -51
- package/dist/feeds/platform/handlers/ximalaya.cjs +0 -20
- package/dist/feeds/platform/handlers/youtube.cjs +0 -97
- package/dist/feeds/platform/handlers/zenn.cjs +0 -54
- package/dist/feeds/types.d.cts +0 -9
- package/dist/feeds.cjs +0 -16
- package/dist/feeds.d.cts +0 -4
- package/dist/hubs/discover/index.cjs +0 -30
- package/dist/hubs/discover/index.d.cts +0 -7
- package/dist/hubs/discover/types.d.cts +0 -15
- package/dist/hubs/feed/index.cjs +0 -32
- package/dist/hubs/headers/index.cjs +0 -17
- package/dist/hubs/html/index.cjs +0 -28
- package/dist/hubs.cjs +0 -0
- package/dist/hubs.d.cts +0 -2
- package/dist/index.cjs +0 -13
- package/dist/index.d.cts +0 -8
- package/dist/methods.cjs +0 -15
- package/dist/methods.d.cts +0 -7
- package/dist/utils.cjs +0 -9
- package/dist/utils.d.cts +0 -3
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
const require_utils$1 = require("../../utils.cjs");
|
|
3
|
-
const require_reddit = require("../../../feeds/platform/handlers/reddit.cjs");
|
|
4
|
-
//#region src/favicons/platform/handlers/reddit.ts
|
|
5
|
-
const subredditRegex = /^\/r\/([^/.]+)/;
|
|
6
|
-
const userRegex = /^\/(u|user)\/([^/.]+)/;
|
|
7
|
-
const isSubredditPath = (pathname) => {
|
|
8
|
-
return subredditRegex.test(pathname);
|
|
9
|
-
};
|
|
10
|
-
const isUserPath = (pathname) => {
|
|
11
|
-
return userRegex.test(pathname);
|
|
12
|
-
};
|
|
13
|
-
const redditHandler = {
|
|
14
|
-
match: (url) => {
|
|
15
|
-
try {
|
|
16
|
-
const { pathname } = new URL(url);
|
|
17
|
-
return require_utils.isHostOf(url, require_reddit.hosts) && (isSubredditPath(pathname) || isUserPath(pathname));
|
|
18
|
-
} catch {}
|
|
19
|
-
return false;
|
|
20
|
-
},
|
|
21
|
-
resolve: async (url, _content, _headers, fetchFn) => {
|
|
22
|
-
if (!fetchFn) return [];
|
|
23
|
-
try {
|
|
24
|
-
const { pathname } = new URL(url);
|
|
25
|
-
const subredditMatch = pathname.match(subredditRegex);
|
|
26
|
-
if (subredditMatch?.[1]) {
|
|
27
|
-
const data = require_utils$1.parseBodyJson((await fetchFn(`https://www.reddit.com/r/${subredditMatch[1]}/about.json`)).body);
|
|
28
|
-
const icon = data?.data?.community_icon?.split("?")[0] || data?.data?.icon_img;
|
|
29
|
-
if (require_utils$1.isNonEmptyString(icon)) return [{ uri: icon }];
|
|
30
|
-
}
|
|
31
|
-
const userMatch = pathname.match(userRegex);
|
|
32
|
-
if (userMatch?.[2]) {
|
|
33
|
-
const data = require_utils$1.parseBodyJson((await fetchFn(`https://www.reddit.com/user/${userMatch[2]}/about.json`)).body);
|
|
34
|
-
const icon = data?.data?.icon_img || data?.data?.snoovatar_img;
|
|
35
|
-
if (require_utils$1.isNonEmptyString(icon)) return [{ uri: icon }];
|
|
36
|
-
}
|
|
37
|
-
} catch {}
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
//#endregion
|
|
42
|
-
exports.redditHandler = redditHandler;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
const require_sourceforge = require("../../../feeds/platform/handlers/sourceforge.cjs");
|
|
3
|
-
//#region src/favicons/platform/handlers/sourceforge.ts
|
|
4
|
-
const sourceforgeHandler = {
|
|
5
|
-
match: (url) => {
|
|
6
|
-
try {
|
|
7
|
-
const { pathname } = new URL(url);
|
|
8
|
-
const segments = pathname.split("/").filter(Boolean);
|
|
9
|
-
return require_utils.isHostOf(url, require_sourceforge.hosts) && segments[0] === "projects" && !!segments[1];
|
|
10
|
-
} catch {}
|
|
11
|
-
return false;
|
|
12
|
-
},
|
|
13
|
-
resolve: (url) => {
|
|
14
|
-
const { pathname } = new URL(url);
|
|
15
|
-
const segments = pathname.split("/").filter(Boolean);
|
|
16
|
-
if (segments[0] !== "projects" || !segments[1]) return [];
|
|
17
|
-
return [{ uri: `https://a.fsdn.com/allura/p/${segments[1]}/icon` }];
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
//#endregion
|
|
21
|
-
exports.sourceforgeHandler = sourceforgeHandler;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
const require_tumblr = require("../../../feeds/platform/handlers/tumblr.cjs");
|
|
3
|
-
//#region src/favicons/platform/handlers/tumblr.ts
|
|
4
|
-
const tumblrHandler = {
|
|
5
|
-
match: (url) => {
|
|
6
|
-
return require_utils.isSubdomainOf(url, require_tumblr.domains);
|
|
7
|
-
},
|
|
8
|
-
resolve: (url) => {
|
|
9
|
-
const { hostname } = new URL(url);
|
|
10
|
-
const blog = hostname.split(".")[0];
|
|
11
|
-
if (!blog || blog === "www") return [];
|
|
12
|
-
return [{ uri: `https://api.tumblr.com/v2/blog/${blog}/avatar/512` }];
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
//#endregion
|
|
16
|
-
exports.tumblrHandler = tumblrHandler;
|
package/dist/favicons/utils.cjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region src/favicons/utils.ts
|
|
2
|
-
const parseBodyJson = (body) => {
|
|
3
|
-
return JSON.parse(typeof body === "string" ? body : "");
|
|
4
|
-
};
|
|
5
|
-
const isNonEmptyString = (value) => {
|
|
6
|
-
return typeof value === "string" && value.length > 0;
|
|
7
|
-
};
|
|
8
|
-
//#endregion
|
|
9
|
-
exports.isNonEmptyString = isNonEmptyString;
|
|
10
|
-
exports.parseBodyJson = parseBodyJson;
|
package/dist/favicons.cjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_defaults = require("./favicons/defaults.cjs");
|
|
3
|
-
const require_extractors = require("./favicons/extractors.cjs");
|
|
4
|
-
exports.defaultExtractFn = require_extractors.defaultExtractFn;
|
|
5
|
-
exports.defaultFeedOptions = require_defaults.defaultFeedOptions;
|
|
6
|
-
exports.defaultGuessOptions = require_defaults.defaultGuessOptions;
|
|
7
|
-
exports.defaultGuessPaths = require_defaults.defaultGuessPaths;
|
|
8
|
-
exports.defaultHeadersOptions = require_defaults.defaultHeadersOptions;
|
|
9
|
-
exports.defaultHtmlOptions = require_defaults.defaultHtmlOptions;
|
|
10
|
-
exports.defaultIconRels = require_defaults.defaultIconRels;
|
|
11
|
-
exports.defaultPlatformOptions = require_defaults.defaultPlatformOptions;
|
|
12
|
-
exports.linkSelectors = require_defaults.linkSelectors;
|
package/dist/favicons.d.cts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { defaultFeedOptions, defaultGuessOptions, defaultGuessPaths, defaultHeadersOptions, defaultHtmlOptions, defaultIconRels, defaultPlatformOptions, linkSelectors } from "./favicons/defaults.cjs";
|
|
2
|
-
import { FaviconResult } from "./favicons/types.cjs";
|
|
3
|
-
import { defaultExtractFn } from "./favicons/extractors.cjs";
|
|
4
|
-
export { FaviconResult, defaultExtractFn, defaultFeedOptions, defaultGuessOptions, defaultGuessPaths, defaultHeadersOptions, defaultHtmlOptions, defaultIconRels, defaultPlatformOptions, linkSelectors };
|
package/dist/feeds/defaults.cjs
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
const require_codeberg = require("./platform/handlers/codeberg.cjs");
|
|
2
|
-
const require_deviantart = require("./platform/handlers/deviantart.cjs");
|
|
3
|
-
const require_devto = require("./platform/handlers/devto.cjs");
|
|
4
|
-
const require_github = require("./platform/handlers/github.cjs");
|
|
5
|
-
const require_githubGist = require("./platform/handlers/githubGist.cjs");
|
|
6
|
-
const require_gitlab = require("./platform/handlers/gitlab.cjs");
|
|
7
|
-
const require_lobsters = require("./platform/handlers/lobsters.cjs");
|
|
8
|
-
const require_reddit = require("./platform/handlers/reddit.cjs");
|
|
9
|
-
const require_sourceforge = require("./platform/handlers/sourceforge.cjs");
|
|
10
|
-
const require_tumblr = require("./platform/handlers/tumblr.cjs");
|
|
11
|
-
const require_acast = require("./platform/handlers/acast.cjs");
|
|
12
|
-
const require_ameblo = require("./platform/handlers/ameblo.cjs");
|
|
13
|
-
const require_applePodcasts = require("./platform/handlers/applePodcasts.cjs");
|
|
14
|
-
const require_arena = require("./platform/handlers/arena.cjs");
|
|
15
|
-
const require_artstation = require("./platform/handlers/artstation.cjs");
|
|
16
|
-
const require_audioboom = require("./platform/handlers/audioboom.cjs");
|
|
17
|
-
const require_bearblog = require("./platform/handlers/bearblog.cjs");
|
|
18
|
-
const require_behance = require("./platform/handlers/behance.cjs");
|
|
19
|
-
const require_blogspot = require("./platform/handlers/blogspot.cjs");
|
|
20
|
-
const require_bluesky = require("./platform/handlers/bluesky.cjs");
|
|
21
|
-
const require_bookwyrm = require("./platform/handlers/bookwyrm.cjs");
|
|
22
|
-
const require_buttondown = require("./platform/handlers/buttondown.cjs");
|
|
23
|
-
const require_buzzsprout = require("./platform/handlers/buzzsprout.cjs");
|
|
24
|
-
const require_csdn = require("./platform/handlers/csdn.cjs");
|
|
25
|
-
const require_dailymotion = require("./platform/handlers/dailymotion.cjs");
|
|
26
|
-
const require_discourse = require("./platform/handlers/discourse.cjs");
|
|
27
|
-
const require_douban = require("./platform/handlers/douban.cjs");
|
|
28
|
-
const require_dreamwidth = require("./platform/handlers/dreamwidth.cjs");
|
|
29
|
-
const require_exblog = require("./platform/handlers/exblog.cjs");
|
|
30
|
-
const require_fireside = require("./platform/handlers/fireside.cjs");
|
|
31
|
-
const require_friendica = require("./platform/handlers/friendica.cjs");
|
|
32
|
-
const require_ghost = require("./platform/handlers/ghost.cjs");
|
|
33
|
-
const require_goodreads = require("./platform/handlers/goodreads.cjs");
|
|
34
|
-
const require_hackernews = require("./platform/handlers/hackernews.cjs");
|
|
35
|
-
const require_hashnode = require("./platform/handlers/hashnode.cjs");
|
|
36
|
-
const require_hatenablog = require("./platform/handlers/hatenablog.cjs");
|
|
37
|
-
const require_hearthis = require("./platform/handlers/hearthis.cjs");
|
|
38
|
-
const require_heyWorld = require("./platform/handlers/heyWorld.cjs");
|
|
39
|
-
const require_insanejournal = require("./platform/handlers/insanejournal.cjs");
|
|
40
|
-
const require_itchio = require("./platform/handlers/itchio.cjs");
|
|
41
|
-
const require_kickstarter = require("./platform/handlers/kickstarter.cjs");
|
|
42
|
-
const require_lemmy = require("./platform/handlers/lemmy.cjs");
|
|
43
|
-
const require_letterboxd = require("./platform/handlers/letterboxd.cjs");
|
|
44
|
-
const require_libsyn = require("./platform/handlers/libsyn.cjs");
|
|
45
|
-
const require_listed = require("./platform/handlers/listed.cjs");
|
|
46
|
-
const require_livejournal = require("./platform/handlers/livejournal.cjs");
|
|
47
|
-
const require_mastodon = require("./platform/handlers/mastodon.cjs");
|
|
48
|
-
const require_mataroa = require("./platform/handlers/mataroa.cjs");
|
|
49
|
-
const require_medium = require("./platform/handlers/medium.cjs");
|
|
50
|
-
const require_microblog = require("./platform/handlers/microblog.cjs");
|
|
51
|
-
const require_misskey = require("./platform/handlers/misskey.cjs");
|
|
52
|
-
const require_myanimelist = require("./platform/handlers/myanimelist.cjs");
|
|
53
|
-
const require_naverBlog = require("./platform/handlers/naverBlog.cjs");
|
|
54
|
-
const require_nebula = require("./platform/handlers/nebula.cjs");
|
|
55
|
-
const require_note = require("./platform/handlers/note.cjs");
|
|
56
|
-
const require_observable = require("./platform/handlers/observable.cjs");
|
|
57
|
-
const require_odysee = require("./platform/handlers/odysee.cjs");
|
|
58
|
-
const require_pagecord = require("./platform/handlers/pagecord.cjs");
|
|
59
|
-
const require_paragraph = require("./platform/handlers/paragraph.cjs");
|
|
60
|
-
const require_pika = require("./platform/handlers/pika.cjs");
|
|
61
|
-
const require_pinterest = require("./platform/handlers/pinterest.cjs");
|
|
62
|
-
const require_pixelfed = require("./platform/handlers/pixelfed.cjs");
|
|
63
|
-
const require_pleroma = require("./platform/handlers/pleroma.cjs");
|
|
64
|
-
const require_podbean = require("./platform/handlers/podbean.cjs");
|
|
65
|
-
const require_podigee = require("./platform/handlers/podigee.cjs");
|
|
66
|
-
const require_posthaven = require("./platform/handlers/posthaven.cjs");
|
|
67
|
-
const require_producthunt = require("./platform/handlers/producthunt.cjs");
|
|
68
|
-
const require_prose = require("./platform/handlers/prose.cjs");
|
|
69
|
-
const require_qiita = require("./platform/handlers/qiita.cjs");
|
|
70
|
-
const require_rssCom = require("./platform/handlers/rssCom.cjs");
|
|
71
|
-
const require_seesaa = require("./platform/handlers/seesaa.cjs");
|
|
72
|
-
const require_soundcloud = require("./platform/handlers/soundcloud.cjs");
|
|
73
|
-
const require_spreaker = require("./platform/handlers/spreaker.cjs");
|
|
74
|
-
const require_stackExchange = require("./platform/handlers/stackExchange.cjs");
|
|
75
|
-
const require_steam = require("./platform/handlers/steam.cjs");
|
|
76
|
-
const require_substack = require("./platform/handlers/substack.cjs");
|
|
77
|
-
const require_tildes = require("./platform/handlers/tildes.cjs");
|
|
78
|
-
const require_tistory = require("./platform/handlers/tistory.cjs");
|
|
79
|
-
const require_transistor = require("./platform/handlers/transistor.cjs");
|
|
80
|
-
const require_v2ex = require("./platform/handlers/v2ex.cjs");
|
|
81
|
-
const require_velog = require("./platform/handlers/velog.cjs");
|
|
82
|
-
const require_vimeo = require("./platform/handlers/vimeo.cjs");
|
|
83
|
-
const require_weblogLol = require("./platform/handlers/weblogLol.cjs");
|
|
84
|
-
const require_weebly = require("./platform/handlers/weebly.cjs");
|
|
85
|
-
const require_wordpress = require("./platform/handlers/wordpress.cjs");
|
|
86
|
-
const require_wpengine = require("./platform/handlers/wpengine.cjs");
|
|
87
|
-
const require_writeas = require("./platform/handlers/writeas.cjs");
|
|
88
|
-
const require_ximalaya = require("./platform/handlers/ximalaya.cjs");
|
|
89
|
-
const require_youtube = require("./platform/handlers/youtube.cjs");
|
|
90
|
-
const require_zenn = require("./platform/handlers/zenn.cjs");
|
|
91
|
-
//#region src/feeds/defaults.ts
|
|
92
|
-
const mimeTypes = [
|
|
93
|
-
"application/rss+xml",
|
|
94
|
-
"text/rss+xml",
|
|
95
|
-
"application/x-rss+xml",
|
|
96
|
-
"application/rss",
|
|
97
|
-
"application/atom+xml",
|
|
98
|
-
"text/atom+xml",
|
|
99
|
-
"application/feed+json",
|
|
100
|
-
"application/json",
|
|
101
|
-
"application/rdf+xml",
|
|
102
|
-
"text/rdf+xml",
|
|
103
|
-
"application/atom",
|
|
104
|
-
"application/xml",
|
|
105
|
-
"text/xml"
|
|
106
|
-
];
|
|
107
|
-
const urisMinimal = [
|
|
108
|
-
"/feed",
|
|
109
|
-
"/rss",
|
|
110
|
-
"/atom.xml",
|
|
111
|
-
"/feed.xml",
|
|
112
|
-
"/rss.xml",
|
|
113
|
-
"/index.xml"
|
|
114
|
-
];
|
|
115
|
-
const urisBalanced = [
|
|
116
|
-
...urisMinimal,
|
|
117
|
-
"/feed/",
|
|
118
|
-
"/index.atom",
|
|
119
|
-
"/index.rss",
|
|
120
|
-
"/feed.json"
|
|
121
|
-
];
|
|
122
|
-
const urisComprehensive = [
|
|
123
|
-
...urisBalanced,
|
|
124
|
-
"/atom",
|
|
125
|
-
"/rss/",
|
|
126
|
-
"/rss2.xml",
|
|
127
|
-
"/feed.rss",
|
|
128
|
-
"/feed.atom",
|
|
129
|
-
"/feed.rss.xml",
|
|
130
|
-
"/feed.atom.xml",
|
|
131
|
-
["/feed/atom/", "?feed=atom"],
|
|
132
|
-
["/feed/rss/", "?feed=rss"],
|
|
133
|
-
["/feed/rss2/", "?feed=rss2"],
|
|
134
|
-
["/feed/rdf", "?feed=rdf"],
|
|
135
|
-
["/feed/rdf/", "?feed=rdf"],
|
|
136
|
-
"/index.rss.xml",
|
|
137
|
-
"/index.atom.xml",
|
|
138
|
-
"?format=rss",
|
|
139
|
-
"?format=atom",
|
|
140
|
-
"?rss=1",
|
|
141
|
-
"?atom=1",
|
|
142
|
-
"/.rss",
|
|
143
|
-
"/f.json",
|
|
144
|
-
"/f.rss",
|
|
145
|
-
"/json",
|
|
146
|
-
"/.feed",
|
|
147
|
-
["/comments/feed", "?feed=comments-rss2"],
|
|
148
|
-
["/comments/feed/rss2/", "?feed=comments-rss2"],
|
|
149
|
-
["/comments/feed/rdf/", "?feed=comments-rdf"],
|
|
150
|
-
["/comments/feed/atom/", "?feed=comments-atom"],
|
|
151
|
-
"/feeds/posts/default",
|
|
152
|
-
"/feeds/posts/default?alt=rss",
|
|
153
|
-
"/feeds/comments/default"
|
|
154
|
-
];
|
|
155
|
-
const ignoredUris = [
|
|
156
|
-
"wp-json/oembed/",
|
|
157
|
-
"wp-json/wp/",
|
|
158
|
-
/[?&][^=&]*=(https?:|https?%3a|aHR0c)/i
|
|
159
|
-
];
|
|
160
|
-
const anchorLabels = [
|
|
161
|
-
"rss",
|
|
162
|
-
"feed",
|
|
163
|
-
"atom",
|
|
164
|
-
"syndicate",
|
|
165
|
-
"syndication",
|
|
166
|
-
"json feed"
|
|
167
|
-
];
|
|
168
|
-
const linkSelectors = [{
|
|
169
|
-
rel: "alternate",
|
|
170
|
-
types: mimeTypes
|
|
171
|
-
}, { rel: "feed" }];
|
|
172
|
-
const anchorPathSegments = [
|
|
173
|
-
/\/rss\//,
|
|
174
|
-
/\/atom\//,
|
|
175
|
-
/\/feed\//
|
|
176
|
-
];
|
|
177
|
-
const defaultHtmlOptions = {
|
|
178
|
-
linkSelectors,
|
|
179
|
-
anchorUris: urisComprehensive.flat(),
|
|
180
|
-
anchorPathSegments,
|
|
181
|
-
anchorIgnoredUris: ignoredUris,
|
|
182
|
-
anchorLabels
|
|
183
|
-
};
|
|
184
|
-
const defaultHeadersOptions = { linkSelectors };
|
|
185
|
-
const defaultGuessOptions = { uris: urisBalanced };
|
|
186
|
-
const defaultPlatformOptions = { handlers: [
|
|
187
|
-
require_acast.acastHandler,
|
|
188
|
-
require_ameblo.amebloHandler,
|
|
189
|
-
require_applePodcasts.applePodcastsHandler,
|
|
190
|
-
require_arena.arenaHandler,
|
|
191
|
-
require_artstation.artstationHandler,
|
|
192
|
-
require_audioboom.audioboomHandler,
|
|
193
|
-
require_bearblog.bearblogHandler,
|
|
194
|
-
require_behance.behanceHandler,
|
|
195
|
-
require_blogspot.blogspotHandler,
|
|
196
|
-
require_bluesky.blueskyHandler,
|
|
197
|
-
require_bookwyrm.bookwyrmHandler,
|
|
198
|
-
require_buttondown.buttondownHandler,
|
|
199
|
-
require_buzzsprout.buzzsproutHandler,
|
|
200
|
-
require_codeberg.codebergHandler,
|
|
201
|
-
require_csdn.csdnHandler,
|
|
202
|
-
require_dailymotion.dailymotionHandler,
|
|
203
|
-
require_deviantart.deviantartHandler,
|
|
204
|
-
require_devto.devtoHandler,
|
|
205
|
-
require_discourse.discourseHandler,
|
|
206
|
-
require_douban.doubanHandler,
|
|
207
|
-
require_dreamwidth.dreamwidthHandler,
|
|
208
|
-
require_exblog.exblogHandler,
|
|
209
|
-
require_fireside.firesideHandler,
|
|
210
|
-
require_friendica.friendicaHandler,
|
|
211
|
-
require_ghost.ghostHandler,
|
|
212
|
-
require_github.githubHandler,
|
|
213
|
-
require_githubGist.githubGistHandler,
|
|
214
|
-
require_gitlab.gitlabHandler,
|
|
215
|
-
require_goodreads.goodreadsHandler,
|
|
216
|
-
require_hackernews.hackernewsHandler,
|
|
217
|
-
require_hashnode.hashnodeHandler,
|
|
218
|
-
require_hatenablog.hatenablogHandler,
|
|
219
|
-
require_hearthis.hearthisHandler,
|
|
220
|
-
require_heyWorld.heyWorldHandler,
|
|
221
|
-
require_insanejournal.insanejournalHandler,
|
|
222
|
-
require_itchio.itchioHandler,
|
|
223
|
-
require_kickstarter.kickstarterHandler,
|
|
224
|
-
require_lemmy.lemmyHandler,
|
|
225
|
-
require_letterboxd.letterboxdHandler,
|
|
226
|
-
require_libsyn.libsynHandler,
|
|
227
|
-
require_listed.listedHandler,
|
|
228
|
-
require_livejournal.livejournalHandler,
|
|
229
|
-
require_lobsters.lobstersHandler,
|
|
230
|
-
require_mastodon.mastodonHandler,
|
|
231
|
-
require_mataroa.mataroaHandler,
|
|
232
|
-
require_medium.mediumHandler,
|
|
233
|
-
require_microblog.microblogHandler,
|
|
234
|
-
require_misskey.misskeyHandler,
|
|
235
|
-
require_myanimelist.myanimelistHandler,
|
|
236
|
-
require_naverBlog.naverBlogHandler,
|
|
237
|
-
require_nebula.nebulaHandler,
|
|
238
|
-
require_note.noteHandler,
|
|
239
|
-
require_observable.observableHandler,
|
|
240
|
-
require_odysee.odyseeHandler,
|
|
241
|
-
require_pagecord.pagecordHandler,
|
|
242
|
-
require_paragraph.paragraphHandler,
|
|
243
|
-
require_pika.pikaHandler,
|
|
244
|
-
require_pinterest.pinterestHandler,
|
|
245
|
-
require_pixelfed.pixelfedHandler,
|
|
246
|
-
require_pleroma.pleromaHandler,
|
|
247
|
-
require_podbean.podbeanHandler,
|
|
248
|
-
require_podigee.podigeeHandler,
|
|
249
|
-
require_posthaven.posthavenHandler,
|
|
250
|
-
require_producthunt.producthuntHandler,
|
|
251
|
-
require_prose.proseHandler,
|
|
252
|
-
require_qiita.qiitaHandler,
|
|
253
|
-
require_reddit.redditHandler,
|
|
254
|
-
require_rssCom.rssComHandler,
|
|
255
|
-
require_seesaa.seesaaHandler,
|
|
256
|
-
require_soundcloud.soundcloudHandler,
|
|
257
|
-
require_sourceforge.sourceforgeHandler,
|
|
258
|
-
require_spreaker.spreakerHandler,
|
|
259
|
-
require_stackExchange.stackExchangeHandler,
|
|
260
|
-
require_steam.steamHandler,
|
|
261
|
-
require_substack.substackHandler,
|
|
262
|
-
require_tildes.tildesHandler,
|
|
263
|
-
require_tistory.tistoryHandler,
|
|
264
|
-
require_transistor.transistorHandler,
|
|
265
|
-
require_tumblr.tumblrHandler,
|
|
266
|
-
require_v2ex.v2exHandler,
|
|
267
|
-
require_velog.velogHandler,
|
|
268
|
-
require_vimeo.vimeoHandler,
|
|
269
|
-
require_weblogLol.weblogLolHandler,
|
|
270
|
-
require_weebly.weeblyHandler,
|
|
271
|
-
require_wordpress.wordpressHandler,
|
|
272
|
-
require_wpengine.wpengineHandler,
|
|
273
|
-
require_writeas.writeasHandler,
|
|
274
|
-
require_ximalaya.ximalayaHandler,
|
|
275
|
-
require_youtube.youtubeHandler,
|
|
276
|
-
require_zenn.zennHandler
|
|
277
|
-
] };
|
|
278
|
-
//#endregion
|
|
279
|
-
exports.anchorLabels = anchorLabels;
|
|
280
|
-
exports.anchorPathSegments = anchorPathSegments;
|
|
281
|
-
exports.defaultGuessOptions = defaultGuessOptions;
|
|
282
|
-
exports.defaultHeadersOptions = defaultHeadersOptions;
|
|
283
|
-
exports.defaultHtmlOptions = defaultHtmlOptions;
|
|
284
|
-
exports.defaultPlatformOptions = defaultPlatformOptions;
|
|
285
|
-
exports.ignoredUris = ignoredUris;
|
|
286
|
-
exports.linkSelectors = linkSelectors;
|
|
287
|
-
exports.mimeTypes = mimeTypes;
|
|
288
|
-
exports.urisBalanced = urisBalanced;
|
|
289
|
-
exports.urisComprehensive = urisComprehensive;
|
|
290
|
-
exports.urisMinimal = urisMinimal;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { GuessMethodOptions } from "../common/uris/guess/types.cjs";
|
|
2
|
-
import { HeadersMethodOptions } from "../common/uris/headers/types.cjs";
|
|
3
|
-
import { HtmlMethodOptions } from "../common/uris/html/types.cjs";
|
|
4
|
-
import { PlatformMethodOptions } from "../common/uris/platform/types.cjs";
|
|
5
|
-
import { LinkSelector, Pattern, UriEntry } from "../common/types.cjs";
|
|
6
|
-
|
|
7
|
-
//#region src/feeds/defaults.d.ts
|
|
8
|
-
declare const mimeTypes: string[];
|
|
9
|
-
declare const urisMinimal: string[];
|
|
10
|
-
declare const urisBalanced: string[];
|
|
11
|
-
declare const urisComprehensive: Array<UriEntry>;
|
|
12
|
-
declare const ignoredUris: Array<Pattern>;
|
|
13
|
-
declare const anchorLabels: string[];
|
|
14
|
-
declare const linkSelectors: Array<LinkSelector>;
|
|
15
|
-
declare const anchorPathSegments: RegExp[];
|
|
16
|
-
declare const defaultHtmlOptions: Omit<HtmlMethodOptions, 'baseUrl'>;
|
|
17
|
-
declare const defaultHeadersOptions: Omit<HeadersMethodOptions, 'baseUrl'>;
|
|
18
|
-
declare const defaultGuessOptions: Omit<GuessMethodOptions, 'baseUrl'>;
|
|
19
|
-
declare const defaultPlatformOptions: Omit<PlatformMethodOptions, 'baseUrl'>;
|
|
20
|
-
//#endregion
|
|
21
|
-
export { anchorLabels, anchorPathSegments, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../common/discover/utils.cjs");
|
|
2
|
-
const require_defaults = require("../common/discover/defaults.cjs");
|
|
3
|
-
let feedsmith = require("feedsmith");
|
|
4
|
-
//#region src/feeds/extractors.ts
|
|
5
|
-
const defaultExtractFn = ({ content, url }) => {
|
|
6
|
-
if (!content) return {
|
|
7
|
-
url,
|
|
8
|
-
isValid: false
|
|
9
|
-
};
|
|
10
|
-
try {
|
|
11
|
-
const parsed = (0, feedsmith.parseFeed)(content);
|
|
12
|
-
const { format, feed } = parsed;
|
|
13
|
-
const rawSiteUrl = require_utils.getFeedSiteUrl(parsed);
|
|
14
|
-
const siteUrl = rawSiteUrl ? require_defaults.defaultResolveUrlFn(rawSiteUrl, url) : void 0;
|
|
15
|
-
if (format === "rss" || format === "rdf") return {
|
|
16
|
-
url,
|
|
17
|
-
isValid: true,
|
|
18
|
-
format,
|
|
19
|
-
title: feed.title,
|
|
20
|
-
description: feed.description,
|
|
21
|
-
siteUrl
|
|
22
|
-
};
|
|
23
|
-
if (format === "atom") return {
|
|
24
|
-
url,
|
|
25
|
-
isValid: true,
|
|
26
|
-
format,
|
|
27
|
-
title: feed.title,
|
|
28
|
-
description: feed.subtitle,
|
|
29
|
-
siteUrl
|
|
30
|
-
};
|
|
31
|
-
if (format === "json") return {
|
|
32
|
-
url,
|
|
33
|
-
isValid: true,
|
|
34
|
-
format,
|
|
35
|
-
title: feed.title,
|
|
36
|
-
description: feed.description,
|
|
37
|
-
siteUrl
|
|
38
|
-
};
|
|
39
|
-
} catch {}
|
|
40
|
-
return {
|
|
41
|
-
url,
|
|
42
|
-
isValid: false
|
|
43
|
-
};
|
|
44
|
-
};
|
|
45
|
-
//#endregion
|
|
46
|
-
exports.defaultExtractFn = defaultExtractFn;
|
package/dist/feeds/index.cjs
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const require_defaults = require("../common/discover/defaults.cjs");
|
|
2
|
-
const require_index = require("../common/discover/index.cjs");
|
|
3
|
-
const require_defaults$1 = require("./defaults.cjs");
|
|
4
|
-
const require_extractors = require("./extractors.cjs");
|
|
5
|
-
//#region src/feeds/index.ts
|
|
6
|
-
const discoverFeeds = (input, options = {}) => {
|
|
7
|
-
return require_index.discover(input, {
|
|
8
|
-
...options,
|
|
9
|
-
methods: options.methods ?? [
|
|
10
|
-
"platform",
|
|
11
|
-
"html",
|
|
12
|
-
"headers",
|
|
13
|
-
"guess"
|
|
14
|
-
],
|
|
15
|
-
fetchFn: options.fetchFn ?? require_defaults.defaultFetchFn,
|
|
16
|
-
extractFn: options.extractFn ?? require_extractors.defaultExtractFn,
|
|
17
|
-
resolveUrlFn: options.resolveUrlFn ?? require_defaults.defaultResolveUrlFn
|
|
18
|
-
}, {
|
|
19
|
-
platform: require_defaults$1.defaultPlatformOptions,
|
|
20
|
-
html: require_defaults$1.defaultHtmlOptions,
|
|
21
|
-
headers: require_defaults$1.defaultHeadersOptions,
|
|
22
|
-
guess: require_defaults$1.defaultGuessOptions
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
//#endregion
|
|
26
|
-
exports.discoverFeeds = discoverFeeds;
|
package/dist/feeds/index.d.cts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { DiscoverInput, DiscoverOptions, DiscoverResult } from "../common/types.cjs";
|
|
2
|
-
import { FeedResult } from "./types.cjs";
|
|
3
|
-
|
|
4
|
-
//#region src/feeds/index.d.ts
|
|
5
|
-
declare const discoverFeeds: <TValid extends FeedResult = FeedResult>(input: DiscoverInput, options?: DiscoverOptions<TValid, "platform" | "html" | "headers" | "guess">) => Promise<Array<DiscoverResult<TValid>>>;
|
|
6
|
-
//#endregion
|
|
7
|
-
export { discoverFeeds };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
//#region src/feeds/platform/handlers/acast.ts
|
|
3
|
-
const hosts = [
|
|
4
|
-
"shows.acast.com",
|
|
5
|
-
"play.acast.com",
|
|
6
|
-
"embed.acast.com"
|
|
7
|
-
];
|
|
8
|
-
const excludedPaths = ["discover"];
|
|
9
|
-
const acastHandler = {
|
|
10
|
-
match: (url) => {
|
|
11
|
-
return require_utils.isHostOf(url, hosts);
|
|
12
|
-
},
|
|
13
|
-
resolve: (url) => {
|
|
14
|
-
const { hostname, pathname } = new URL(url);
|
|
15
|
-
const pathSegments = pathname.split("/").filter(Boolean);
|
|
16
|
-
if (pathSegments.length === 0) return [];
|
|
17
|
-
const slug = pathSegments[hostname.toLowerCase() === "play.acast.com" ? 1 : 0];
|
|
18
|
-
if (!slug || require_utils.isAnyOf(slug, excludedPaths)) return [];
|
|
19
|
-
return [{
|
|
20
|
-
uri: `https://feeds.acast.com/public/shows/${slug}`,
|
|
21
|
-
hint: require_utils.composeHint("acast:podcast")
|
|
22
|
-
}];
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
//#endregion
|
|
26
|
-
exports.acastHandler = acastHandler;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
//#region src/feeds/platform/handlers/ameblo.ts
|
|
3
|
-
const hosts = ["ameblo.jp", "www.ameblo.jp"];
|
|
4
|
-
const excludedPaths = [
|
|
5
|
-
"genre",
|
|
6
|
-
"hashtag",
|
|
7
|
-
"search"
|
|
8
|
-
];
|
|
9
|
-
const amebloHandler = {
|
|
10
|
-
match: (url) => {
|
|
11
|
-
return require_utils.isHostOf(url, hosts);
|
|
12
|
-
},
|
|
13
|
-
resolve: (url) => {
|
|
14
|
-
const { pathname } = new URL(url);
|
|
15
|
-
const pathSegments = pathname.split("/").filter(Boolean);
|
|
16
|
-
if (pathSegments.length === 0) return [];
|
|
17
|
-
const username = pathSegments[0];
|
|
18
|
-
if (require_utils.isAnyOf(username, excludedPaths)) return [];
|
|
19
|
-
const uris = [];
|
|
20
|
-
uris.push({
|
|
21
|
-
uri: `https://ameblo.jp/${username}/rss20.xml`,
|
|
22
|
-
hint: require_utils.composeHint("ameblo:posts-rss")
|
|
23
|
-
});
|
|
24
|
-
uris.push({
|
|
25
|
-
uri: `https://ameblo.jp/${username}/atom.xml`,
|
|
26
|
-
hint: require_utils.composeHint("ameblo:posts-atom")
|
|
27
|
-
});
|
|
28
|
-
uris.push({
|
|
29
|
-
uri: `https://rssblog.ameba.jp/${username}/rss.html`,
|
|
30
|
-
hint: require_utils.composeHint("ameblo:posts-rdf")
|
|
31
|
-
});
|
|
32
|
-
return uris;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
//#endregion
|
|
36
|
-
exports.amebloHandler = amebloHandler;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
//#region src/feeds/platform/handlers/applePodcasts.ts
|
|
3
|
-
const hosts = ["podcasts.apple.com"];
|
|
4
|
-
const podcastRegex = /^(?:\/[a-z]{2})?\/podcast\/(?:[^/]+\/)?id\d+/;
|
|
5
|
-
const feedUrlRegex = /"feedUrl"\s*:\s*"([^"]+)"/;
|
|
6
|
-
const extractFeedUrlFromContent = (content) => {
|
|
7
|
-
return content.match(feedUrlRegex)?.[1];
|
|
8
|
-
};
|
|
9
|
-
const applePodcastsHandler = {
|
|
10
|
-
match: (url) => {
|
|
11
|
-
if (!require_utils.isHostOf(url, hosts)) return false;
|
|
12
|
-
const { pathname } = new URL(url);
|
|
13
|
-
return podcastRegex.test(pathname);
|
|
14
|
-
},
|
|
15
|
-
resolve: (_url, content) => {
|
|
16
|
-
if (!content) return [];
|
|
17
|
-
const feedUrl = extractFeedUrlFromContent(content);
|
|
18
|
-
if (!feedUrl) return [];
|
|
19
|
-
return [{
|
|
20
|
-
uri: feedUrl,
|
|
21
|
-
hint: require_utils.composeHint("apple-podcasts:podcast")
|
|
22
|
-
}];
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
//#endregion
|
|
26
|
-
exports.applePodcastsHandler = applePodcastsHandler;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
const require_utils = require("../../../common/utils.cjs");
|
|
2
|
-
//#region src/feeds/platform/handlers/arena.ts
|
|
3
|
-
const hosts = ["are.na", "www.are.na"];
|
|
4
|
-
const excludedPaths = [
|
|
5
|
-
"about",
|
|
6
|
-
"api",
|
|
7
|
-
"explore",
|
|
8
|
-
"login",
|
|
9
|
-
"premium",
|
|
10
|
-
"privacy",
|
|
11
|
-
"search",
|
|
12
|
-
"settings",
|
|
13
|
-
"signup",
|
|
14
|
-
"support",
|
|
15
|
-
"terms"
|
|
16
|
-
];
|
|
17
|
-
const arenaHandler = {
|
|
18
|
-
match: (url) => {
|
|
19
|
-
return require_utils.isHostOf(url, hosts);
|
|
20
|
-
},
|
|
21
|
-
resolve: (url) => {
|
|
22
|
-
const { pathname } = new URL(url);
|
|
23
|
-
const pathSegments = pathname.split("/").filter(Boolean);
|
|
24
|
-
if (pathSegments.length === 0) return [];
|
|
25
|
-
if (pathSegments[0] === "editorial") return [{
|
|
26
|
-
uri: "https://www.are.na/editorial/feed/rss",
|
|
27
|
-
hint: require_utils.composeHint("arena:editorial")
|
|
28
|
-
}];
|
|
29
|
-
const username = pathSegments[0];
|
|
30
|
-
if (require_utils.isAnyOf(username, excludedPaths)) return [];
|
|
31
|
-
if (pathSegments[1]) return [{
|
|
32
|
-
uri: `https://www.are.na/${username}/${pathSegments[1]}/feed/rss`,
|
|
33
|
-
hint: require_utils.composeHint("arena:channel")
|
|
34
|
-
}];
|
|
35
|
-
return [{
|
|
36
|
-
uri: `https://www.are.na/${username}/feed/rss`,
|
|
37
|
-
hint: require_utils.composeHint("arena:profile")
|
|
38
|
-
}];
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
//#endregion
|
|
42
|
-
exports.arenaHandler = arenaHandler;
|