Moved repository to common gitea repository, update link to our website

This commit is contained in:
Arkadiusz Wieczorek 2021-10-26 14:26:41 +02:00
parent d0c1f0c6e6
commit 9f78efb7b4
4 changed files with 115 additions and 0 deletions

View File

@ -1,2 +1,3 @@
# xml-expander
This code is daemonized using systemd - look for /lib/systemd/system/xml-expander.service

78
index.ts Normal file
View File

@ -0,0 +1,78 @@
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);

22
package.json Normal file
View File

@ -0,0 +1,22 @@
{
"name": "xml-expander",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "tsc"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.19.2",
"koa": "^2.12.0",
"xml2js": "^0.4.23"
},
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/koa": "^2.11.3",
"@types/xml2js": "^0.4.5",
"typescript": "^3.9.5"
}
}

14
tsconfig.json Normal file
View File

@ -0,0 +1,14 @@
{
"compilerOptions": {
"moduleResolution": "node",
"noImplicitAny": true,
"noImplicitThis": true,
"sourceMap": true,
"module": "commonjs",
"target": "es6",
"allowJs": false,
"strictNullChecks": true,
"esModuleInterop": true,
"outDir": "build"
}
}