1.0.0 • Published 11 months ago

cobalt-api v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Cobalt API Node.js

A Node.js library for downloading videos and audio from YouTube, TikTok, Twitter, and more. Powered by Cobalt.

Powered by Cobalt

Powered by Cobalt

This library relies on Cobalt’s free API.

Table of Contents

Installation

To install the cobalt-api library, you need to use npm. Run the following command:

npm install cobalt-api

Usage

After installing the library, you can start using it in your Node.js project. Here's a basic example:

const CobaltAPI = require("cobalt-api");

const cobalt = new CobaltAPI("https://www.youtube.com/watch?v=OAr6AIvH9VY");

cobalt
  .sendRequest()
  .then((response) => {
    if (response.status) {
      console.log("Download successful", response.data);
    } else {
      console.log("Download failed", response.text);
    }
  })
  .catch((error) => console.error("Error:", error));

Methods

constructor(url: string)

Initializes the CobaltAPI class with a URL.

  • Parameters:
    • url (string): The URL to be used in requests.

setQuality(quality: string): void

Sets the video quality for downloads.

  • Parameters:
    • quality (string): The desired video quality (e.g., 144, 720, max).
  • Throws:
    • Error if the provided quality is not valid.

setFilenamePattern(pattern: string): void

Sets the filename pattern for downloaded files.

  • Parameters:
    • pattern (string): The desired filename pattern. Available patterns: classic, basic, pretty, nerdy.
  • Throws:
    • Error if the provided pattern is not valid.

setVCodec(codec: string): void

Sets the video codec for downloads.

  • Parameters:
    • codec (string): The desired video codec (e.g., h264, av1, vp9).
  • Throws:
    • Error if the provided codec is not valid.

setAFormat(format: string): void

Sets the audio format for downloads.

  • Parameters:
    • format (string): The desired audio format (e.g., mp3, ogg, wav).
  • Throws:
    • Error if the provided format is not valid.

setAcceptLanguage(language: string): void

Sets the custom Accept-Language header value for requests.

  • Parameters:
    • language (string): The custom Accept-Language header value.

enableAudioOnly(): void

Enables downloading only audio.

enableTTFullAudio(): void

Enables downloading the original sound from a TikTok video.

enableAudioMuted(): void

Enables muting the audio track in video downloads.

enableDubLang(): void

Enables using the Accept-Language header for YouTube video audio tracks.

enableDisableMetadata(): void

Enables disabling file metadata.

enableTwitterGif(): void

Enables converting Twitter gifs to .gif format.

enableTiktokH265(): void

Enables preferring 1080p h265 videos for TikTok.

sendRequest(): Promise<object>

Sends the configured request to the API and returns the response.

  • Returns:
    • A promise that resolves to an object containing the status and data of the response.
  • Throws:
    • Error if there is an error in sending the request.

getAvailableQualities(): Promise<Array<string>>

Fetches the available video qualities for a YouTube URL.

  • Returns:
    • A promise that resolves to an array of available video qualities.
  • Throws:
    • Error if the URL is invalid or fetching qualities fails.

Response Body Variables

keytypevariables
statusstringerror / redirect / stream / success / rate-limit / picker
textstringvarious text, mostly used for errors
urlstringdirect link to a file or a link to cobalt's live render
pickerTypestringvarious / images
pickerarrayarray of picker items
audiostringdirect link to a file or a link to cobalt's live render

Source: Cobalt API Documentation - Response Body Variables

Picker Item Variables

item type: object

keytypevariablesdescription
typestringvideo / photo / gifused only if pickerType is various
urlstringdirect link to a file or a link to cobalt's live render
thumbstringitem thumbnail that's displayed in the pickerused for video and gif types

Source: Cobalt API Documentation - Picker Item Variables

Supported Services

This list is not final and keeps expanding over time.

servicevideo + audioonly audioonly videometadatarich file names
bilibili.com & bilibili.tv
dailymotion
instagram posts & reels
facebook videos
loom
ok video
pinterest
reddit
rutube
snapchat stories & spotlights
soundcloud
streamable
tiktok
tumblr
twitch clips
twitter/x
vimeo
vine archive
vk videos & clips
youtube videos, shorts & music
emojimeaning
supported
impossible/unreasonable
not supported

Source: Cobalt - Supported Services

Additional Notes or Features

servicenotes or features
instagramSupports reels, photos, and videos. Lets you pick what to save from multi-media posts.
facebookSupports public accessible videos content only.
pinterestSupports photos, gifs, videos and stories.
redditSupports gifs and videos.
snapchatSupports spotlights and stories. Lets you pick what to save from stories.
rutubeSupports yappy & private links.
soundcloudSupports private links.
tiktokSupports videos with or without watermark, images from slideshow without watermark, and full (original) audios.
twitter/xLets you pick what to save from multi-media posts. May not be 100% reliable due to current management.
vimeoAudio downloads are only available for dash.
youtubeSupports videos, music, and shorts. 8K, 4K, HDR, VR, and high FPS videos. Rich metadata & dubs. h264/av1/vp9 codecs.

Source: Cobalt - Additional Notes or Features per Service

If support for a service you want is missing, create an issue (or a pull request 👀) on Cobalt's GitHub repository.

License

This library is licensed under the MIT License. See the LICENSE file for more details.

Contact

For any queries or issues, please contact:

References