(?:]*>)?(.*?)<\/p>/s;
const descriptionMatch = html.match(descriptionRegex);
if (descriptionMatch && descriptionMatch[1]) {
description = descriptionMatch[1].trim();
}
results.push({
description: description,
aliases: 'N/A',
airdate: 'N/A'
});
return JSON.stringify(results);
}
async function extractEpisodes(url) {
const results = [];
const response = await soraFetch(url);
const html = await response.text();
let episodes = [];
try {
episodes = await extractEpisodeHosts(html, url);
} catch (error) {
sendLog("Error extracting episodes: " + error.message);
return JSON.stringify([{ error: "Failed to extract episodes" }]);
}
sendLog(JSON.stringify(episodes));
if (episodes.length === 0) {
sendLog("No episodes found");
return JSON.stringify([{ error: "No episodes found" }]);
}
let count = 0;
for (const episodeUrl of episodes) {
count++;
results.push({
href: episodeUrl,
number: count
});
}
sendLog("Extracted " + count + " episodes");
return JSON.stringify(results);
}
async function extractEpisodeHosts(html, url) {
//