import Koa from "koa"; import Axios from "axios"; import * as xml2js from "xml2js"; const app = new Koa(); app.use(async (ctx) => { try { const { data } = await Axios.get( "https://podcast.midline.pl/api/v1/channels/Midline/rss" ); const builder = new xml2js.Builder(); const parsed_data = await xml2js.parseStringPromise(data); parsed_data.rss.channel[0]["itunes:author"] = "Arkadiusz Wieczorek, Kuba Orlik"; parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:email"] = "kontakt@midline.pl"; parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:name"] = "Arkadiusz Wieczorek, Kuba Orlik"; parsed_data.rss.channel[0]["link"] = "https://www.internet-czas-dzialac.pl"; parsed_data.rss.channel[0][ "itunes:keywords" ][0] = parsed_data.rss.channel[0]["itunes:keywords"][0] .split(" ") .toString(); parsed_data.rss.channel[0][ "itunes:summary" ][0] = parsed_data.rss.channel[0]["itunes:summary"][0].replace( /(<([^>]+)>)/gi, "" ); for ( let i = 0; i < parsed_data.rss.channel[0]["atom:link"].length; i++ ) { const atomLink = parsed_data.rss.channel[0]["atom:link"][i]; if (atomLink.$.rel === "self") { atomLink.$.href = "https://podcast.midline.pl/feed.xml"; } } let last_index = 1; for (let i = 0; i < parsed_data.rss.channel[0]["item"].length; i++) { const item = parsed_data.rss.channel[0]["item"][i]; item["guid"][0].$.isPermaLink = item["guid"][0].$.isPermalink; delete item["guid"][0].$.isPermalink; item["itunes:subtitle"][0] = item["itunes:subtitle"][0].slice(0, -2) + "…"; item["itunes:summary"][0] = item["itunes:summary"][0].replace( /(<([^>]+)>)/gi, "" ); if (item["title"][0].match(/#[0-9]*/)[0].substring(1) !== "0") { try { last_index = item["title"][0] .match(/#[1-9][0-9]*/)[0] .substring(1); } catch (e) { last_index = last_index + 1; } item["itunes:episode"] = [last_index]; } } ctx.body = builder.buildObject(parsed_data); ctx.type = "application/rss+xml"; } catch (e) { console.error(e); ctx.body = "error"; ctx.status = 500; } }); app.listen(3000);