From 3e66db3717d2a0ff8c7aa0aa59ee70d223c55c62 Mon Sep 17 00:00:00 2001 From: TheBeastLT Date: Sun, 20 Jun 2021 13:37:07 +0200 Subject: [PATCH] [addon] show filename at the end of moch url for external players --- addon/moch/moch.js | 6 +++--- addon/moch/mochHelper.js | 11 ++++++++++- addon/serverless.js | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/addon/moch/moch.js b/addon/moch/moch.js index e418b2f..290823f 100644 --- a/addon/moch/moch.js +++ b/addon/moch/moch.js @@ -8,7 +8,7 @@ const putio = require('./putio'); const StaticResponse = require('./static'); const { cacheWrapResolvedUrl } = require('../lib/cache'); const { timeout } = require('../lib/promises'); -const { BadTokenError } = require('./mochHelper'); +const { BadTokenError, streamFilename } = require('./mochHelper'); const RESOLVE_TIMEOUT = 10 * 60 * 1000; // 10 minutes const MIN_API_KEY_SYMBOLS = 15; @@ -151,7 +151,7 @@ function populateCachedLinks(streams, mochResult) { return { name: `[${mochResult.moch.shortName}+] ${stream.name}`, title: stream.title, - url: `${RESOLVER_HOST}/${mochResult.moch.key}/${cachedEntry.url}`, + url: `${RESOLVER_HOST}/${mochResult.moch.key}/${cachedEntry.url}/${streamFilename(stream)}`, behaviorHints: stream.behaviorHints }; } @@ -169,7 +169,7 @@ function populateDownloadLinks(streams, mochResults) { streams.push({ name: `[${mochResult.moch.shortName} download] ${stream.name}`, title: stream.title, - url: `${RESOLVER_HOST}/${mochResult.moch.key}/${cachedEntry.url}`, + url: `${RESOLVER_HOST}/${mochResult.moch.key}/${cachedEntry.url}/${streamFilename(stream)}`, behaviorHints: stream.behaviorHints }) } diff --git a/addon/moch/mochHelper.js b/addon/moch/mochHelper.js index f9b080f..2deb52f 100644 --- a/addon/moch/mochHelper.js +++ b/addon/moch/mochHelper.js @@ -6,4 +6,13 @@ function chunkArray(arr, size) { : [arr]; } -module.exports = { chunkArray, BadTokenError } +function streamFilename(stream) { + const titleParts = stream.title.replace(/\n👤.*/s, '').split('\n'); + const filePath = titleParts.pop(); + const filename = titleParts.length + ? filePath.split('/').pop() + : filePath; + return encodeURIComponent(filename) +} + +module.exports = { chunkArray, BadTokenError, streamFilename } diff --git a/addon/serverless.js b/addon/serverless.js index fde1880..2657fb2 100644 --- a/addon/serverless.js +++ b/addon/serverless.js @@ -76,7 +76,7 @@ router.get('/:configuration/:resource/:type/:id/:extra?.json', (req, res, next) }); }); -router.get('/:moch/:apiKey/:infoHash/:cachedEntryInfo/:fileIndex?', (req, res) => { +router.get('/:moch/:apiKey/:infoHash/:cachedEntryInfo/:fileIndex/:filename?', (req, res) => { const parameters = { mochKey: req.params.moch, apiKey: req.params.apiKey,