qbittorrent-api
v1.0.0
Published
Wrapper around qBittorrent's API to manage your torrents from Node. Documented and everything.
Downloads
58
Maintainers
Readme
Description
Wrapper around qBittorrent's API to manage your torrents from Node. Documented and everything.
Installation
npm i qbittorrent-api
Overview
- Connect to host
- Add a torrent
- List torrents
- Global info
- Torrent info
- Global commands
- Torrent commands
- File commands
Documentation
Connect to host
connect(host, [username], [password])
Arguments
host
username
optionalpassword
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
optionallabel
optionalcallback
optionalerror
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 labeloptions
optional - Additional optionssort
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 optionsfilter
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 stringcallback
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
optionalerror
setGlobalDlLimit(value, [callback])
setGlobalUpLimit(value, [callback])
Arguments
value
callback
optionalerror
setPreferences(values, [callback])
Arguments
values
- Object of key-value pairs (list of keys)callback
optionalerror
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 stringscallback
optionalerror
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 stringsvalue
callback
optionalerror
Example
qbt.queued(function (error, items) {
qbt.setForceStart(items, true);
});
addTrackers(torrents, trackers, [callback])
Arguments
torrents
- One or more torrent objects or hash stringstrackers
- Array of tracker url stringscallback
optionalerror
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 stringfileId
- Index of the file in the torrent's file list (zero-based)value
0
- Do not download1
- Normal2
- High7
- Maximum
callback
optionalerror
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);
}
});
});
});
});