[Propuesta] Añadir JackTorr como gestor de torrents externo (Alfa 3.12.3)

excitablevulgar

Usuario novato
JackTorr (plugin.video.jacktorr) es un addon de Kodi que reproduce torrents en streaming a través de un servidor TorrServer, ya sea local o en un NAS. Usa las mismas URLs de reproducción que Torrest:

- plugin://plugin.video.jacktorr/play_magnet?magnet=<magnet>
- plugin://plugin.video.jacktorr/play_url?url=<url>
- plugin://plugin.video.jacktorr/play_path?path=<path>

Por eso puede reutilizar la rama de reproducción de Torrest que ya tiene Alfa, con dos cambios pequeños:

  1. servers/torrent.json: añadir JackTorr a clients. Va al final de la lista para que el ajuste torrent_client que ya tienen guardado los usuarios siga apuntando al mismo gestor.
  2. platformcode/platformtools.py (play_torrent): hacer que JackTorr pase por la rama de Torrest. Alfa entrega aquí los magnets ya codificados en URL y con &amp; en lugar de &. Torrest lo tolera, pero JackTorr envía el valor tal cual a TorrServer, que responde HTTP 400 en POST /torrents. Por eso, para JackTorr, el código decodifica el enlace, cambia &amp; por & y lo codifica una sola vez. Las rutas locales solo se codifican.

Git:
diff --git a/platformcode/platformtools.py b/platformcode/platformtools.py
  index db51731..4f36654 100644
  --- a/platformcode/platformtools.py
  +++ b/platformcode/platformtools.py
  @@ -3369,16 +3369,21 @@ def play_torrent(item, xlistitem, mediaurl):
                       )
                       downloadProgress = 1
               if not result:  # Si falla todo, se usa el antiguo sistema
  -                if torr_client == "torrest":
  +                if torr_client in ["torrest", "jacktorr"]:
                       play_type = "path"
                       if mediaurl.startswith("magnet"):
                           play_type = "magnet"
                       if mediaurl.startswith("http"):
                           play_type = "url"
  +                    play_url = mediaurl
  +                    if torr_client == "jacktorr":  # JackTorr: Alfa lo pasa codificado y con "&amp;"; se normaliza y se codifica una vez
  +                        if play_type != "path":
  +                            play_url = urlparse.unquote(play_url).replace("&amp;", "&")
  +                        play_url = urlparse.quote_plus(play_url)
                       xbmc.executebuiltin(
                           "PlayMedia("
                           + torrent_options[seleccion][1]
  -                        % (play_type, play_type, mediaurl)
  +                        % (play_type, play_type, play_url)
                           + ")"
                       )
                   else:
  diff --git a/servers/torrent.json b/servers/torrent.json
  index 2fff1f0..c2738b5 100644
  --- a/servers/torrent.json
  +++ b/servers/torrent.json
  @@ -40,6 +40,11 @@
         "id": "plugin.video.torrest",
         "name": "torrest",
         "url": "plugin://plugin.video.torrest/play_%s?%s=%s"
  +    },
  +    {
  +      "id": "plugin.video.jacktorr",
  +      "name": "jacktorr",
  +      "url": "plugin://plugin.video.jacktorr/play_%s?%s=%s"
       }
     ],
     "find_videos": {

Notas
  • Torrest funciona exactamente igual que antes.
  • JackTorr se admite solo para reproducir en streaming. La reanudación por la API web, la descarga en segundo plano y la gestión de RAR de Alfa no están conectadas para este gestor. En torrent_dirs() cae en la rama genérica, que escribe en el log un ERROR en torr_client: jacktorr sin consecuencias. Una rama propia ahí quitaría ese mensaje.
  • Probado en Kodi (Windows), con JackTorr 1.2.2 y TorrServer en un equipo de la red local.
 
Última edición:
Atrás
Arriba