feedscout 1.8.1 → 1.9.1

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.
Files changed (192) hide show
  1. package/README.md +1 -1
  2. package/dist/blogrolls/defaults.cjs +18 -11
  3. package/dist/blogrolls/defaults.d.cts +1 -2
  4. package/dist/blogrolls/defaults.d.ts +1 -2
  5. package/dist/blogrolls/defaults.js +19 -11
  6. package/dist/blogrolls.cjs +0 -1
  7. package/dist/blogrolls.d.cts +2 -2
  8. package/dist/blogrolls.d.ts +2 -2
  9. package/dist/blogrolls.js +2 -2
  10. package/dist/common/locales.cjs +214 -10
  11. package/dist/common/locales.js +214 -10
  12. package/dist/common/types.d.cts +2 -1
  13. package/dist/common/types.d.ts +2 -1
  14. package/dist/common/uris/html/handlers.cjs +18 -0
  15. package/dist/common/uris/html/handlers.js +18 -0
  16. package/dist/common/uris/html/index.cjs +17 -1
  17. package/dist/common/uris/html/index.js +17 -1
  18. package/dist/common/uris/html/types.d.cts +6 -4
  19. package/dist/common/uris/html/types.d.ts +6 -4
  20. package/dist/common/utils.cjs +12 -3
  21. package/dist/common/utils.d.cts +6 -4
  22. package/dist/common/utils.d.ts +6 -4
  23. package/dist/common/utils.js +12 -3
  24. package/dist/feeds/defaults.cjs +129 -10
  25. package/dist/feeds/defaults.d.cts +5 -3
  26. package/dist/feeds/defaults.d.ts +5 -3
  27. package/dist/feeds/defaults.js +128 -11
  28. package/dist/feeds/platform/handlers/acast.cjs +26 -0
  29. package/dist/feeds/platform/handlers/acast.js +26 -0
  30. package/dist/feeds/platform/handlers/ameblo.cjs +36 -0
  31. package/dist/feeds/platform/handlers/ameblo.js +36 -0
  32. package/dist/feeds/platform/handlers/applePodcasts.cjs +1 -1
  33. package/dist/feeds/platform/handlers/applePodcasts.js +1 -1
  34. package/dist/feeds/platform/handlers/arena.cjs +42 -0
  35. package/dist/feeds/platform/handlers/arena.js +42 -0
  36. package/dist/feeds/platform/handlers/artstation.cjs +52 -0
  37. package/dist/feeds/platform/handlers/artstation.js +52 -0
  38. package/dist/feeds/platform/handlers/audioboom.cjs +23 -0
  39. package/dist/feeds/platform/handlers/audioboom.js +23 -0
  40. package/dist/feeds/platform/handlers/bearblog.cjs +45 -0
  41. package/dist/feeds/platform/handlers/bearblog.js +45 -0
  42. package/dist/feeds/platform/handlers/behance.cjs +7 -0
  43. package/dist/feeds/platform/handlers/behance.js +7 -0
  44. package/dist/feeds/platform/handlers/blogspot.cjs +38 -2
  45. package/dist/feeds/platform/handlers/blogspot.js +38 -2
  46. package/dist/feeds/platform/handlers/bookwyrm.cjs +48 -0
  47. package/dist/feeds/platform/handlers/bookwyrm.js +48 -0
  48. package/dist/feeds/platform/handlers/buttondown.cjs +43 -0
  49. package/dist/feeds/platform/handlers/buttondown.js +43 -0
  50. package/dist/feeds/platform/handlers/buzzsprout.cjs +22 -0
  51. package/dist/feeds/platform/handlers/buzzsprout.js +22 -0
  52. package/dist/feeds/platform/handlers/codeberg.cjs +5 -5
  53. package/dist/feeds/platform/handlers/codeberg.js +5 -5
  54. package/dist/feeds/platform/handlers/dailymotion.cjs +16 -0
  55. package/dist/feeds/platform/handlers/dailymotion.js +16 -0
  56. package/dist/feeds/platform/handlers/deviantart.cjs +25 -6
  57. package/dist/feeds/platform/handlers/deviantart.js +25 -6
  58. package/dist/feeds/platform/handlers/devto.cjs +8 -0
  59. package/dist/feeds/platform/handlers/devto.js +8 -0
  60. package/dist/feeds/platform/handlers/discourse.cjs +70 -0
  61. package/dist/feeds/platform/handlers/discourse.js +70 -0
  62. package/dist/feeds/platform/handlers/dreamwidth.cjs +48 -0
  63. package/dist/feeds/platform/handlers/dreamwidth.js +48 -0
  64. package/dist/feeds/platform/handlers/exblog.cjs +35 -0
  65. package/dist/feeds/platform/handlers/exblog.js +35 -0
  66. package/dist/feeds/platform/handlers/fireside.cjs +24 -0
  67. package/dist/feeds/platform/handlers/fireside.js +24 -0
  68. package/dist/feeds/platform/handlers/friendica.cjs +44 -0
  69. package/dist/feeds/platform/handlers/friendica.js +44 -0
  70. package/dist/feeds/platform/handlers/ghost.cjs +30 -0
  71. package/dist/feeds/platform/handlers/ghost.js +30 -0
  72. package/dist/feeds/platform/handlers/github.cjs +6 -0
  73. package/dist/feeds/platform/handlers/github.js +6 -0
  74. package/dist/feeds/platform/handlers/githubGist.cjs +16 -5
  75. package/dist/feeds/platform/handlers/githubGist.js +16 -5
  76. package/dist/feeds/platform/handlers/gitlab.cjs +31 -13
  77. package/dist/feeds/platform/handlers/gitlab.js +31 -13
  78. package/dist/feeds/platform/handlers/goodreads.cjs +18 -8
  79. package/dist/feeds/platform/handlers/goodreads.js +18 -8
  80. package/dist/feeds/platform/handlers/hackernews.cjs +21 -0
  81. package/dist/feeds/platform/handlers/hackernews.js +21 -0
  82. package/dist/feeds/platform/handlers/hashnode.cjs +1 -1
  83. package/dist/feeds/platform/handlers/hashnode.js +1 -1
  84. package/dist/feeds/platform/handlers/hatenablog.cjs +4 -1
  85. package/dist/feeds/platform/handlers/hatenablog.js +4 -1
  86. package/dist/feeds/platform/handlers/hearthis.cjs +32 -0
  87. package/dist/feeds/platform/handlers/hearthis.js +32 -0
  88. package/dist/feeds/platform/handlers/heyWorld.cjs +18 -0
  89. package/dist/feeds/platform/handlers/heyWorld.js +18 -0
  90. package/dist/feeds/platform/handlers/insanejournal.cjs +69 -0
  91. package/dist/feeds/platform/handlers/insanejournal.js +69 -0
  92. package/dist/feeds/platform/handlers/itchio.cjs +24 -1
  93. package/dist/feeds/platform/handlers/itchio.js +24 -1
  94. package/dist/feeds/platform/handlers/lemmy.cjs +46 -4
  95. package/dist/feeds/platform/handlers/lemmy.js +46 -4
  96. package/dist/feeds/platform/handlers/letterboxd.cjs +4 -0
  97. package/dist/feeds/platform/handlers/letterboxd.js +4 -0
  98. package/dist/feeds/platform/handlers/libsyn.cjs +25 -0
  99. package/dist/feeds/platform/handlers/libsyn.js +25 -0
  100. package/dist/feeds/platform/handlers/listed.cjs +20 -0
  101. package/dist/feeds/platform/handlers/listed.js +20 -0
  102. package/dist/feeds/platform/handlers/livejournal.cjs +68 -0
  103. package/dist/feeds/platform/handlers/livejournal.js +68 -0
  104. package/dist/feeds/platform/handlers/mastodon.cjs +32 -0
  105. package/dist/feeds/platform/handlers/mastodon.js +32 -0
  106. package/dist/feeds/platform/handlers/mataroa.cjs +16 -0
  107. package/dist/feeds/platform/handlers/mataroa.js +16 -0
  108. package/dist/feeds/platform/handlers/medium.cjs +2 -2
  109. package/dist/feeds/platform/handlers/medium.js +2 -2
  110. package/dist/feeds/platform/handlers/microblog.cjs +55 -0
  111. package/dist/feeds/platform/handlers/microblog.js +55 -0
  112. package/dist/feeds/platform/handlers/misskey.cjs +40 -0
  113. package/dist/feeds/platform/handlers/misskey.js +40 -0
  114. package/dist/feeds/platform/handlers/myanimelist.cjs +43 -0
  115. package/dist/feeds/platform/handlers/myanimelist.js +43 -0
  116. package/dist/feeds/platform/handlers/naverBlog.cjs +21 -0
  117. package/dist/feeds/platform/handlers/naverBlog.js +21 -0
  118. package/dist/feeds/platform/handlers/nebula.cjs +68 -0
  119. package/dist/feeds/platform/handlers/nebula.js +68 -0
  120. package/dist/feeds/platform/handlers/note.cjs +53 -0
  121. package/dist/feeds/platform/handlers/note.js +53 -0
  122. package/dist/feeds/platform/handlers/observable.cjs +34 -0
  123. package/dist/feeds/platform/handlers/observable.js +34 -0
  124. package/dist/feeds/platform/handlers/odysee.cjs +20 -0
  125. package/dist/feeds/platform/handlers/odysee.js +20 -0
  126. package/dist/feeds/platform/handlers/pagecord.cjs +16 -0
  127. package/dist/feeds/platform/handlers/pagecord.js +16 -0
  128. package/dist/feeds/platform/handlers/paragraph.cjs +1 -2
  129. package/dist/feeds/platform/handlers/paragraph.js +1 -2
  130. package/dist/feeds/platform/handlers/pika.cjs +35 -0
  131. package/dist/feeds/platform/handlers/pika.js +35 -0
  132. package/dist/feeds/platform/handlers/pinterest.cjs +13 -0
  133. package/dist/feeds/platform/handlers/pinterest.js +13 -0
  134. package/dist/feeds/platform/handlers/pixelfed.cjs +46 -0
  135. package/dist/feeds/platform/handlers/pixelfed.js +46 -0
  136. package/dist/feeds/platform/handlers/pleroma.cjs +34 -0
  137. package/dist/feeds/platform/handlers/pleroma.js +34 -0
  138. package/dist/feeds/platform/handlers/podbean.cjs +29 -0
  139. package/dist/feeds/platform/handlers/podbean.js +29 -0
  140. package/dist/feeds/platform/handlers/podigee.cjs +29 -0
  141. package/dist/feeds/platform/handlers/podigee.js +29 -0
  142. package/dist/feeds/platform/handlers/posthaven.cjs +24 -0
  143. package/dist/feeds/platform/handlers/posthaven.js +24 -0
  144. package/dist/feeds/platform/handlers/prose.cjs +26 -0
  145. package/dist/feeds/platform/handlers/prose.js +26 -0
  146. package/dist/feeds/platform/handlers/qiita.cjs +58 -0
  147. package/dist/feeds/platform/handlers/qiita.js +58 -0
  148. package/dist/feeds/platform/handlers/reddit.cjs +83 -9
  149. package/dist/feeds/platform/handlers/reddit.js +83 -9
  150. package/dist/feeds/platform/handlers/rssCom.cjs +20 -0
  151. package/dist/feeds/platform/handlers/rssCom.js +20 -0
  152. package/dist/feeds/platform/handlers/seesaa.cjs +22 -0
  153. package/dist/feeds/platform/handlers/seesaa.js +22 -0
  154. package/dist/feeds/platform/handlers/sourceforge.cjs +37 -4
  155. package/dist/feeds/platform/handlers/sourceforge.js +37 -4
  156. package/dist/feeds/platform/handlers/spreaker.cjs +21 -0
  157. package/dist/feeds/platform/handlers/spreaker.js +21 -0
  158. package/dist/feeds/platform/handlers/stackExchange.cjs +26 -2
  159. package/dist/feeds/platform/handlers/stackExchange.js +26 -2
  160. package/dist/feeds/platform/handlers/steam.cjs +7 -0
  161. package/dist/feeds/platform/handlers/steam.js +7 -0
  162. package/dist/feeds/platform/handlers/tildes.cjs +41 -0
  163. package/dist/feeds/platform/handlers/tildes.js +41 -0
  164. package/dist/feeds/platform/handlers/tistory.cjs +16 -0
  165. package/dist/feeds/platform/handlers/tistory.js +16 -0
  166. package/dist/feeds/platform/handlers/transistor.cjs +29 -0
  167. package/dist/feeds/platform/handlers/transistor.js +29 -0
  168. package/dist/feeds/platform/handlers/velog.cjs +24 -0
  169. package/dist/feeds/platform/handlers/velog.js +24 -0
  170. package/dist/feeds/platform/handlers/vimeo.cjs +6 -0
  171. package/dist/feeds/platform/handlers/vimeo.js +6 -0
  172. package/dist/feeds/platform/handlers/weblogLol.cjs +26 -0
  173. package/dist/feeds/platform/handlers/weblogLol.js +26 -0
  174. package/dist/feeds/platform/handlers/weebly.cjs +25 -0
  175. package/dist/feeds/platform/handlers/weebly.js +25 -0
  176. package/dist/feeds/platform/handlers/wordpress.cjs +173 -28
  177. package/dist/feeds/platform/handlers/wordpress.js +173 -28
  178. package/dist/feeds/platform/handlers/writeas.cjs +51 -0
  179. package/dist/feeds/platform/handlers/writeas.js +51 -0
  180. package/dist/feeds/platform/handlers/ximalaya.cjs +1 -1
  181. package/dist/feeds/platform/handlers/ximalaya.js +1 -1
  182. package/dist/feeds/platform/handlers/youtube.cjs +4 -1
  183. package/dist/feeds/platform/handlers/youtube.js +4 -1
  184. package/dist/feeds/platform/handlers/zenn.cjs +54 -0
  185. package/dist/feeds/platform/handlers/zenn.js +54 -0
  186. package/dist/feeds.cjs +2 -0
  187. package/dist/feeds.d.cts +2 -2
  188. package/dist/feeds.d.ts +2 -2
  189. package/dist/feeds.js +2 -2
  190. package/dist/utils.d.cts +2 -1
  191. package/dist/utils.d.ts +2 -1
  192. package/package.json +6 -7
@@ -8,35 +8,86 @@ const require_lobsters = require("./platform/handlers/lobsters.cjs");
8
8
  const require_reddit = require("./platform/handlers/reddit.cjs");
9
9
  const require_sourceforge = require("./platform/handlers/sourceforge.cjs");
10
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");
11
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");
12
18
  const require_behance = require("./platform/handlers/behance.cjs");
13
19
  const require_blogspot = require("./platform/handlers/blogspot.cjs");
14
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");
15
24
  const require_csdn = require("./platform/handlers/csdn.cjs");
16
25
  const require_dailymotion = require("./platform/handlers/dailymotion.cjs");
26
+ const require_discourse = require("./platform/handlers/discourse.cjs");
17
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");
18
33
  const require_goodreads = require("./platform/handlers/goodreads.cjs");
34
+ const require_hackernews = require("./platform/handlers/hackernews.cjs");
19
35
  const require_hashnode = require("./platform/handlers/hashnode.cjs");
20
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");
21
40
  const require_itchio = require("./platform/handlers/itchio.cjs");
22
41
  const require_kickstarter = require("./platform/handlers/kickstarter.cjs");
23
42
  const require_lemmy = require("./platform/handlers/lemmy.cjs");
24
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");
25
47
  const require_mastodon = require("./platform/handlers/mastodon.cjs");
48
+ const require_mataroa = require("./platform/handlers/mataroa.cjs");
26
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");
27
59
  const require_paragraph = require("./platform/handlers/paragraph.cjs");
60
+ const require_pika = require("./platform/handlers/pika.cjs");
28
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");
29
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");
30
72
  const require_soundcloud = require("./platform/handlers/soundcloud.cjs");
73
+ const require_spreaker = require("./platform/handlers/spreaker.cjs");
31
74
  const require_stackExchange = require("./platform/handlers/stackExchange.cjs");
32
75
  const require_steam = require("./platform/handlers/steam.cjs");
33
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");
34
80
  const require_v2ex = require("./platform/handlers/v2ex.cjs");
81
+ const require_velog = require("./platform/handlers/velog.cjs");
35
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");
36
85
  const require_wordpress = require("./platform/handlers/wordpress.cjs");
37
86
  const require_wpengine = require("./platform/handlers/wpengine.cjs");
87
+ const require_writeas = require("./platform/handlers/writeas.cjs");
38
88
  const require_ximalaya = require("./platform/handlers/ximalaya.cjs");
39
89
  const require_youtube = require("./platform/handlers/youtube.cjs");
90
+ const require_zenn = require("./platform/handlers/zenn.cjs");
40
91
  //#region src/feeds/defaults.ts
41
92
  const mimeTypes = [
42
93
  "application/rss+xml",
@@ -101,12 +152,15 @@ const urisComprehensive = [
101
152
  "/feeds/posts/default?alt=rss",
102
153
  "/feeds/comments/default"
103
154
  ];
104
- const ignoredUris = ["wp-json/oembed/", "wp-json/wp/"];
155
+ const ignoredUris = [
156
+ "wp-json/oembed/",
157
+ "wp-json/wp/",
158
+ /[?&][^=&]*=(https?:|https?%3a|aHR0c)/i
159
+ ];
105
160
  const anchorLabels = [
106
161
  "rss",
107
162
  "feed",
108
163
  "atom",
109
- "subscribe",
110
164
  "syndicate",
111
165
  "syndication",
112
166
  "json feed"
@@ -115,57 +169,122 @@ const linkSelectors = [{
115
169
  rel: "alternate",
116
170
  types: mimeTypes
117
171
  }, { rel: "feed" }];
172
+ const anchorPathSegments = [
173
+ /\/rss\//,
174
+ /\/atom\//,
175
+ /\/feed\//
176
+ ];
177
+ const anchorAttributes = [
178
+ "aria-label",
179
+ "title",
180
+ "data-framer-name"
181
+ ];
118
182
  const defaultHtmlOptions = {
119
183
  linkSelectors,
120
184
  anchorUris: urisComprehensive.flat(),
185
+ anchorPathSegments,
121
186
  anchorIgnoredUris: ignoredUris,
122
- anchorLabels
187
+ anchorLabels,
188
+ anchorAttributes
123
189
  };
124
190
  const defaultHeadersOptions = { linkSelectors };
125
191
  const defaultGuessOptions = { uris: urisBalanced };
126
192
  const defaultPlatformOptions = { handlers: [
193
+ require_acast.acastHandler,
194
+ require_ameblo.amebloHandler,
127
195
  require_applePodcasts.applePodcastsHandler,
196
+ require_arena.arenaHandler,
197
+ require_artstation.artstationHandler,
198
+ require_audioboom.audioboomHandler,
199
+ require_bearblog.bearblogHandler,
128
200
  require_behance.behanceHandler,
129
201
  require_blogspot.blogspotHandler,
130
202
  require_bluesky.blueskyHandler,
131
- require_csdn.csdnHandler,
203
+ require_bookwyrm.bookwyrmHandler,
204
+ require_buttondown.buttondownHandler,
205
+ require_buzzsprout.buzzsproutHandler,
132
206
  require_codeberg.codebergHandler,
133
- require_douban.doubanHandler,
134
- require_deviantart.deviantartHandler,
207
+ require_csdn.csdnHandler,
135
208
  require_dailymotion.dailymotionHandler,
209
+ require_deviantart.deviantartHandler,
136
210
  require_devto.devtoHandler,
137
- require_goodreads.goodreadsHandler,
211
+ require_discourse.discourseHandler,
212
+ require_douban.doubanHandler,
213
+ require_dreamwidth.dreamwidthHandler,
214
+ require_exblog.exblogHandler,
215
+ require_fireside.firesideHandler,
216
+ require_friendica.friendicaHandler,
217
+ require_ghost.ghostHandler,
138
218
  require_github.githubHandler,
139
- require_hashnode.hashnodeHandler,
140
- require_hatenablog.hatenablogHandler,
141
219
  require_githubGist.githubGistHandler,
142
220
  require_gitlab.gitlabHandler,
221
+ require_goodreads.goodreadsHandler,
222
+ require_hackernews.hackernewsHandler,
223
+ require_hashnode.hashnodeHandler,
224
+ require_hatenablog.hatenablogHandler,
225
+ require_hearthis.hearthisHandler,
226
+ require_heyWorld.heyWorldHandler,
227
+ require_insanejournal.insanejournalHandler,
143
228
  require_itchio.itchioHandler,
144
229
  require_kickstarter.kickstarterHandler,
145
230
  require_lemmy.lemmyHandler,
146
231
  require_letterboxd.letterboxdHandler,
232
+ require_libsyn.libsynHandler,
233
+ require_listed.listedHandler,
234
+ require_livejournal.livejournalHandler,
147
235
  require_lobsters.lobstersHandler,
148
236
  require_mastodon.mastodonHandler,
237
+ require_mataroa.mataroaHandler,
149
238
  require_medium.mediumHandler,
239
+ require_microblog.microblogHandler,
240
+ require_misskey.misskeyHandler,
241
+ require_myanimelist.myanimelistHandler,
242
+ require_naverBlog.naverBlogHandler,
243
+ require_nebula.nebulaHandler,
244
+ require_note.noteHandler,
245
+ require_observable.observableHandler,
246
+ require_odysee.odyseeHandler,
247
+ require_pagecord.pagecordHandler,
150
248
  require_paragraph.paragraphHandler,
249
+ require_pika.pikaHandler,
151
250
  require_pinterest.pinterestHandler,
251
+ require_pixelfed.pixelfedHandler,
252
+ require_pleroma.pleromaHandler,
253
+ require_podbean.podbeanHandler,
254
+ require_podigee.podigeeHandler,
255
+ require_posthaven.posthavenHandler,
152
256
  require_producthunt.producthuntHandler,
257
+ require_prose.proseHandler,
258
+ require_qiita.qiitaHandler,
153
259
  require_reddit.redditHandler,
260
+ require_rssCom.rssComHandler,
261
+ require_seesaa.seesaaHandler,
154
262
  require_soundcloud.soundcloudHandler,
155
263
  require_sourceforge.sourceforgeHandler,
264
+ require_spreaker.spreakerHandler,
156
265
  require_stackExchange.stackExchangeHandler,
157
266
  require_steam.steamHandler,
158
267
  require_substack.substackHandler,
268
+ require_tildes.tildesHandler,
269
+ require_tistory.tistoryHandler,
270
+ require_transistor.transistorHandler,
159
271
  require_tumblr.tumblrHandler,
160
272
  require_v2ex.v2exHandler,
273
+ require_velog.velogHandler,
161
274
  require_vimeo.vimeoHandler,
275
+ require_weblogLol.weblogLolHandler,
276
+ require_weebly.weeblyHandler,
162
277
  require_wordpress.wordpressHandler,
163
278
  require_wpengine.wpengineHandler,
279
+ require_writeas.writeasHandler,
164
280
  require_ximalaya.ximalayaHandler,
165
- require_youtube.youtubeHandler
281
+ require_youtube.youtubeHandler,
282
+ require_zenn.zennHandler
166
283
  ] };
167
284
  //#endregion
285
+ exports.anchorAttributes = anchorAttributes;
168
286
  exports.anchorLabels = anchorLabels;
287
+ exports.anchorPathSegments = anchorPathSegments;
169
288
  exports.defaultGuessOptions = defaultGuessOptions;
170
289
  exports.defaultHeadersOptions = defaultHeadersOptions;
171
290
  exports.defaultHtmlOptions = defaultHtmlOptions;
@@ -2,19 +2,21 @@ import { GuessMethodOptions } from "../common/uris/guess/types.cjs";
2
2
  import { HeadersMethodOptions } from "../common/uris/headers/types.cjs";
3
3
  import { HtmlMethodOptions } from "../common/uris/html/types.cjs";
4
4
  import { PlatformMethodOptions } from "../common/uris/platform/types.cjs";
5
- import { LinkSelector, UriEntry } from "../common/types.cjs";
5
+ import { LinkSelector, Pattern, UriEntry } from "../common/types.cjs";
6
6
 
7
7
  //#region src/feeds/defaults.d.ts
8
8
  declare const mimeTypes: string[];
9
9
  declare const urisMinimal: string[];
10
10
  declare const urisBalanced: string[];
11
11
  declare const urisComprehensive: Array<UriEntry>;
12
- declare const ignoredUris: string[];
12
+ declare const ignoredUris: Array<Pattern>;
13
13
  declare const anchorLabels: string[];
14
14
  declare const linkSelectors: Array<LinkSelector>;
15
+ declare const anchorPathSegments: RegExp[];
16
+ declare const anchorAttributes: string[];
15
17
  declare const defaultHtmlOptions: Omit<HtmlMethodOptions, 'baseUrl'>;
16
18
  declare const defaultHeadersOptions: Omit<HeadersMethodOptions, 'baseUrl'>;
17
19
  declare const defaultGuessOptions: Omit<GuessMethodOptions, 'baseUrl'>;
18
20
  declare const defaultPlatformOptions: Omit<PlatformMethodOptions, 'baseUrl'>;
19
21
  //#endregion
20
- export { anchorLabels, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
22
+ export { anchorAttributes, anchorLabels, anchorPathSegments, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
@@ -2,19 +2,21 @@ import { GuessMethodOptions } from "../common/uris/guess/types.js";
2
2
  import { HeadersMethodOptions } from "../common/uris/headers/types.js";
3
3
  import { HtmlMethodOptions } from "../common/uris/html/types.js";
4
4
  import { PlatformMethodOptions } from "../common/uris/platform/types.js";
5
- import { LinkSelector, UriEntry } from "../common/types.js";
5
+ import { LinkSelector, Pattern, UriEntry } from "../common/types.js";
6
6
 
7
7
  //#region src/feeds/defaults.d.ts
8
8
  declare const mimeTypes: string[];
9
9
  declare const urisMinimal: string[];
10
10
  declare const urisBalanced: string[];
11
11
  declare const urisComprehensive: Array<UriEntry>;
12
- declare const ignoredUris: string[];
12
+ declare const ignoredUris: Array<Pattern>;
13
13
  declare const anchorLabels: string[];
14
14
  declare const linkSelectors: Array<LinkSelector>;
15
+ declare const anchorPathSegments: RegExp[];
16
+ declare const anchorAttributes: string[];
15
17
  declare const defaultHtmlOptions: Omit<HtmlMethodOptions, 'baseUrl'>;
16
18
  declare const defaultHeadersOptions: Omit<HeadersMethodOptions, 'baseUrl'>;
17
19
  declare const defaultGuessOptions: Omit<GuessMethodOptions, 'baseUrl'>;
18
20
  declare const defaultPlatformOptions: Omit<PlatformMethodOptions, 'baseUrl'>;
19
21
  //#endregion
20
- export { anchorLabels, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
22
+ export { anchorAttributes, anchorLabels, anchorPathSegments, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
@@ -8,35 +8,86 @@ import { lobstersHandler } from "./platform/handlers/lobsters.js";
8
8
  import { redditHandler } from "./platform/handlers/reddit.js";
9
9
  import { sourceforgeHandler } from "./platform/handlers/sourceforge.js";
10
10
  import { tumblrHandler } from "./platform/handlers/tumblr.js";
11
+ import { acastHandler } from "./platform/handlers/acast.js";
12
+ import { amebloHandler } from "./platform/handlers/ameblo.js";
11
13
  import { applePodcastsHandler } from "./platform/handlers/applePodcasts.js";
14
+ import { arenaHandler } from "./platform/handlers/arena.js";
15
+ import { artstationHandler } from "./platform/handlers/artstation.js";
16
+ import { audioboomHandler } from "./platform/handlers/audioboom.js";
17
+ import { bearblogHandler } from "./platform/handlers/bearblog.js";
12
18
  import { behanceHandler } from "./platform/handlers/behance.js";
13
19
  import { blogspotHandler } from "./platform/handlers/blogspot.js";
14
20
  import { blueskyHandler } from "./platform/handlers/bluesky.js";
21
+ import { bookwyrmHandler } from "./platform/handlers/bookwyrm.js";
22
+ import { buttondownHandler } from "./platform/handlers/buttondown.js";
23
+ import { buzzsproutHandler } from "./platform/handlers/buzzsprout.js";
15
24
  import { csdnHandler } from "./platform/handlers/csdn.js";
16
25
  import { dailymotionHandler } from "./platform/handlers/dailymotion.js";
26
+ import { discourseHandler } from "./platform/handlers/discourse.js";
17
27
  import { doubanHandler } from "./platform/handlers/douban.js";
28
+ import { dreamwidthHandler } from "./platform/handlers/dreamwidth.js";
29
+ import { exblogHandler } from "./platform/handlers/exblog.js";
30
+ import { firesideHandler } from "./platform/handlers/fireside.js";
31
+ import { friendicaHandler } from "./platform/handlers/friendica.js";
32
+ import { ghostHandler } from "./platform/handlers/ghost.js";
18
33
  import { goodreadsHandler } from "./platform/handlers/goodreads.js";
34
+ import { hackernewsHandler } from "./platform/handlers/hackernews.js";
19
35
  import { hashnodeHandler } from "./platform/handlers/hashnode.js";
20
36
  import { hatenablogHandler } from "./platform/handlers/hatenablog.js";
37
+ import { hearthisHandler } from "./platform/handlers/hearthis.js";
38
+ import { heyWorldHandler } from "./platform/handlers/heyWorld.js";
39
+ import { insanejournalHandler } from "./platform/handlers/insanejournal.js";
21
40
  import { itchioHandler } from "./platform/handlers/itchio.js";
22
41
  import { kickstarterHandler } from "./platform/handlers/kickstarter.js";
23
42
  import { lemmyHandler } from "./platform/handlers/lemmy.js";
24
43
  import { letterboxdHandler } from "./platform/handlers/letterboxd.js";
44
+ import { libsynHandler } from "./platform/handlers/libsyn.js";
45
+ import { listedHandler } from "./platform/handlers/listed.js";
46
+ import { livejournalHandler } from "./platform/handlers/livejournal.js";
25
47
  import { mastodonHandler } from "./platform/handlers/mastodon.js";
48
+ import { mataroaHandler } from "./platform/handlers/mataroa.js";
26
49
  import { mediumHandler } from "./platform/handlers/medium.js";
50
+ import { microblogHandler } from "./platform/handlers/microblog.js";
51
+ import { misskeyHandler } from "./platform/handlers/misskey.js";
52
+ import { myanimelistHandler } from "./platform/handlers/myanimelist.js";
53
+ import { naverBlogHandler } from "./platform/handlers/naverBlog.js";
54
+ import { nebulaHandler } from "./platform/handlers/nebula.js";
55
+ import { noteHandler } from "./platform/handlers/note.js";
56
+ import { observableHandler } from "./platform/handlers/observable.js";
57
+ import { odyseeHandler } from "./platform/handlers/odysee.js";
58
+ import { pagecordHandler } from "./platform/handlers/pagecord.js";
27
59
  import { paragraphHandler } from "./platform/handlers/paragraph.js";
60
+ import { pikaHandler } from "./platform/handlers/pika.js";
28
61
  import { pinterestHandler } from "./platform/handlers/pinterest.js";
62
+ import { pixelfedHandler } from "./platform/handlers/pixelfed.js";
63
+ import { pleromaHandler } from "./platform/handlers/pleroma.js";
64
+ import { podbeanHandler } from "./platform/handlers/podbean.js";
65
+ import { podigeeHandler } from "./platform/handlers/podigee.js";
66
+ import { posthavenHandler } from "./platform/handlers/posthaven.js";
29
67
  import { producthuntHandler } from "./platform/handlers/producthunt.js";
68
+ import { proseHandler } from "./platform/handlers/prose.js";
69
+ import { qiitaHandler } from "./platform/handlers/qiita.js";
70
+ import { rssComHandler } from "./platform/handlers/rssCom.js";
71
+ import { seesaaHandler } from "./platform/handlers/seesaa.js";
30
72
  import { soundcloudHandler } from "./platform/handlers/soundcloud.js";
73
+ import { spreakerHandler } from "./platform/handlers/spreaker.js";
31
74
  import { stackExchangeHandler } from "./platform/handlers/stackExchange.js";
32
75
  import { steamHandler } from "./platform/handlers/steam.js";
33
76
  import { substackHandler } from "./platform/handlers/substack.js";
77
+ import { tildesHandler } from "./platform/handlers/tildes.js";
78
+ import { tistoryHandler } from "./platform/handlers/tistory.js";
79
+ import { transistorHandler } from "./platform/handlers/transistor.js";
34
80
  import { v2exHandler } from "./platform/handlers/v2ex.js";
81
+ import { velogHandler } from "./platform/handlers/velog.js";
35
82
  import { vimeoHandler } from "./platform/handlers/vimeo.js";
83
+ import { weblogLolHandler } from "./platform/handlers/weblogLol.js";
84
+ import { weeblyHandler } from "./platform/handlers/weebly.js";
36
85
  import { wordpressHandler } from "./platform/handlers/wordpress.js";
37
86
  import { wpengineHandler } from "./platform/handlers/wpengine.js";
87
+ import { writeasHandler } from "./platform/handlers/writeas.js";
38
88
  import { ximalayaHandler } from "./platform/handlers/ximalaya.js";
39
89
  import { youtubeHandler } from "./platform/handlers/youtube.js";
90
+ import { zennHandler } from "./platform/handlers/zenn.js";
40
91
  //#region src/feeds/defaults.ts
41
92
  const mimeTypes = [
42
93
  "application/rss+xml",
@@ -101,12 +152,15 @@ const urisComprehensive = [
101
152
  "/feeds/posts/default?alt=rss",
102
153
  "/feeds/comments/default"
103
154
  ];
104
- const ignoredUris = ["wp-json/oembed/", "wp-json/wp/"];
155
+ const ignoredUris = [
156
+ "wp-json/oembed/",
157
+ "wp-json/wp/",
158
+ /[?&][^=&]*=(https?:|https?%3a|aHR0c)/i
159
+ ];
105
160
  const anchorLabels = [
106
161
  "rss",
107
162
  "feed",
108
163
  "atom",
109
- "subscribe",
110
164
  "syndicate",
111
165
  "syndication",
112
166
  "json feed"
@@ -115,54 +169,117 @@ const linkSelectors = [{
115
169
  rel: "alternate",
116
170
  types: mimeTypes
117
171
  }, { rel: "feed" }];
172
+ const anchorPathSegments = [
173
+ /\/rss\//,
174
+ /\/atom\//,
175
+ /\/feed\//
176
+ ];
177
+ const anchorAttributes = [
178
+ "aria-label",
179
+ "title",
180
+ "data-framer-name"
181
+ ];
118
182
  const defaultHtmlOptions = {
119
183
  linkSelectors,
120
184
  anchorUris: urisComprehensive.flat(),
185
+ anchorPathSegments,
121
186
  anchorIgnoredUris: ignoredUris,
122
- anchorLabels
187
+ anchorLabels,
188
+ anchorAttributes
123
189
  };
124
190
  const defaultHeadersOptions = { linkSelectors };
125
191
  const defaultGuessOptions = { uris: urisBalanced };
126
192
  const defaultPlatformOptions = { handlers: [
193
+ acastHandler,
194
+ amebloHandler,
127
195
  applePodcastsHandler,
196
+ arenaHandler,
197
+ artstationHandler,
198
+ audioboomHandler,
199
+ bearblogHandler,
128
200
  behanceHandler,
129
201
  blogspotHandler,
130
202
  blueskyHandler,
131
- csdnHandler,
203
+ bookwyrmHandler,
204
+ buttondownHandler,
205
+ buzzsproutHandler,
132
206
  codebergHandler,
133
- doubanHandler,
134
- deviantartHandler,
207
+ csdnHandler,
135
208
  dailymotionHandler,
209
+ deviantartHandler,
136
210
  devtoHandler,
137
- goodreadsHandler,
211
+ discourseHandler,
212
+ doubanHandler,
213
+ dreamwidthHandler,
214
+ exblogHandler,
215
+ firesideHandler,
216
+ friendicaHandler,
217
+ ghostHandler,
138
218
  githubHandler,
139
- hashnodeHandler,
140
- hatenablogHandler,
141
219
  githubGistHandler,
142
220
  gitlabHandler,
221
+ goodreadsHandler,
222
+ hackernewsHandler,
223
+ hashnodeHandler,
224
+ hatenablogHandler,
225
+ hearthisHandler,
226
+ heyWorldHandler,
227
+ insanejournalHandler,
143
228
  itchioHandler,
144
229
  kickstarterHandler,
145
230
  lemmyHandler,
146
231
  letterboxdHandler,
232
+ libsynHandler,
233
+ listedHandler,
234
+ livejournalHandler,
147
235
  lobstersHandler,
148
236
  mastodonHandler,
237
+ mataroaHandler,
149
238
  mediumHandler,
239
+ microblogHandler,
240
+ misskeyHandler,
241
+ myanimelistHandler,
242
+ naverBlogHandler,
243
+ nebulaHandler,
244
+ noteHandler,
245
+ observableHandler,
246
+ odyseeHandler,
247
+ pagecordHandler,
150
248
  paragraphHandler,
249
+ pikaHandler,
151
250
  pinterestHandler,
251
+ pixelfedHandler,
252
+ pleromaHandler,
253
+ podbeanHandler,
254
+ podigeeHandler,
255
+ posthavenHandler,
152
256
  producthuntHandler,
257
+ proseHandler,
258
+ qiitaHandler,
153
259
  redditHandler,
260
+ rssComHandler,
261
+ seesaaHandler,
154
262
  soundcloudHandler,
155
263
  sourceforgeHandler,
264
+ spreakerHandler,
156
265
  stackExchangeHandler,
157
266
  steamHandler,
158
267
  substackHandler,
268
+ tildesHandler,
269
+ tistoryHandler,
270
+ transistorHandler,
159
271
  tumblrHandler,
160
272
  v2exHandler,
273
+ velogHandler,
161
274
  vimeoHandler,
275
+ weblogLolHandler,
276
+ weeblyHandler,
162
277
  wordpressHandler,
163
278
  wpengineHandler,
279
+ writeasHandler,
164
280
  ximalayaHandler,
165
- youtubeHandler
281
+ youtubeHandler,
282
+ zennHandler
166
283
  ] };
167
284
  //#endregion
168
- export { anchorLabels, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
285
+ export { anchorAttributes, anchorLabels, anchorPathSegments, defaultGuessOptions, defaultHeadersOptions, defaultHtmlOptions, defaultPlatformOptions, ignoredUris, linkSelectors, mimeTypes, urisBalanced, urisComprehensive, urisMinimal };
@@ -0,0 +1,26 @@
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;
@@ -0,0 +1,26 @@
1
+ import { composeHint, isAnyOf, isHostOf } from "../../../common/utils.js";
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 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 || isAnyOf(slug, excludedPaths)) return [];
19
+ return [{
20
+ uri: `https://feeds.acast.com/public/shows/${slug}`,
21
+ hint: composeHint("acast:podcast")
22
+ }];
23
+ }
24
+ };
25
+ //#endregion
26
+ export { acastHandler };
@@ -0,0 +1,36 @@
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;
@@ -0,0 +1,36 @@
1
+ import { composeHint, isAnyOf, isHostOf } from "../../../common/utils.js";
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 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 (isAnyOf(username, excludedPaths)) return [];
19
+ const uris = [];
20
+ uris.push({
21
+ uri: `https://ameblo.jp/${username}/rss20.xml`,
22
+ hint: composeHint("ameblo:posts-rss")
23
+ });
24
+ uris.push({
25
+ uri: `https://ameblo.jp/${username}/atom.xml`,
26
+ hint: composeHint("ameblo:posts-atom")
27
+ });
28
+ uris.push({
29
+ uri: `https://rssblog.ameba.jp/${username}/rss.html`,
30
+ hint: composeHint("ameblo:posts-rdf")
31
+ });
32
+ return uris;
33
+ }
34
+ };
35
+ //#endregion
36
+ export { amebloHandler };
@@ -1,7 +1,7 @@
1
1
  const require_utils = require("../../../common/utils.cjs");
2
2
  //#region src/feeds/platform/handlers/applePodcasts.ts
3
3
  const hosts = ["podcasts.apple.com"];
4
- const podcastRegex = /^\/[a-z]{2}\/podcast\/[^/]+\/id\d+/;
4
+ const podcastRegex = /^(?:\/[a-z]{2})?\/podcast\/(?:[^/]+\/)?id\d+/;
5
5
  const feedUrlRegex = /"feedUrl"\s*:\s*"([^"]+)"/;
6
6
  const extractFeedUrlFromContent = (content) => {
7
7
  return content.match(feedUrlRegex)?.[1];
@@ -1,7 +1,7 @@
1
1
  import { composeHint, isHostOf } from "../../../common/utils.js";
2
2
  //#region src/feeds/platform/handlers/applePodcasts.ts
3
3
  const hosts = ["podcasts.apple.com"];
4
- const podcastRegex = /^\/[a-z]{2}\/podcast\/[^/]+\/id\d+/;
4
+ const podcastRegex = /^(?:\/[a-z]{2})?\/podcast\/(?:[^/]+\/)?id\d+/;
5
5
  const feedUrlRegex = /"feedUrl"\s*:\s*"([^"]+)"/;
6
6
  const extractFeedUrlFromContent = (content) => {
7
7
  return content.match(feedUrlRegex)?.[1];