Skip to content

A simple Reddit video downloader that allows you to download videos from Reddit using node js. Made using node-fetch and ffmpeg.wasm.

License

Notifications You must be signed in to change notification settings

Guuzzeji/vidzit-dl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

78 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub package.json version GitHub contributors GitHub npm node-current

GitHub Repo stars Twitter URL

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.

πŸ“Œ Table of Contents

πŸ’» How To Install

npm install vidzit-dl

✏️ Example

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()

πŸ“– API

VidzitDL

Download reddit videos through node.js

Kind: global class
See: https://github.com/Guuzzeji/reddit-vid-dl#readme


VidzitDL.initialize(redditURL) β‡’ 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

vidzitDL.videoInfo

Returns the video information like video url and reddit base url of post

Kind: instance property of VidzitDL

Example of Return JSON

{
  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}",
    }
  }
}

vidzitDL.findFormatVideo(format) β‡’ 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)

Example of Return JSON

{
  type: "video",
  maxFormat: true || false,
  format: "720",
  url: "{URL to video format}",
}

vidzitDL.findMaxFormatVideo() β‡’ 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

Example of Return JSON

{
  type: "video",
  maxFormat: true,
  format: "1080",
  url: "{URL to video format}",
}

vidzitDL.createVideo(options) β‡’ 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.

🀝 How to Contribute (Thank You!)

  • Fork the main branch

  • Open your fork and add your changes / features / bug fixes

  • Create a pull request

    • Make sure to add a description of what changes you have made and why your changes are important.