@ctrl/transmission

transmission npm coverage status

TypeScript api wrapper for transmission using ofetch

npm install @ctrl/transmission
import { Transmission } from '@ctrl/transmission';

const client = new Transmission({
baseUrl: 'http://localhost:9091/',
password: '',
});

async function main() {
const res = await client.getAllData();
console.log(res);
}

Docs: https://transmission.vercel.app
API Docs: https://github.com/transmission/transmission/blob/master/extras/rpc-spec.txt

These functions have been normalized between torrent clients. Can easily support multiple torrent clients. See below for alternative supported torrent clients

Returns all torrent data and an array of label objects. Data has been normalized and does not match the output of native listTorrents().

const data = await client.getAllData();
console.log(data.torrents);

Returns one torrent data

const data = await client.getTorrent();
console.log(data);

Pause or resume a torrent

const paused = await client.pauseTorrent();
console.log(paused);
const resumed = await client.resumeTorrent();
console.log(resumed);

Remove a torrent. Does not remove data on disk by default.

// does not remove data on disk
const result = await client.removeTorrent('torrent_id', false);
console.log(result);

// remove data on disk
const res = await client.removeTorrent('torrent_id', true);
console.log(res);

All of the following npm modules provide the same normalized functions along with supporting the unique apis for each client.

deluge - https://github.com/scttcper/deluge
qbittorrent - https://github.com/scttcper/qbittorrent
utorrent - https://github.com/scttcper/utorrent

docker run -d \
--name=transmission \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-p 9091:9091 \
-p 51413:51413 \
-p 51413:51413/udp \
-v ~/Documents/transmission/config:/config \
-v ~/Documents/transmission/downloads:/downloads \
-v ~/Documents/transmission/watch:/watch \
--restart unless-stopped \
lscr.io/linuxserver/transmission:latest