@videoguys/javascript-client

official javascript client

Usage no npm install needed!

<script type="module">
  import videoguysJavascriptClient from 'https://cdn.skypack.dev/@videoguys/javascript-client';
</script>

README

videoguys-javascript-client

Official API

  • API version: 0.1
  • Package version: 0.1.0

Requirements.

NodeJS 8.11.4+

NodeJS

To install this package you must have NodeJS installed, please follow those instructions for your OS before attempting to use this package.

NPM

Install via NPM (easiest method).

npm install --save @videoguys/javascript-client

Then import the package:

const videoguys = require('@videoguys/javascript-client');

Basic Usage

Please follow the installation procedure and then you may run any of the following:

const videoguys = require('@videoguys/javascript-client');

const api_client = new videoguys.ApiClient({
  api_host: "[vevio|vidup]",
  api_token: "<api_key>"
});

(async() => {
  try{
    const pair_response = api_client.getVideoPair("<video_code>");
    console.log(pair_response);
    
    const video_info = api_client.getVideoInfo("<video_code>");
    console.log(video_info);
    
    const filepath = "absolute_path_to_file";
    const video_upload = api_client.uploadVideo({
      filepath: filepath, // required filepath for the new video upload
      // size: size, // optional in this function, filepath will auto determine the size
      title: title, // optional title for the new video
      description: description, // optional description for the new video
      folder_id: folder_id, // optional folder_id for the new video
      lite: lite, // optional lite setting for the new video [0 or 1]
      public: public, // optional public setting for the new video [0 or 1]
    });
    console.log(video_upload);

    const video_uploads = api_client.getVideoUploads();
    console.log(video_uploads);

    const video_upload = api_client.updateVideoUpload(
      <upload_code>,
      {
        title: title, // optional new title for the new video
        description: description, // optional new description for the new video
        folder_id: folder_id, // optional new folder_id for the new video
        lite: lite, // optional new lite setting for the new video [0 or 1]
        public: public, // optional new public setting for the new video [0 or 1]
      }
    );
    console.log(video_upload);

    const video_upload = api_client.getVideoUpload("<upload_code>");
    console.log(video_upload);

    const deleted_video_upload = api_client.deleteVideoUpload("<upload_code>");
    console.log(deleted_video_upload);

    const url = "http/https file url";
    const url_upload = api_client.newUrlUpload({
      url: url, // required url for the new url upload
      title: title, // optional title for the new url
      description: description, // optional description for the new url
      folder_id: folder_id, // optional folder_id for the new url
      lite: lite, // optional lite setting for the new url [0 or 1]
      public: public, // optional public setting for the new url [0 or 1]
    });
    console.log(url_upload)
    
    const url_uploads = api_client.getUrlUploads();
    console.log(url_uploads);

    const url_upload = api_client.updateUrlUpload(
      <upload_code>
      {
        title: title, // optional new title for the new url
        description: description, // optional new description for the new url
        folder_id: folder_id, // optional new folder_id for the new url
        lite: lite, // optional new lite setting for the new url [0 or 1]
        public: public, // optional new public setting for the new url [0 or 1]
      }
    );
    console.log(url_upload);

    const url_upload = api_client.getUrlUpload("<upload_code>");
    console.log(url_upload);

    const url_upload_status = api_client.getUrlUploadStatus("<upload_code>");
    console.log(url_upload_status);

    // if the url upload has been downloaded then you should clear it
      // to avoid concurrent hitting limits
    if (
        url_upload_status
        && 'status' in url_upload_status
        && url_upload_status['status'] == "downloaded"
      ){
      const deleted_url_upload = api_client.deleteUrlUpload("<upload_code>");
      console.log(deleted_url_upload);
    }

    const videoDownload = await client.downloadVideo({
      code: "<video_code>",
      filepath: "<destination_filepath>"
    });

    let clientDownloadInterval = setInterval(() => {
      let clientProgress = videoDownload.hasProgress();
      if(clientProgress){
        /*
          the progress object looks like this:
          {
            percent: 0.5,               // Overall percent (between 0 to 1)
            speed: 554732,              // The download speed in bytes/sec
            size: {
                total: 90044871,        // The total payload size in bytes
                transferred: 27610959   // The transferred payload size in bytes
            },
            time: {
                elapsed: 36.235,        // The total elapsed seconds since the start (3 decimals)
                remaining: 81.403       // The remaining seconds to finish (3 decimals)
            }
          }
        */ 
        console.log('download progress', clientProgress);
      }

      let clientError = videoDownload.hasError();
      if(clientError){
        console.error('download error', clientError);
        clearInterval(clientDownloadInterval);
      }

      let clientCompleted = videoDownload.hasCompleted();
      if(clientCompleted){
        console.log('download completed', clientCompleted);
        clearInterval(clientDownloadInterval);
      }

      if(!clientProgress && !clientError && !clientCompleted){
        console.log('download has likely not been started yet');
      }
    }, 2500);

    videoDownload.start();
  }catch(err){
    console.error('err', err);
  }
})();

Documentation For Authorization

All endpoints except getVideoInfo("<video_code>") and getVideoPair("<video_code>") requires authorization.

Author

VideoGuys