1.0.0 • Published 9 years ago
qbittorrent-api v1.0.0
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
hostusernameoptionalpasswordoptional
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.savePathoptionallabeloptionalcallbackoptionalerror
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
hostvalue
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
labeloptional - Filter by labeloptionsoptional - Additional optionssortreverselimitoffset
callbackerroritems
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
searchTextoptionsoptional - Search optionsfilterlabelsortreverselimitoffset
callbackerroritems
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
callbackerrordata
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 stringcallbackerrordata
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
callbackoptionalerror
setGlobalDlLimit(value, callback)
setGlobalUpLimit(value, callback)
Arguments
valuecallbackoptionalerror
setPreferences(values, callback)
Arguments
values- Object of key-value pairs (list of keys)callbackoptionalerror
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 stringscallbackoptionalerror
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 stringsvaluecallbackoptionalerror
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 stringscallbackoptionalerror
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)value0- Do not download1- Normal2- High7- Maximum
callbackoptionalerror
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);
}
});
});
});
});1.0.0
9 years ago