Giter Club home page Giter Club logo

node-rutorrent-promise's Introduction

⬇️ 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

node-rutorrent-promise's People

Contributors

ctessier avatar tbmale avatar shaunlwm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.