WebTorrent не хочет начинать загрузку

282
10 июля 2017, 19:04

Всем привет, решил попробовать использовать библиотеку webtorrent для загрузки и воспроизведения торрентов в браузере. Взял их стандартный пример с сайта и доработал его так что бы можно было самому вставить магнет ссылку и только потом он начал загрузу.В итоге всё работает только с их стандартной ссылкой которая была дана в примере, если вставить другую магнет ссылку то просто ничего не происходит.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>WebTorrent video player</title>
    <style>
      #output video {
        width: 100%;
      }
      #progressBar {
          height: 5px;
          width: 0%;
          background-color: #35b44f;
          transition: width .4s ease-in-out;
      }
      body.is-seed .show-seed {
          display: inline;
      }
      body.is-seed .show-leech {
          display: none;
      }
      .show-seed {
          display: none;
      }
      #status code {
          font-size: 90%;
          font-weight: 700;
          margin-left: 3px;
          margin-right: 3px;
          border-bottom: 1px dashed rgba(255,255,255,0.3);
      }
      .is-seed #hero {
          background-color: #154820;
          transition: .5s .5s background-color ease-in-out;
      }
      #hero {
          background-color: #2a3749;
      }
      #status {
          color: #fff;
          font-size: 17px;
          padding: 5px;
      }
      #inputarea{
          background-color: #5e8ad1;
          clear:both; text-align:center;
      }
      a:link, a:visited {
          color: #30a247;
          text-decoration: none;
      }
    </style>
  </head>
  <body>
    <div id="hero">
      <div id="output">
        <div id="progressBar"></div>
        <!-- The video player will be added here -->
      </div>
         <div id="inputarea">
          <h2>Вставьте ссылку на торрент в поле ниже и нажмите кнопку</h2>
          <input type="text" id="torrentlink" value="https://webtorrent.io/torrents/sintel.torrent" /><br><br>
          <input id="elem" type="button" value="Нажми меня" />
         <div>
      <!-- Statistics -->
      <div id="status">
        <div>
          <span class="show-leech">Downloading </span>
          <span class="show-seed">Seeding </span>
          <code>
            <!-- Informative link to the torrent file -->
          </code>
          <span class="show-leech"> from </span>
          <span class="show-seed"> to </span>
          <code id="numPeers">0 peers</code>.
        </div>
        <div>
          <code id="downloaded"></code>
          of <code id="total"></code>
          — <span id="remaining"></span><br/>
          &#x2198;<code id="downloadSpeed">0 b/s</code>
          / &#x2197;<code id="uploadSpeed">0 b/s</code>
        </div>
      </div>
    </div>
    <!-- Include the latest version of WebTorrent -->
    <script src="https://cdn.jsdelivr.net/webtorrent/latest/webtorrent.min.js"></script>
    <!-- Moment is used to show a human-readable remaining time -->
    <script src="http://momentjs.com/downloads/moment.min.js"></script>
    <script>
      var torrentId = 'https://webtorrent.io/torrents/sintel.torrent'
      var client = new WebTorrent()
      // HTML elements
      var $body = document.body
      var $progressBar = document.querySelector('#progressBar')
      var $numPeers = document.querySelector('#numPeers')
      var $downloaded = document.querySelector('#downloaded')
      var $total = document.querySelector('#total')
      var $remaining = document.querySelector('#remaining')
      var $uploadSpeed = document.querySelector('#uploadSpeed')
      var $downloadSpeed = document.querySelector('#downloadSpeed')
      var torrentLink =document.getElementById('torrentlink');
       elem.onclick = function() {
      // Download the torrent
      client.add(torrentLink.value, function (torrent) {
        // Torrents can contain many files. Let's use the .mp4 file
        var file = torrent.files.find(function (file) {
          return file.name.endsWith('.mp4')
        })
        // Stream the file in the browser
        file.appendTo('#output')
        // Trigger statistics refresh
        torrent.on('done', onDone)
        setInterval(onProgress, 500)
        onProgress()
        // Statistics
        function onProgress () {
          // Peers
          $numPeers.innerHTML = torrent.numPeers + (torrent.numPeers === 1 ? ' peer' : ' peers')
          // Progress
          var percent = Math.round(torrent.progress * 100 * 100) / 100
          $progressBar.style.width = percent + '%'
          $downloaded.innerHTML = prettyBytes(torrent.downloaded)
          $total.innerHTML = prettyBytes(torrent.length)
          // Remaining time
          var remaining
          if (torrent.done) {
            remaining = 'Done.'
          } else {
            remaining = moment.duration(torrent.timeRemaining / 1000, 'seconds').humanize()
            remaining = remaining[0].toUpperCase() + remaining.substring(1) + ' remaining.'
          }
          $remaining.innerHTML = remaining
          // Speed rates
          $downloadSpeed.innerHTML = prettyBytes(torrent.downloadSpeed) + '/s'
          $uploadSpeed.innerHTML = prettyBytes(torrent.uploadSpeed) + '/s'
        }
        function onDone () {
          $body.className += ' is-seed'
          onProgress()
        }
      })
       }
      // Human readable bytes util
      function prettyBytes(num) {
        var exponent, unit, neg = num < 0, units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
        if (neg) num = -num
        if (num < 1) return (neg ? '-' : '') + num + ' B'
        exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1)
        num = Number((num / Math.pow(1000, exponent)).toFixed(2))
        unit = units[exponent]
        return (neg ? '-' : '') + num + ' ' + unit
      }
    </script>
  </body>
</html>

Запущено всё на сервере Linux с NodeJS, вот код с сервера

var express = require("express");
var app = express();
app.use(express.static(__dirname));
app.get("/", function(request, response){
    response.send(index.html);
});
app.listen(80);

Собственно прошу совета у тех кто сталкивался с данной библиотекой или просто может помочь. PS: Формат файла указанный в return file.name.endsWith('.mp4') соблюдал.

READ ALSO
GET POST запросы [требует правки]

GET POST запросы [требует правки]

как работает POSt и GET запросы в JAVAScript?AJAX and JQuery? помогите кто может

189
Кнопка нажимается со второго раза

Кнопка нажимается со второго раза

По нажатии на кнопку, бэкграунд в body должен менять цветВсе работает сносно, кроме того, что нажимается она, почему-то, только со второго раза

214
PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in testreg.php on line 32

PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in testreg.php on line 32

PHP Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in testregphp on line 53

162