malaquias63 / torrent-stream-server

HTTP server to convert any torrent to video stream

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Setup

Deploy

Heroku forbids P2P services, so your account can be suspened (learn more)

NPM package

Read more

Other options

Documentation

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 commands from a shell will run VLC and start playing the Sintel movie stream from its public torrent:

By infohash (BTIH)

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

By magnet URI

vlc "http://localhost:3000/stream?torrent=magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&file=Sintel.mp4"

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

HTTP server to convert any torrent to video stream

License:MIT License


Languages

Language:TypeScript 98.6%Language:HTML 0.9%Language:Dockerfile 0.2%Language:CSS 0.2%Language:JavaScript 0.1%