SDK for online torrent streaming
- Online torrent content streaming without waiting for full download
- On-the-fly content transcoding
- Downloading torrent as ZIP-archive
- Subtitle transcoding, srt to vtt
- OpenSubtitles support
- Streaming of external resources (including transcoding)
- Video: avi, mkv, mp4, webm, m4v
- Audio: mp3, wav, ogg, flac, m4a
- Images: png, gif, jpg, jpeg
- Subtitles: srt, vtt
Before moving further we must be sure that webtor backend api is already installed. Just follow this guide to setup all the things.
npm install @webtor/platform-sdk-js
or
yarn add @webtor/platform-sdk-js
Just a simple example of fetching torrent by magnet-uri, getting streaming url and stats:
import webtor from '@webtor/platform-sdk-js';
const sdk = webtor({
apiUrl: '...',
});
const magnetUri = '...';
const torrent = await sdk.magnet.fetchTorrent(magnetUri);
const expire = 60*60*24;
await sdk.torrent.push(torrent, expire);
const seeder = sdk.seeder.get(torrent.infoHash);
const filePath = torrent.files[0].path;
const url = await seeder.streamUrl(filePath);
console.log(url);
// NOTE: stats will become available only after content url access
seeder.stats(filePath, (path, data) => {
console.log(data);
});
You can find fully working example here!
options
should be the following:
{
apiUrl: String, // API url (required)
apiKey: String, // API key
downloadUrl: String, // All download urls will contain this location
tokenUrl: String, // API will get access-token from this location
tokenRenewInterval: Number, // Renews access-token after specific period in ms
grpcDebug: Boolean, // If enabled shows grpc-web debug output
statsRetryInterval: Number, // If stats not available for this file it will retry after specific period in ms (default=3000)
getToken: function() Promise // If defined custom token-function will be used
}
Provides functions for storing and retriving torrent-files.
Fetches parsed torrent from specific url. Be sure that appropriate CORS-headers are set on server-side in case of cross-site request (Access-Control-Allow-Origin: *
).
Pulls parsed torrent by infoHash from torrent-store.
Pushes parsed torrent to torrent-store with specific expiration time in seconds. We can use any parsed torrent generated by parse-torrent there.
Just renews expiration date of torrent-file.
Provides functions for working with magnet-urls.
Fetches parsed torrent by magnet-uri.
Provides functions for retriving and streaming torrent-content.
Returns seeder instance for the specific torrent stored in torrent-store.
Returns url
for original source file.
Returns url capable for web-streaming.
viewSettings
should be provided only in case of content trnascoding.
Possible viewSettings
:
{
a: Number, // Selected audio channel
s: Number, // Selected subtitle channel
}
Returns subtitle-url capable for web-streaming. Can be used only for hls-transcoded content.
viewSettings
should be provided only in case of content trnascoding.
Possible viewSettings
:
{
a: Number, // Selected audio channel
s: Number, // Selected subtitle channel
}
Returns FFmpeg probing data. If content should not be transcoded only empty object {}
will be returned.
Returns download url.
Returns download url of zip-archive. Generates zip-archive of all files under directory and subdirectories specified by the path
.
Returns object that includes all subtitles from OpenSubtitles.org. Automatically generates streaming urls for every subtitle (srt => vtt encoding).
Receives status of specific file. Possible data:
{
total: Number // Number of total bytes
completed: Number // Number of completed bytes
peers: Number // Total number of peers
piecesList: [] // Array of pieces
}
Also returns instance of stat client.
Closes stat client
Provides functions for retriving and streaming external resources.
Returns url
for original external file proxied by the api. Can resolve CORS-issues.
Same as seeder.streamUrl
but for external resource.
Same as seeder.streamSubtitleUrl
but for external resource.
Same as seeder.mediaInfo
but for external resource.
Same as seeder.openSubtitles
but for external resource.