npm

Join us for the "JavaScript Supply Chain Security" tech talk, presented by VP of Security, Adam Baldwin. 6/20 at 10am PT.Sign up here »

torrent-search-api

2.0.9 • Public • Published

TorrentSearchApi

npm

Yet another node torrent search api based on x-ray.

Install

npm install torrent-search-api

Upgrade from version 1

// Replace
const TorrentSearchApi = require('torrent-search-api');
const torrentSearch = new TorrentSearchApi();
 
// With
const torrentSearch = require('torrent-search-api');
 

Supported providers

  • TorrentLeech: cookie authentification
  • IpTorrents: credentials and cookie authentification
  • Torrent9
  • Torrentz2
  • 1337x
  • ThePirateBay
  • YggTorrent : credentials and cookie authentification
  • KickassTorrents
  • Rarbg
  • TorrentProject
  • ExtraTorrent

Features

  • Search: search torrents on multiples providers.

  • Torrent details: get details about torrents (raw scraped html).

  • Download: download torrents files.

  • Easily extensible: you can easily add new providers and enjoy built-in features like cloudfare bypass.

Quick Example

const TorrentSearchApi = require('torrent-search-api');
 
TorrentSearchApi.enableProvider('Torrent9');
 
// Search '1080' in 'Movies' category and limit to 20 results
const torrents = await TorrentSearchApi.search('1080', 'Movies', 20);

Torrent Search API

Get providers

// Get providers
const providers = TorrentSearchApi.getProviders();
 
// Get active providers
const activeProviders = TorrentSearchApi.getActiveProviders();
 
// providers
{
    {
        name: 'Torrent9',
        public: true,
        categories: ['All', 'Movies', 'TV', 'Music', 'Apps', 'Books', 'Top100']
    },
    {
        name: 'IpTorrents',
        public: false,
        categories: ['All', 'Movies', 'TV', 'Games', 'Music']
    },
    ...
}
 

Enable provider

 
// Enable public providers
TorrentSearchApi.enablePublicProviders();
 
// Enable public provider
TorrentSearchApi.enableProvider('Torrent9');
 
// Enable private provider with cookies
TorrentSearchApi.enableProvider('IpTorrents', ['uid=XXX;', 'pass=XXX;']);
 
// Enable private provider with credentials
TorrentSearchApi.enableProvider('IpTorrents', 'USERNAME', 'PASSWORD');
 
// Enable private provider with token
TorrentSearchApi.enableProvider('xxx', 'TOKEN');
 

Disable provider

 
// Disable provider
TorrentSearchApi.disableProvider('TorrentLeech');
 
// Disable all enabled providers
TorrentSearchApi.disableAllProviders();
 

Check if a provider exists and is active

 
TorrentSearchApi.isProviderActive('1337x');
 

Search torrent

The result is an array of torrents sorted by seeders with more or less properties depending on the provider.

 
// Search on actives providers
// Query: 1080
// Category: Movies (optional)
// Limit: 20 (optional)
const torrents = await TorrentSearchApi.search('1080', 'Movies', 20);
 
// Search with given providers
// query: 1080
// category: Movies (optional)
// limit: 20 (optional)
const torrents = await TorrentSearchApi.search(['IpTorrents', 'Torrent9'], '1080', 'Movies', 20);
 

Torrent details

 
// Get details (raw scraped html)
// torrent: taken from a search result
const torrentHtmlDetail = await TorrentSearchApi.getTorrentDetails(torrent);
 

Torrent magnet

 
// Get magnet url
// torrent: taken from a search result
const magnet = await TorrentSearchApi.getMagnet(torrent);
 

Download torrent

 
// Download a buffer
// torrent: taken from a search result
const buffer = await TorrentSearchApi.downloadTorrent(torrent);
 
// Download torrent and write it to the disk
// torrent: taken from a search result
await TorrentSearchApi.downloadTorrent(torrent, filnamePath);

Load custom providers

You can code and add your custom providers (see provider definition format in existing providers) Don't forget to enable your provider if you intend to use it.

 
// load multipe providers
// from a TorrentProvider custom class definition or instance
const MyCustomProvider = require('./MyCustomProvider');
TorrentSearchApi.loadProvider(MyCustomProvider);
 
// from a provider object definition
TorrentSearchApi.loadProvider( {/* provider object definition */});
 
// from an absolute path to class definition or json object definition
const path = require('path');
const providerFullPath = path.join(__dirname, './lib/providers/MyCustomProvider');
TorrentSearchApi.loadProviders(providerFullPath);
 
// load multipe providers within a directory
// only absolute path are allowed
// it loads every *.json and *.js file
const path = require('path');
const providerDirFullPath = path.join(__dirname, './lib/providers/');
TorrentSearchApi.loadProviders(providerDirFullPath);
 
// load multipe providers
const MyCustomProvider = require('./MyCustomProvider');
TorrentSearchApi.loadProviders(MyCustomProvider, {/* provider object definition */}, ...);
 

Remove provider

 
// Remove provider
TorrentSearchApi.removeProvider('MyCustomProvider');
 

Create TorrentSearchApi instance

If you want to create an instance of the api without loading all the default providers and only load the ones that you want

 
// create instance
const createApi = require('torrent-search-api/createApi');
const TorrentSearchApi = createApi(/* same arguments as "loadProviders" method */)
 

Create a new provider

Check "test/createProvider.test.js" file if you want to create a new provider.

Running tests command

npm run test:watch

Override provider config

// Fully or partial override of the provider config
TorrentSearchApi.overrideConfig(providerName, newConfig);

License

MIT © 2018 Jimmy Laurent

install

npm i torrent-search-api

Downloadsweekly downloads

149

version

2.0.9

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability