HTTP server to convert any torrent to stream with video support.
Features:
- Create stream from magnet or torrent file - preview
- Choose which file to stream - preview
- Stream video files - preview
- Search & stream torrents - preview
- Playlist support (m3u), open with external player - preview
- Monitor activity - preview
Heroku forbids P2P services, so your account can be suspened (learn more)
npm install -g torrent-stream-server
torrent-stream-server serve
- Go to http://127.0.0.1:3000
API uses swagger.yaml to:
- To generate API documentation page, which can be accesed when using
npm run dev
on http://127.0.0.1:3000/api-docs. - To generate frontend client (
frontend/src/helpers/client
) - To generate backend models (
src/models
)
Running the following commands from a shell will run VLC and start playing the Sintel movie stream from its public torrent:
vlc "http://localhost:3000/stream/08ada5a7a6183aae1e09d831df6748d566095a10"
vlc "http://localhost:3000/stream?torrent=magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&file=Sintel.mp4"
This command will download Sintel movie from torrents and save as sintel.mp4
.
curl "http://localhost:3000/stream/08ada5a7a6183aae1e09d831df6748d566095a10" > sintel.mp4
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
.
When api or stream key is enabled, each API call will require Authorization
header:
Authorization: Bearer <token>
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
)