Skip to content

WhitePrime/torrentonline

Repository files navigation

Torrent Stream Server

Docker CodeQL Dependencies npm version

Whats new:

  • Search & stream torrents - preview
  • Stream any file from the torrent - preview
  • Monitor activity - preview

HTTP server to convert any torrent to video stream

Demo

Installation

Deploy

NPM package:

Development

One-click ready-to-code development environments:

Open in Gitpod

Frontend & backend are separate packages.

So during developemnt you will need to run two dev servers with live reload:

  • npm run dev-backend - start dev server on 3000 port
  • npm run dev-frontend - start dev server on 3001 port

Commands

  • npm install - will install both: frontend & backend
  • npm run build - will build backend to lib directory & frontend to frontend/build
  • npm run start - start HTTP server with frontend support
  • npm run dev-backend - start backend server with live reload on 3000 port
  • npm run dev-frontend - start frontend server with live reload on 3001 port

Configuration

ENV variables

You can pass env variables to configurate certain ares.

Check EnvVariables interface to see available ENV variables

File

You can pass JSON config file to any run command with -c option (e.g. npm run start -c config.json).

Check Config interface to see available configuration options

API

API uses swagger.yaml to:

  1. To generate API documentation page, which can be accesed when using npm run dev on http://127.0.0.1:3000/api-docs.
  2. To generate frontend client (frontend/src/helpers/client)
  3. To generate backend models (src/models)

Check documentation

Examples

Open in VLC

Running the following command from a shell will run VLC and start playing the Sintel movie stream from its public torrent:

vlc "http://localhost:3000/stream/08ada5a7a6183aae1e09d831df6748d566095a10"

Download file using curl

This command will download Sintel movie from torrents and save as sintel.mp4.

curl "http://localhost:3000/stream/08ada5a7a6183aae1e09d831df6748d566095a10" > sintel.mp4

Security

API can be protected with security.apiKey, stream api can have additional JSON Web Token (configurable via security.streamApi.key).

If only only one key specified in the config, it will be used as both: API key & streamApi.key.

API protection

When api or stream key is enabled, each API call will require Authorization header:

Authorization: Bearer <token>

Generate stream API URL

import { sign } from 'jsonwebtoken'

const url = `/stream/${encodeURIComponent(
    sign(
        {
            torrent: '08ada5a7a6183aae1e09d831df6748d566095a10',
            fileType: 'video',
        },
        key
    )
)}`

This API will have encoded parameters, so it's safe to share it publicly. It will automatically expire (configurable via security.streamApi.maxAge)

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages