https://github.com/jc21/node-sabnzbd-client
SABnzbd API client for NodeJS
https://github.com/jc21/node-sabnzbd-client
api-client nodejs sabnzbd
Last synced: 2 months ago
JSON representation
SABnzbd API client for NodeJS
- Host: GitHub
- URL: https://github.com/jc21/node-sabnzbd-client
- Owner: jc21
- License: mit
- Created: 2017-09-20T10:31:40.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-20T10:37:03.000Z (over 7 years ago)
- Last Synced: 2025-01-25T10:41:17.226Z (4 months ago)
- Topics: api-client, nodejs, sabnzbd
- Language: JavaScript
- Size: 4.88 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SABnzbd NodeJS API Client
Let's be honest, the [official SABnzbd API](https://sabnzbd.org/wiki/advanced/api) implementation is weird. I've never seen anything like it. That's why I've written this
client. It's more than a simple wrapper. It tries to demystify the weirdness and conform to something a little more standard as
far as API's go.A few things to mention:
- This is a *native* Promise based library. None of this *Bluebird* crap.
- You'll need a newish version of NodeJS supporting ECMAscript 6 (2015). NodeJS 6+ should be fine. I refuse to write code for older versions.
Don't be afraid to upgrade.## Installation
```bash
npm install sabnzbd-client
```## Usage
```javascript
const sabnzbd = require('sabnzbd-client');
const client = new sabnzbd('http://localhost:8080', 'YOUR_SAB_API_KEY');// Set the speed limit
client.setSpeedLimit('200K')
.then(res => {
console.log('RESPONSE:', res);
})
.catch(err => {
console.error(err.message);
});
```## Methods
### version
Returns the SABnzbd version as a string. This doesn't actually require an API key
**Return Values**
*{String}*
**Example**
```javascript
client.version()
.then(version => {
console.log('Sab Version:', version);
// Sab Version: 2.2.1
})
.catch(err => {
console.error(err.message);
});
```### queue
Returns the SABnzbd queue either in full or as a subset
**Parameters**
- *{Integer}* [start]
- *{Integer}* [limit]
- *{String}* [search]**Return Values**
*{Object}*
**Example**
```javascript
client.version(2, 10, 'thrones')
.then(queue => {
console.log('Queue:', queue);
})
.catch(err => {
console.error(err.message);
});
```### pauseQueue
Pauses the Queue indefinitely or for specified minutes
**Parameters**
- *{Integer}* [minutes]
**Return Values**
*{Boolean}*
**Example**
```javascript
client.pauseQueue(15)
.then(success => {
console.log('Success:', success);
})
.catch(err => {
console.error(err.message);
});
```### resumeQueue
Resumes the Queue
**Return Values**
*{Boolean}*
**Example**
```javascript
client.resumeQueue()
.then(success => {
console.log('Success:', success);
})
.catch(err => {
console.error(err.message);
});
```### speedLimit
Sets the Speed Limit for downloads. Limit can be one of the following values:
- A number between 1 and 100, which would set as the percentage of the limit set in your configs
- A Kilobyte per second limit, ie: `400K`
- A Megabyte per second limit, ie: `2M`Note: In SABnzbd 0.7.20 and below the value is always interpreted as KB/s, no percentages.
**Parameters**
- *{String|Integer}* limit
**Return Values**
*{Boolean}*
**Example**
```javascript
client.speedLimit('250K')
.then(success => {
console.log('Success:', success);
})
.catch(err => {
console.error(err.message);
});
```### onQueueComplete
Sets the action to take when the queue is done. The action string can be one of the following:
- `hibernate_pc`
- `standby_pc`
- `shutdown_program`
- Script: prefix the name of the script with `script_` ie: `script_test.py`**Parameters**
- *{String}* action
**Return Values**
*{Boolean}*
**Example**
```javascript
client.onQueueComplete('hibernate_pc')
.then(success => {
console.log('Success:', success);
})
.catch(err => {
console.error(err.message);
});
```### sortQueue
Sorts the queue by the following fields in either ascending or descending order:
- `avg_age`
- `name`
- `size`Direction can be either:
- `asc` - Ascending
- `desc` - Descendingwith `asc` being default.
**Parameters**
- *{String}* field
- *{String}* [direction]**Return Values**
*{Boolean}*
**Example**
```javascript
client.sortQueue('name', 'desc')
.then(success => {
console.log('Success:', success);
})
.catch(err => {
console.error(err.message);
});
```