origeva / node-sponsorblock-api

Node module wrapper for SponsorBlock web API.
MIT License
10 stars 2 forks source link

node-sponsorblock-api

Node module wrapper for SponsorBlock web API.

Using Axios for the HTTP client

https://sponsor.ajay.app/

Complete API documentation can be found here. Please review the attriution template to abide the license.

Usage:
JavaScript:
const { SponsorBlock } = require('sponsorblock-api');
const sponsorBlock = new SponsorBlock(userID); // userID should be a locally generated uuid, save the id for future tracking of stats

sponsorBlock.getSegments(videoID, ['intro', 'outro']).then((segments) => {
    console.log(segments);
});
TypeScript:
import { SponsorBlock, Category } from 'sponsorblock-api';
const sponsorBlock = new SponsorBlock(userID); // userID should be a locally generated uuid, save the id for future tracking of stats

const categories: Category[] = ['sponsor', 'selfpromo']
sponsorBlock.getSegments(videoID, categories).then((segments) => {
    console.log(segments);
});
Some constants and types are exported for ease of use:
import { SponsorBlock, Constants, PrefixRange } from 'sponsorblock-api'

const prefixLength: PrefixRange = 4
const sponsorBlock = new SponsorBlock(userID, { hashPrefixLength: prefixLength })

sponsorBlock.getSegmentsPrivately(videoID, Constants.ALL_CATEGORIES)
Notice:
Error handling:

Every API call will throw an error if the response status is not 200, the error object will contain a status and message properties.

JavaScript:
try {
    await sponsorBlock.getSegments('videoID that will not be found');
} catch (e) {
    if (e.name === 'ResponseError') {
        // SponsorBlock error handling
        console.log(e.status); // 404
        console.log(e.message); // Not found
    }
}
TypeScript:
import { ResponseError } from 'sponsorblock-api'
try {
    await sponsorBlock.getSegments('videoID that will not be found');
} catch (e) {
    if (e instanceof ResponseError) {
        // SponsorBlock error handling
    }
}

Issues:

Feel free to open an issue for suggestions or any unexpected behavior encountered.