react-native-torrent-streamer

    0.2.3 • Public • Published

    React-Native-Torrent-Streamer

    Torrent Streamer for react-native

    Only Android support now.

    - 0.2.0 Release

    • Support react-native 0.60.x
    • TorrentStream-Android updated to

    Integrate

    Android
    • Install via npm yarn add react-native-torrent-streamer

    • Add android/build.gradle

    ...
    allprojects {
      ...
      dependencies {
          ...
    +      maven {
    +        url("https://jitpack.io")
    +      }
      }
    }

    Usage

    import React, { Component } from 'react';
    import { AppRegistry, StyleSheet, View, Text, TouchableHighlight } from 'react-native'
     
    import TorrentStreamer from 'react-native-torrent-streamer'
     
    export default class App extends Component<{}> {
      state = {
        progress: 0,
        buffer: 0,
        downloadSpeed: 0,
        seeds: 0
      }
     
      componentDidMount() {
        TorrentStreamer.addEventListener('error', this.onError)
        TorrentStreamer.addEventListener('status', this.onStatus.bind(this))
        TorrentStreamer.addEventListener('ready', this.onReady.bind(this))
        TorrentStreamer.addEventListener('stop', this.onStop.bind(this))
      }
     
      onError(e) {
        console.log(e)
      }
     
      onStatus({progress, buffer, downloadSpeed, seeds}) {
        this.setState({
          progress,
          buffer,
          downloadSpeed,
          seeds
        })
      }
     
      onReady(data) {
        TorrentStreamer.open(data.url, 'video/mp4')
      }
     
      onStop(data) {
        console.log('stop')
      }
     
      render() {
        const { progress, buffer, downloadSpeed, seeds } = this.state
     
        return (
          <View style={styles.container}>
            <TouchableHighlight
              style={styles.button}
              onPress={this._handleStart.bind(this)}>
                <Text >Start Torrent!</Text>
            </TouchableHighlight>
     
            <TouchableHighlight
              style={styles.button}
              onPress={this._handleStop.bind(this)}>
                <Text >Stop Torrent!</Text>
            </TouchableHighlight>
     
            {buffer ? <Text>Buffer: {buffer}</Text> : null}
            {downloadSpeed ? <Text>Download Speed: {(downloadSpeed / 1024).toFixed(2)} Kbs/seg</Text> : null}
            {progress ? <Text>Progress: {parseFloat(progress).toFixed(2)}</Text> : null}
            {seeds ? <Text>Seeds: {seeds}</Text> : null}
          </View>
        )
      }
     
      _handleStart() {
        TorrentStreamer.start('magnet:?xt=urn:btih:88594aaacbde40ef3e2510c47374ec0aa396c08e&dn=bbb%5Fsunflower%5F1080p%5F30fps%5Fnormal.mp4&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80%2Fannounce&ws=http%3A%2F%2Fdistribution.bbb3d.renderfarming.net%2Fvideo%2Fmp4%2Fbbb%5Fsunflower%5F1080p%5F30fps%5Fnormal.mp4')
      }
     
      _handleStop() {
        this.setState({
          progress: 0,
          buffer: 0,
          downloadSpeed: 0,
          seeds: 0
        }, () => {
          TorrentStreamer.stop()
        })
      }
    }
     
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
      }
    })

    LICENSE

    MIT

    Install

    npm i react-native-torrent-streamer

    DownloadsWeekly Downloads

    8

    Version

    0.2.3

    License

    MIT

    Unpacked Size

    396 kB

    Total Files

    139

    Last publish

    Collaborators

    • ghondar