2.0.0 ā€¢ Published 4 years ago

rutorrent-promise v2.0.0

Weekly downloads
9
License
MIT
Repository
github
Last release
4 years ago

ā¬‡ļø node-rutorrent-promise

version dependencies size downloads license

Interact with ruTorrent via promises šŸ‘Œ

This was inspired by Grant's transmission library. It provides methods to communicate with ruTorrent client using promises. It works thanks to the HTTPRPC plugin.

Installation

npm i rutorrent-promise --save
const RuTorrent = require('rutorrent-promise');

const rutorrent = new RuTorrent({
  host: 'localhost', // default: localhost
  port: 80,          // default: 80
  path: '',          // default: /rutorrent
  ssl: true,         // default: false
  username: '',      // default: none
  password: '',      // default: none
});

Available fields

An array of fields can be passed to the get and addFile methods in order to retrieve specific values from the torrents. The list is taken from the available properties provided by the HTTPRPC ruTorrent plugin. Here it is:

  • d.is_open
  • d.is_hash_checking
  • d.is_hash_checked
  • d.get_state
  • d.get_name
  • d.get_size_bytes
  • d.get_completed_chunks
  • d.get_size_chunks
  • d.get_bytes_done
  • d.get_up_total
  • d.get_ratio
  • d.get_up_rate
  • d.get_down_rate
  • d.get_chunk_size
  • d.get_custom1
  • d.get_peers_accounted
  • d.get_peers_not_connected
  • d.get_peers_connected
  • d.get_peers_complete
  • d.get_left_bytes
  • d.get_priority
  • d.get_state_changed
  • d.get_skip_total
  • d.get_hashing
  • d.get_chunks_hashed
  • d.get_base_path
  • d.get_creation_date
  • d.get_tracker_focus
  • d.is_active
  • d.get_message
  • d.get_custom2
  • d.get_free_diskspace
  • d.is_private
  • d.is_multi_file

Methods

get(fields = [])

List all the torrents.

rutorrent
  .get(['d.get_name', 'd.get_custom1', 'd.get_size_bytes'])
    .then((data) => {
      console.log(data);
      // [
      //   {
      //     hashString: '286D2E5B4F8369855328336AC1263AE02A7A60D5',
      //     'd.get_name': 'ubuntu-18.04.4-desktop-amd64.iso',
      //     'd.get_custom1': 'linux-distro',
      //     'd.get_size_bytes': '2126544896'
      //   },
      //   {
      //     hashString: 'EE55335F2ACDE309FA645FAB11C04750D7E45FA1',
      //     'd.get_name': 'ubuntu-16.04.6-desktop-amd64.iso',
      //     'd.get_custom1': 'linux-distro',
      //     'd.get_size_bytes': '1664614400'
      //   }
      // ]
    })
    .catch((err) => {
      // something happened...
    });

addFile(file, options = {})

Add a new torrent from a file.

rutorrent
  .addFile(fs.readFileSync('/path/to/ubuntu-18.04.4-desktop-amd64.iso.torrent'), {
    label: 'linux-distro',
    destination: '/downloads',
  })
    .then(() => {
      // torrent was added!
    })
    .catch((err) => {
      // something happenned...
    });

addUrl(url, options = {})

Add a new torrent from an url.

rutorrent
  .addUrl('http://releases.ubuntu.com/18.04/ubuntu-18.04.4-desktop-amd64.iso.torrent', {
    label: 'linux-distro',
    destination: '/downloads',
  })
    .then(() => {
      // torrent was added!
    })
    .catch((err) => {
      // something happenned...
    });

delete(hash, deleteTiedFiles = true)

Delete a torrent.

rutorrent
  .delete('286D2E5B4F8369855328336AC1263AE02A7A60D5')
    .then(() => {
      // torent has been deleted!
    })
    .catch((err) => {
      // something happened...
    });

Contributing

šŸ‘Øā€šŸ’»šŸ‘©ā€šŸ’»

Feel free to contribute and help me add more methods to interact with ruTorrent.

To run the unit tests, create an .env file in the test directory and fill it in with your client host and credentials:

$ cp test/.env.sample test/.env
$ cat test/.env
HOST=YOUR_CLIENT_HOST
PORT=YOUR_CLIENT_PORT
PREFIX_PATH=YOUR_CLIENT_PREFIX_PATH # (default is /rutorrent)
SSL=true                            # (https or http)
LOGIN=YOUR_CLIENT_LOGIN
PASSWORD=YOUR_CLIENT_PASSWORD

$ npm i && npm t
2.0.0

4 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

5 years ago

1.0.0

5 years ago

0.0.1

5 years ago