qbittorrent-api

1.0.0 • Public • Published

# Description

Wrapper around qBittorrent's API to manage your torrents from Node. Documented and everything.

Installation

npm i qbittorrent-api

Overview

Documentation

Connect to host

connect(host, [username], [password])

Arguments

  • host
  • username optional
  • password optional

Returns

Interface object to call methods on.

Example

var api = require("qbittorrent-api");
 
var qbt = api.connect("http://localhost:8080", "admin", "DELETETHIS");
qbt.version(function (error, data) {
  console.log(data);
});

Methods

Add a torrent

add(torrent, [savePath], [label], [callback])

Arguments

  • torrent - Path or URL to torrent file, Readable stream, or magnet link.
  • savePath optional
  • label optional
  • callback optional
    • error

Example

qbt.add("magnet:?xt=urn:btih:PRFPQ2Z6XYO2SB3Z5N6A3RKW4KSJA62E");
 
qbt.add("http://torrents.linuxmint.com/torrents/linuxmint-17.3-cinnamon-64bit.iso.torrent", "D:\\Files", "software");
 
var stream = fs.createReadStream("~/torrents/2.Girls.1.Cup.torrent");
qbt.add(stream, "~/files/Tax Returns");
 
watcher.on("add", function (filePath) {
  qbt.add(filePath, function (error) {
    console.log("New torrent: " + filePath);
  });
});

setCookie(host, value)

Arguments

  • host
  • value

Example

qbt.setCookie("www.website.com", "ui=28979218048197");
qbt.add("http://www.website.com/torrentname.torrent");

List torrents

all([label], [options], callback)

downloading([label], [options], callback)

seeding([label], [options], callback)

completed([label], [options], callback)

resumed([label], [options], callback)

paused([label], [options], callback)

active([label], [options], callback)

inactive([label], [options], callback)

queued([label], [options], callback)

errored([label], [options], callback)

Arguments

  • label optional - Filter by label
  • options optional - Additional options
    • sort
    • reverse
    • limit
    • offset
  • callback
    • error
    • items

Example

qbt.all("Movies", { sort: "size", reverse: true }, function (error, items) {
  items.forEach(function (item) {
    console.log(item["name"] + "" + item["size"]);
  });
});
 
qbt.paused(function (error, items) {
  qbt.resume(items);
});

search(searchText, [options], callback)

Arguments

  • searchText
  • options optional - Search options
    • filter
    • label
    • sort
    • reverse
    • limit
    • offset
  • callback
    • error
    • items

Example

qbt.search("donkey", {
  filter: "completed",
  label: "Video"
}, function (error, items) {
  qbt.deleteData(items);
});

Get global info

version(callback)

api(callback)

apiMin(callback)

transferInfo(callback)

preferences(callback)

getGlobalDlLimit(callback)

getGlobalUpLimit(callback)

alternativeSpeedLimitsEnabled(callback)

Arguments

  • callback
    • error
    • data

Example

qbt.transferInfo(function (error, data) {
  console.log(data["connection_status"]);
});

Get torrent info

details(torrent, callback)

trackers(torrent, callback)

webseeds(torrent, callback)

files(torrent, callback)

getDlLimit(torrent, callback)

getUpLimit(torrent, callback)

Arguments

  • torrent - Torrent object or hash string
  • callback
    • error
    • data

Example

qbt.active(function (error, items) {
  items.forEach(function (item) {
    qbt.details(item, function (error, data) {
      console.log(item["name"] + "" + data["up_speed_avg"]);
    });
  });
});

Global commands

pauseAll([callback])

resumeAll([callback])

toggleAlternativeSpeedLimits([callback])

Arguments

  • callback optional
    • error

setGlobalDlLimit(value, [callback])

setGlobalUpLimit(value, [callback])

Arguments

  • value
  • callback optional
    • error

setPreferences(values, [callback])

Arguments

  • values - Object of key-value pairs (list of keys)
  • callback optional
    • error

Example

qbt.setPreferences({ save_path: "D:\\New" }, function (error) {
  qbt.preferences(function (error, values) {
    console.log(values["save_path"]);
  });
});

Torrent commands

pause(torrents, [callback])

resume(torrents, [callback])

recheck(torrents, [callback])

delete(torrents, [callback])

deleteData(torrents, [callback])

increasePrio(torrents, [callback])

decreasePrio(torrents, [callback])

topPrio(torrents, [callback])

bottomPrio(torrents, [callback])

toggleSeqDl(torrents, [callback])

toggleFirstLastPiecePrio(torrents, [callback])

Arguments

  • torrents - One or more torrent objects or hash strings
  • callback optional
    • error

Example

qbt.errored(function (error, items) {
  qbt.recheck(items);
});

setDlLimit(torrents, value, [callback])

setUpLimit(torrents, value, [callback])

setLabel(torrents, value, [callback])

setForceStart(torrents, value, [callback])

Arguments

  • torrents - One or more torrent objects or hash strings
  • value
  • callback optional
    • error

Example

qbt.queued(function (error, items) {
  qbt.setForceStart(items, true);
});

addTrackers(torrents, trackers, [callback])

Arguments

  • torrents - One or more torrent objects or hash strings
  • trackers - Array of tracker url strings
  • callback optional
    • error

Example

qbt.inactive(function (error, items) {
  qbt.addTrackers(items, [
    "udp://tracker.openbittorrent.com:80/announce",
    "udp://tracker.publicbt.com:80/announce"
  ]);
});

File commands

setFilePrio(torrent, fileId, value, [callback])

Arguments

  • torrent - Single torrent object or hash string
  • fileId - Index of the file in the torrent's file list (zero-based)
  • value
    • 0 - Do not download
    • 1 - Normal
    • 2 - High
    • 7 - Maximum
  • callback optional
    • error

Example

qbt.paused(function (error, items) {
  items.forEach(function (item) {
    qbt.files(item, function (error, files) {
      files.forEach(function (file, index) {
        if (file.progress === 0) {
          qbt.setFilePrio(item, index, 0);
        }
      });
    });
  });
});

Package Sidebar

Install

npm i qbittorrent-api

Weekly Downloads

1

Version

1.0.0

License

MPL-2.0

Last publish

Collaborators

  • vonthar