npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bunnynet-stream

v1.0.3

Published

Leverage BunnyNET Stream APIs in your Node application

Downloads

50

Readme

bunnynet-stream

Leverage BunnyNET Stream APIs in your Node application

Install

npm i bunnynet-stream

Usage

This package works with most node applications using a framework or not.

Get Library List

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // this access key is different from collection's access key
);
const libraryList = libraries.getLibrary(
  '1', // current page to get
  '100', // number of items on a page (perPage)
  'Serie A', // search string
  true // include access key
);
console.log(libraryList);
return libraryList;

Get Library

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const singlelibrary = libraries.getSingleLibrary(
  '1s47rp45-5432-12g1-tyu7-457174206983', // the ID of the video library that will be returned
  true // include access key
);
console.log(singlelibrary);
return singlelibrary;

Create Library

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const createlibrary = libraries.createLibrary(
  'Serie A', // name of the video library
  ['A', 'B'] // geo-replication regions of the underlying storage zone
);
console.log(createlibrary);
return createlibrary;

Update Library

import Library from 'bunnynet-stream/lib/Library';

const library = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const updatelibrary = library.createLibrary(
  '1s47rp45-5432-12g1-tyu7-457174206983', // video library Id
  'Serie A', // name of the video library
  // From the line below add the type only e.g. ResetToken: boolean, the value here is either true or false https://docs.bunny.net/reference/videolibrarypublic_update
    CustomHTML: string, // Sets the player custom HTML code
    PlayerKeyColor: string, // Sets the player key control color
    EnableTokenAuthentication: boolean, // Determines if the token authentication should be enabled
    EnableTokenIPVerification: boolean, // Determines if the token IP verification should be enabled
    ResetToken: boolean, // Set to true to reset the CDN and embed view token key
    WatermarkPositionLeft: number, // Sets the left offset of the watermark position (in %)
    WatermarkPositionTop: number, // Sets the top offset of the watermark position (in %)
    WatermarkWidth: number, // Sets the width of the watermark (in %)
    WatermarkHeight: number, // Sets the height of the watermark (in %)
    EnabledResolutions: string, //  Sets the enabled resolutions for the transcoding. At least one resolution should be enabled. Possible values: 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p
    ViAiPublisherId: string, // Sets the vi.ai publisher ID
    VastTagUrl: string, // Sets the Vast tag URL
    WebhookUrl: string, // Sets the webhook API url
    CaptionsFontSize: number, // Sets the captions display font size
    CaptionsFontColor: string, // ets the captions display font color
    CaptionsBackground: string, // Sets the captions display background color
    UILanguage: string, // Sets the UI language of the video player
    AllowEarlyPlay: string, // Determines if the Early-Play feature should be enabled
    PlayerTokenAuthenticationEnabled: boolean, // Determines if the token authentication should be enabled
    BlockNoneReferrer: boolean, // Determines if requests without a referer should be blocked
    EnableMP4Fallback: boolean, // Determines if MP4 fallback should be enabled for this library
    KeepOriginalFiles: boolean, // Determines if the original file should be kept after the video is processed
    AllowDirectPlay: boolean, // Determines if direct play URLs should be enabled for the library
    EnableDRM: boolean, // Determines if MediaCage basic DRM should be enabled for this library
    Controls: string, // The comma separated list of controls that will be displayed in the video player. Possible values: play-large, play, progress, current-time, mute, volume, captions, settings, pip, airplay, fullscreen
    Bitrate240p: number, // The bitrate used for encoding 240p videos
    Bitrate360p: number, // The bitrate used for encoding 360p videos
    Bitrate480p: number, // The bitrate used for encoding 480p videos
    Bitrate720p: number, // The bitrate used for encoding 720p videos
    Bitrate1080p: number, // The bitrate used for encoding 1080p videos
    Bitrate1440p: number, // The bitrate used for encoding 1440p videos
    Bitrate2160p: number, // The bitrate used for encoding 2160p videos
    ShowHeatmap: boolean, // Determines if the video watch heatmap should be displayed in the player
    EnableContentTagging: boolean, // Determines if content tagging should be enabled for this library
    FontFamily: string, // The captions font family
    EnableTranscribing: boolean, // Determines if the automatic audio transcribing is currently enabled for this zone
    true, // EnableTranscribingTitleGeneration: boolean, Determines if automatic transcribing title generation is currently enabled
    true, // EnableTranscribingDescriptionGeneration: boolean, Determines if automatic transcribing description generation is currently enabled
    ["A", "B"] // The list of languages that the captions will be automatically transcribed to
);
console.log(updatelibrary);
return updatelibrary;

Delete Library

import Library from 'bunnynet-stream/lib/Library';

const library = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const deletelibrary = library.deleteSingleLibrary(
  '1s47rp45-5432-12g1-tyu7-457174206983' // library Id
);
console.log(deletelibrary);
return deletelibrary;

Get Library Languages

import Library from 'bunnynet-stream/lib/Library';

const library = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const videolibrarylanguages = library.getLanguages();
console.log(videolibrarylanguages);
return videolibrarylanguages;

Add Watermark

import Library from 'bunnynet-stream/lib/Library';

const library = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const watermarkedlibrary = library.addWatermark(
  '1s47rp45-5432-12g1-tyu7-457174206983' // library Id
);
console.log(watermarkedlibrary);
return watermarkedlibrary;

Remove Watermark

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const nonwatermarkedlibrary = libraries.removeWatermark(
  '1s47rp45-5432-12g1-tyu7-457174206983' // library Id
);
console.log(nonwatermarkedlibrary);
return nonwatermarkedlibrary;

Add Allowed Referer

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const allowedreferer = libraries.addAllowedReferer(
  '*.mywebsite.com' // hostname that will be added as an allowed referer
);
console.log(allowedreferer);
return allowedreferer;

Remove Allowed Referer

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const allowedreferer = libraries.removeAllowedReferer(
  '*.mywebsite.com' // hostname that will be removed as an allowed referer
);
console.log(allowedreferer);
return allowedreferer;

Add Blocked Referer

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const blockedreferer = libraries.addBlockedReferer(
  '*.mywebsite.com' // hostname that will be removed as an allowed referer
);
console.log(blockedreferer);
return blockedreferer;

Remove Blocked Referer

import Library from 'bunnynet-stream/lib/Library';

const libraries = new Library(
  '2a4abbfbe40772ffa1fa-a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const removeblockedreferer = libraries.removeBlockedReferer(
  '*.mywebsite.com' // hostname that will be removed as a blocked referer
);
console.log(removeblockedreferer);
return removeblockedreferer;

Get Collection List

import Collection from 'bunnynet-stream/lib/Collection';

const collection = new Collection(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // collection's access key is different from library api key
);
const collectionList = collection.getCollection(
  '1', // current page to get
  '100', // number of items on a page
  'Collection Animals in Savannah', // search string
  'date' // order records by date
);
console.log(collectionList);
return collectionList;

Get Collection

import Collection from 'bunnynet-stream/lib/Collection';

const collection = new Collection(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const singlecollection = collection.getSingleCollection(
  '1s47rp45-5432-12g1-tyu7-457174206983' // collection Id
);
console.log(singlecollection);
return singlecollection;

Create Collection

import Collection from 'bunnynet-stream/lib/Collection';

const collection = new Collection(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const createcollection = collection.createCollection(
  'Collection Animals in Savannah' // collection title
);
console.log(createcollection);
return createcollection;

Update Collection

import Collection from 'bunnynet-stream/lib/Collection';

const collection = new Collection(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const updatecollection = collection.createCollection(
  '1s47rp45-5432-12g1-tyu7-457174206983', // collection Id
  'Collection Animals in Savannah' // collection title
);
console.log(updatecollection);
return updatecollection;

Delete Collection

import Collection from 'bunnynet-stream/lib/Collection';

const collection = new Collection(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const deletecollection = collection.deleteSingleCollection(
  '1s47rp45-5432-12g1-tyu7-457174206983' // collection Id
);
console.log(deletecollection);
return deletecollection;

Get Video List

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const videoList = collection.getVideos(
  '1', // current page to get
  '100', // number of items on a page
  '1s47rp45-5432-12g1-tyu7-457174206983', // collection Id
  'date' // order records by date
);
console.log(videoList);
return videoList;

Get Video

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const singlevideo = video.getSingleVideo(
  '1s47rp45-5432-12g1-tyu7-457174206983' // video Id
);
console.log(singlevideo);
return singlevideo;

Create Video Object

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const createvideo = video.createCollection(
  'Documentary of Animals in Savannah', // video title
  '1s47rp45-5432-12g1-tyu7-457174206983', // collection Id
  '2147483647' // video time in ms to extract the main video thumbnail
);
console.log(createvideo);
return createvideo;

Update Video

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const chapters =  [
        {
        "title": "chapter1", // title
        "start": 0,  // start time in ms
        "end": 2147483647 // end time in ms
        }
]

const moments =  [
        {
        "label": "momentA", // label
        "timestamp": 3600,  // timestamp in ms
        }
]

const metaTags =  [
    {
      "property": "twitter:card",
      "value": "summary"
    },
    {
      "property": "twitter:site",
      "value": "@netfix"
    },
    {
      "property": "twitter:creator",
      "value": "@georgemayor"
    },
    {
      "property": "og:url",
      "value": "http://netfix.com/a-documentary-of-the-ocean/"
    },
    {
      "property": "og:title",
      "value": "A Documentary of the Ocean"
    },
    {
      "property": "og:description",
      "value": "Experience our planet's beauty through the eyes of Zologist Martha Stewart."
    }
]

const updatevideo = collection.updateVideo(
  '1s47rp45-5432-12g1-tyu7-457174206983', // video Id
  'Collection Animals in Savannah' // video title
  '1s47rp45-5432-12g1-tyu7-457174206983', // collection Id
   chapters, // list of chapters available for the video
   moments, // list of moments available for the video
   metaTags // meta tags added to the video
);
console.log(updatevideo);
return updatevideo;

Upload Video

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const uploadvideo = video.upload(
  '1s47rp45-5432-12g1-tyu7-457174206983', // video Id
  null // enabledResolutions
);
console.log(uploadvideo);
return uploadvideo;

Reencode Video

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const reencodevideo = video.reencode(
  '1s47rp45-5432-12g1-tyu7-457174206983' // video Id
);
console.log(reencodevideo);
return reencodevideo;

Add Caption

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const addcaption = video.addCaption(
  '1s47rp45-5432-12g1-tyu7-457174206983' // video Id
  'tyu7-457174206983', // srclang
  'German', // label of caption file
  'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==' // Base64 encoded captions file

);
console.log(addcaption);
return addcaption;

Set Thumbnail

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const addThumbnail = video.setThumbnail(
  '1s47rp45-5432-12g1-tyu7-457174206983', // video Id
  'https://cdn.thumbnails.net/abcd-bdget-thumbnail.jpeg' // thumbnail url
);
console.log(addThumbnail);
return addThumbnail;

Delete Single Video

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const deleteVideo = video.deleteSingleVideo(
  '1s47rp45-5432-12g1-tyu7-457174206983' // video Id
);
console.log(deleteVideo);
return deleteVideo;

Delete Single Caption

import Video from 'bunnynet-stream/lib/Video';

const video = new Video(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const deleteCaption = video.deleteSingleCaption(
  '1s47rp45-5432-12g1-tyu7-457174206983' // video Id
);
console.log(deleteCaption);
return deleteCaption;

TUS Resumable Upload

import * as fs from 'fs';
import * as path from 'path';
import RFU from 'bunnynet-stream/lib/RFU';

const path = `${__dirname}/../../abcd-bdget-movie.mov`;
const file = fs.createReadStream(path);

const tusupload = new RFU(
  '123456', // library id
  'a12345cb-6789-12xy-qw12345a123e-er45-1234' // access key
);
const upload = tusupload.upload(
  file,
  '1s47rp45-5432-12g1-tyu7-457174206983', // video Id
  1234567890, // expiration time of upload
  'Collection Animals in Savannah', // video title
  '1s47rp45-5432-12g1-tyu7-457174206983' // collection Id
);
// Check if there are any previous uploads to continue.
upload.findPreviousUploads().then(function (previousUploads) {
  // Found previous uploads so we select the first one.
  if (previousUploads.length) {
    upload.resumeFromPreviousUpload(previousUploads[0]);
  }

  // Start the upload
  upload.start();
});