From 14e0f108ff052f6af82b6f54c24837fa9e587ce9 Mon Sep 17 00:00:00 2001 From: Lightemerald Date: Wed, 21 Feb 2024 21:42:36 +0100 Subject: [PATCH] Added backend Youtube feed support --- Modules/webSubManager.js | 32 ++++++++++++++++++++++++++++++++ bun.lockb | Bin 51108 -> 74948 bytes config.json.sample | 8 ++++++++ index.js | 33 ++++++++++++++++++++++++++++++--- package.json | 2 ++ 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 Modules/webSubManager.js diff --git a/Modules/webSubManager.js b/Modules/webSubManager.js new file mode 100644 index 0000000..0fd242d --- /dev/null +++ b/Modules/webSubManager.js @@ -0,0 +1,32 @@ +import { error } from './logManager'; + + +export async function subbWebSub(callback, topic, hub) { + const options = { + method: 'POST', + mode: 'cors', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ 'hub.mode': 'subscribe', 'hub.topic': topic, 'hub.callback': callback, 'hub.verify': 'sync' }), + }; + + return await fetch(hub, options) + .then(res => { + res.status === 204 ? true : false; + }) + .catch(err => error(err)); +} + +export async function unsubWebSub(callback, topic, hub) { + const options = { + method: 'POST', + mode: 'cors', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ 'hub.mode': 'unsubscribe', 'hub.topic': topic, 'hub.callback': callback, 'hub.verify': 'sync' }), + }; + + return await fetch(hub, options) + .then(res => { + res.status === 204 ? true : false; + }) + .catch(err => error(err)); +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 52c412be2d950846ff8e8e341fbea55de1b296f6..20a462904716cd7d6de0b26e6069f4527a25fadc 100755 GIT binary patch delta 21579 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%0Du`hHQ{-Vb*T?nitM?7D7SyK%*{ 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 delta 7359 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 { + log('YouTube callback received.'); + res.send('ok'); +}); + +app.listen(port, async () => { + log(`running on port ${port}`); +}); + +process.on('SIGINT', function() { + console.log('Stopping server...'); + for (const channel of youtube.channels) unsubWebSub(youtube.callback, `https://www.youtube.com/feeds/videos.xml?channel_id=${channel}`, 'https://pubsubhubbub.appspot.com/subscribe'); + process.exit(); +}); \ No newline at end of file diff --git a/package.json b/package.json index 46ae404..72ed942 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "typescript": "^5.0.0" }, "dependencies": { + "cors": "^2.8.5", + "express": "^4.18.2", "form-data": "^4.0.0", "node-cron": "^3.0.3", "pino": "^8.19.0"