Coder Social home page Coder Social logo

coub-dl's Introduction

coub-dl

A Coub downloader (CLI).

Installation

As local package:

$ npm i coub-dl

As CLI:

$ npm i -g coub-dl

Requirements

CLI Usage

List options and examples

$ coub-dl --help

Available options:

-V, --version          output the version number
-i, --input <input>    input (coub link or id)
-o, --output <output>  output file location
-c, --crop [crop]      crop the output (width:height:x_offset:y_offset)
-s, --scale <size>     resize the output (widthxheight)
-A, --no-audio         prevent addition of audio to the output
-l, --loop <times>     loop the coub X times
-t, --time <amount>    set the maximal amount of seconds for the length of the output
-d, --details          use in order to view the logs from ffmpeg while it works
-C, --copy-codec       copy the codecs from the input. Improves speed but might cause issues with sound in some players
-h, --help             output usage information

NOTE: About the -C option. Originally codecs were copied by default as it improved the speed of the process, but it was reported that some players fail to detect the sound of the output file when doing so, as such, the codec copying is now an option.

  • If you DO use the -C option: some players will have issues with the sound of the output BUT the process will be faster! Use this if you don't really care about sound, or your player (or whatever else uses your output) supports the codecs for sound.

  • If you DON'T use the -C option: all players will be able to play your file just fine, but the process will take longer as ffmpeg will have to decode and reencode your file.

The --copy-codec option will only work if you don't use any other video filters such as crop and scale. If you do, adding this option will have no effect. (FFmpeg will still have to decode and encode the video)

Examples:

# Download coub without audio
$ coub-dl --input https://coub.com/view/135nqc --output out.mp4 --no-audio -C
# Download coub as gif, crop it as a square and scale it down to 250x250
$ coub-dl -i https://coub.com/view/135nqc -o out.gif --crop --scale 250
# Download coub and loop it 3 times
$ coub-dl -i https://coub.com/view/135nqc -o out.mp4 --loop 3 -C
# Download coub and make sure it's no longer than 12 seconds
$ coub-dl -i https://coub.com/view/135nqc -o out.mp4 --loop 10 --time 12 -C

Documentation

Coub

Extends FFmkek.

const Coub = require('coub-dl')

Coub.fetch(url[, quality])

Takes a coub URL (or just ID), fetches it and returns a Coub instance. Optionally takes a quality argument. Can only be high or med.

const coub = await Coub.fetch('http://coub.com/view/w6uc9')
// => Promise<Coub>

Coub.prototype.crop([data])

Takes an argument similar to the FFmpeg crop filter except it is optional. If no data is provided the output is cropped as a centered square.

coub.crop() // Crops centered square
coub.crop('500:200:0:0') // Crop 500x200 with no offset from top right
// => Coub

Coub.prototype.scale(data)

Scale the output video.

coub.scale(250) // Scale the video to 250 pixel width while preserving aspect ratio
coub.scale('-2:100') // Scale the video to 100 pixel height while preserving aspect ratio
coub.scale('250:100') // Scale the video to 250x100
// => Coub

Coub.prototype.attachAudio()

Attaches the Coub audio to the output. NOTE: Do this before applying any other filters. Unless you want to apply the filters to the audio.

coub.attachAudio()
// => Coub

Coub.prototype.loop(times)

Loop the video a given amount of times. If the video ends up longer than the audio, it is shortened to the length of the audio.

coub.loop(3)
// => Coub

Writing the output

The write() method is inherited from FFmkek.

coub.write('my/coub/dir/thing.mp4')
// => Promise<string>

coub.write()
// => Promise<Stream>

coub-dl's People

Contributors

teeseal avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.