A simple Reddit video downloader that allows you to download videos from Reddit using node js. Made using node-fetch and ffmpeg.wasm.
IMPORTANT NOTE: Video can't be embedded (No Youtube links, No Vimeo, etc).
This is not an official Reddit library, but we do use Reddit's official web API.
npm install vidzit-dl
const VidzitDL = require("vidzit-dl");
async function example1() {
let video1 = await VidzitDL.initialize("https://www.reddit.com/r/IndieDev/comments/10hgvjq/vr_has_been_punishing_for_particles");
console.log(video1.videoInfo);
console.log(await video1.createVideo({
format: '480',
setLogger: function (type, message) {
console.log(type + ": " + message);
},
setProgress: function (ratio) {
console.log(ratio);
}
}));
}
async function example2() {
let video1 = await VidzitDL.initialize("https://www.reddit.com/r/IndieDev/comments/10hgvjq/vr_has_been_punishing_for_particles");
console.log(video1.videoInfo);
console.log(await video1.createVideo());
}
example1()
example2()
Download reddit videos through node.js
Kind: global class
See: https://github.com/Guuzzeji/reddit-vid-dl#readme
Promise.<VidzitDL>
Initialize the VidezDitDL class and create an object from it.
Kind: static method of VidzitDL
Returns: Promise.<VidzitDL>
- returns an VidzitDL object that can be used to get information about the video dash urls and download the video
Param | Type | Description |
---|---|---|
redditURL | String |
A normal reddit url of the video post you want to download |
Returns the video information like video url and reddit base url of post
Kind: instance property of VidzitDL
{
baseURL: "{URL to reddit post}"
dashURL: "{URL to dash file}",
dashContent: {
video: [
{
type: "video",
maxFormat: true || false,
format: "720",
url: "{URL to video format}",
},
...
],
audio: {
type: "audio",
url: "{URL to audio files}",
}
}
}
JSON
Searchs dash file to find video resolution (Ex: 480, 720, 1080). It can also return an error if video resolution is not found.
Kind: instance method of VidzitDL
Returns: JSON
- A json of the video resolution url and other infomation
Param | Type | Description |
---|---|---|
format | String |
the video format you want (Ex: 480, 720, 1080) |
{
type: "video",
maxFormat: true || false,
format: "720",
url: "{URL to video format}",
}
JSON
Searchs dash file to find video resolution for max resolution of video.
Kind: instance method of VidzitDL
Returns: JSON
- A json of the video resolution url and other infomation
{
type: "video",
maxFormat: true,
format: "1080",
url: "{URL to video format}",
}
Promise.<Uint8Array>
Creates a video with the specified format you want. OR can default to max resolution if not specified.
Kind: instance method of VidzitDL
See: More infomation how to use setLogger and setProgress https://github.com/ffmpegwasm/ffmpeg.wasm/blob/master/docs/api.md#ffmpeg-setlogging
Param | Type | Description |
---|---|---|
options | Object |
JSON that stores all options for this function |
options.format | String |
The format you want to download (Ex: 480, 720, 1080). Default is max resolution if not specified. |
options.setLogger | function |
Allows you to process ffmpeg logs with your own function. |
options.setProgress | function |
Allows you to process ffmpeg progresss with your own function. |
Fork the main branch
Open your fork and add your changes / features / bug fixes
Create a pull request