feat: added substack feed detection
5c89466f
2 file(s) · +34 −10
| 243 | 243 | // First, try to fetch the URL directly as a feed |
|
| 244 | 244 | setErrorMessage("Checking URL..."); |
|
| 245 | 245 | try { |
|
| 246 | - | xmlData = await fetchFeedWithFallback(urlInput); |
|
| 247 | - | // Try to parse it to see if it's a valid feed |
|
| 248 | - | parseFeedXml(xmlData); |
|
| 249 | - | // If parsing succeeds, it's a valid feed |
|
| 250 | - | feedUrl = urlInput; |
|
| 246 | + | if (urlInput.includes("substack.com")) { |
|
| 247 | + | const parts = urlInput.split("/"); |
|
| 248 | + | console.log(parts); |
|
| 249 | + | const newUrl = `https://${parts[3].slice(1)}.${parts[2]}/feed`; |
|
| 250 | + | console.log(newUrl); |
|
| 251 | + | xmlData = await fetchFeedWithFallback(newUrl); |
|
| 252 | + | // Try to parse it to see if it's a valid feed |
|
| 253 | + | parseFeedXml(xmlData); |
|
| 254 | + | // If parsing succeeds, it's a valid feed |
|
| 255 | + | feedUrl = urlInput; |
|
| 256 | + | } else { |
|
| 257 | + | xmlData = await fetchFeedWithFallback(urlInput); |
|
| 258 | + | // Try to parse it to see if it's a valid feed |
|
| 259 | + | parseFeedXml(xmlData); |
|
| 260 | + | // If parsing succeeds, it's a valid feed |
|
| 261 | + | feedUrl = urlInput; |
|
| 262 | + | } |
|
| 251 | 263 | } catch { |
|
| 252 | 264 | // If direct fetch/parse fails, try feed discovery |
|
| 253 | 265 | setErrorMessage("Discovering RSS feed..."); |
| 71 | 71 | // First, try to fetch the URL directly as a feed |
|
| 72 | 72 | setStatusMessage("Checking URL..."); |
|
| 73 | 73 | try { |
|
| 74 | - | xmlData = await fetchFeedWithFallback(urlInput); |
|
| 75 | - | // Try to parse it to see if it's a valid feed |
|
| 76 | - | parseFeedXml(xmlData); |
|
| 77 | - | // If parsing succeeds, it's a valid feed |
|
| 78 | - | feedUrl = urlInput; |
|
| 74 | + | if (urlInput.includes("substack.com")) { |
|
| 75 | + | const parts = urlInput.split("/"); |
|
| 76 | + | console.log(parts); |
|
| 77 | + | const newUrl = `https://${parts[3].slice(1)}.${parts[2]}/feed`; |
|
| 78 | + | console.log(newUrl); |
|
| 79 | + | xmlData = await fetchFeedWithFallback(newUrl); |
|
| 80 | + | // Try to parse it to see if it's a valid feed |
|
| 81 | + | parseFeedXml(xmlData); |
|
| 82 | + | // If parsing succeeds, it's a valid feed |
|
| 83 | + | feedUrl = urlInput; |
|
| 84 | + | } else { |
|
| 85 | + | xmlData = await fetchFeedWithFallback(urlInput); |
|
| 86 | + | // Try to parse it to see if it's a valid feed |
|
| 87 | + | parseFeedXml(xmlData); |
|
| 88 | + | // If parsing succeeds, it's a valid feed |
|
| 89 | + | feedUrl = urlInput; |
|
| 90 | + | } |
|
| 79 | 91 | } catch { |
|
| 80 | 92 | // If direct fetch/parse fails, try feed discovery |
|
| 81 | 93 | setStatusMessage("Discovering RSS feed..."); |