Attempt at fixing the slice
This commit is contained in:
parent
7fc974e744
commit
e6b7142829
120
index.ts
120
index.ts
|
@ -5,74 +5,64 @@ import * as xml2js from "xml2js";
|
||||||
const app = new Koa();
|
const app = new Koa();
|
||||||
|
|
||||||
app.use(async (ctx) => {
|
app.use(async (ctx) => {
|
||||||
try {
|
try {
|
||||||
const { data } = await Axios.get(
|
const { data } = await Axios.get(
|
||||||
"https://podcast.midline.pl/api/v1/channels/Midline/rss"
|
"https://podcast.midline.pl/api/v1/channels/Midline/rss"
|
||||||
);
|
);
|
||||||
const builder = new xml2js.Builder();
|
const builder = new xml2js.Builder();
|
||||||
const parsed_data = await xml2js.parseStringPromise(data);
|
const parsed_data = await xml2js.parseStringPromise(data);
|
||||||
parsed_data.rss.channel[0]["itunes:author"] =
|
parsed_data.rss.channel[0]["itunes:author"] =
|
||||||
"Arkadiusz Wieczorek, Kuba Orlik";
|
"Arkadiusz Wieczorek, Kuba Orlik";
|
||||||
parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:email"] =
|
parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:email"] =
|
||||||
"kontakt@midline.pl";
|
"kontakt@midline.pl";
|
||||||
parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:name"] =
|
parsed_data.rss.channel[0]["itunes:owner"][0]["itunes:name"] =
|
||||||
"Arkadiusz Wieczorek, Kuba Orlik";
|
"Arkadiusz Wieczorek, Kuba Orlik";
|
||||||
parsed_data.rss.channel[0]["link"] =
|
parsed_data.rss.channel[0]["link"] = "https://www.internet-czas-dzialac.pl";
|
||||||
"https://www.internet-czas-dzialac.pl";
|
parsed_data.rss.channel[0]["itunes:keywords"][0] =
|
||||||
parsed_data.rss.channel[0]["itunes:keywords"][0] =
|
parsed_data.rss.channel[0]["itunes:keywords"][0].split(" ").toString();
|
||||||
parsed_data.rss.channel[0]["itunes:keywords"][0]
|
parsed_data.rss.channel[0]["itunes:summary"][0] =
|
||||||
.split(" ")
|
parsed_data.rss.channel[0]["itunes:summary"][0].replace(
|
||||||
.toString();
|
/(<([^>]+)>)/gi,
|
||||||
parsed_data.rss.channel[0]["itunes:summary"][0] =
|
""
|
||||||
parsed_data.rss.channel[0]["itunes:summary"][0].replace(
|
);
|
||||||
/(<([^>]+)>)/gi,
|
|
||||||
""
|
|
||||||
);
|
|
||||||
|
|
||||||
for (
|
for (let i = 0; i < parsed_data.rss.channel[0]["atom:link"].length; i++) {
|
||||||
let i = 0;
|
const atomLink = parsed_data.rss.channel[0]["atom:link"][i];
|
||||||
i < parsed_data.rss.channel[0]["atom:link"].length;
|
|
||||||
i++
|
|
||||||
) {
|
|
||||||
const atomLink = parsed_data.rss.channel[0]["atom:link"][i];
|
|
||||||
|
|
||||||
if (atomLink.$.rel === "self") {
|
if (atomLink.$.rel === "self") {
|
||||||
atomLink.$.href = "https://podcast.midline.pl/feed.xml";
|
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].length < 255
|
|
||||||
? item["itunes:subtitle"][0]
|
|
||||||
: item["itunes:subtitle"][0].slice(0, 255) + "…";
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
const subtitle = item["itunes:subtitle"][0];
|
||||||
|
subtitle.length < 254 ? subtitle : subtitle.slice(0, 254) + "…";
|
||||||
|
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);
|
app.listen(3000);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user