Added support for muxing streams, specifically for reddit-hosted videos (now also supported).

This commit is contained in:
2024-09-11 05:16:54 +02:00
parent 1546852f89
commit 536c427140
11 changed files with 226 additions and 33 deletions

View File

@@ -1,7 +1,8 @@
'use strict';
const self = require('./self.js');
const reddit = require('./reddit.js');
const redditImage = require('./redditImage.js');
const redditVideo = require('./redditVideo.js');
const imgurImage = require('./imgurImage.js');
const imgurAlbum = require('./imgurAlbum.js');
const gfycat = require('./gfycat.js');
@@ -9,7 +10,8 @@ const eroshare = require('./eroshare.js');
module.exports = {
self: self,
reddit: reddit,
redditImage: redditImage,
redditVideo: redditVideo,
imgurImage: imgurImage,
imgurAlbum: imgurAlbum,
gfycat: gfycat,

View File

@@ -4,7 +4,7 @@ const util = require('util');
const config = require('config');
const fetch = require('node-fetch');
function reddit(post) {
function redditImage(post) {
return Promise.resolve({
album: null,
items: [{
@@ -18,4 +18,4 @@ function reddit(post) {
});
};
module.exports = reddit;
module.exports = redditImage;

View File

@@ -0,0 +1,38 @@
'use strict';
const util = require('util');
const config = require('config');
const fetch = require('node-fetch');
const fs = require('fs-extra');
function redditVideo(post) {
return fetch(`${post.permalink}.json`).then(res => res.json()).then(res => {
return res[0].data.children[0].data.media.reddit_video.fallback_url;
}).then(videoUrl => {
const audioUrl = videoUrl.split('/').slice(0, -1).join('/') + '/audio';
return fetch(audioUrl, {
method: 'HEAD'
}).then(res => {
const item = {
album: null,
items: [{
id: post.host.id || post.id,
url: videoUrl,
title: post.title,
datetime: post.datetime,
type: 'video/mp4',
original: post
}]
};
if(res.status === 200) {
item.items[0].mux = [audioUrl];
}
return item;
});
});
};
module.exports = redditVideo;