Files
Xstream-Standalone/plugin.video.xstream/resources/lib/handler/pyLoadHandler.py
Paperclip 7b8f40d9da Migrate Xstream Kodi plugin sources from Nextcloud Kino-Projekt
- plugin.video.xstream: Kodi video addon
- script.module.xstreamscraper: scraper module
Source: Nextcloud Botomir/Projekte/Angefangen/Kino-Projekt/
2026-08-17 21:24:11 +02:00

59 lines
2.9 KiB
Python

# -*- coding: utf-8 -*-
# Python 3
import sys
from resources.lib.config import cConfig
from resources.lib.gui.gui import cGui
from xbmc import LOGINFO as LOGNOTICE, log
from urllib.request import Request, urlopen, build_opener
from urllib.error import HTTPError
from urllib.parse import urlencode, quote_plus
class cPyLoadHandler:
def __init__(self):
self.config = cConfig()
def sendToPyLoad(self, sPackage, sUrl):
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: PyLoad package: ' + str(sPackage) + ', ' + str(sUrl), LOGNOTICE)
if self.__sendLinkToCore(sPackage, sUrl):
cGui().showInfo(cConfig().getLocalizedString(30257), cConfig().getLocalizedString(30256), 5)
else:
cGui().showInfo(cConfig().getLocalizedString(30257), cConfig().getLocalizedString(30258), 5)
def __sendLinkToCore(self, sPackage, sUrl):
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: Sending link...', LOGNOTICE)
try:
py_host = self.config.getSetting('pyload_host')
py_port = self.config.getSetting('pyload_port')
py_user = self.config.getSetting('pyload_user')
py_passwd = self.config.getSetting('pyload_passwd')
mydata = [('username', py_user), ('password', py_passwd)]
mydata = urlencode(mydata)
# check if host has a leading http://
if py_host.find('http://') != 0:
py_host = 'http://' + py_host
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: Attemting to connect to PyLoad at: ' + py_host + ':' + py_port, LOGNOTICE)
req = Request(py_host + ':' + py_port + '/api/login', mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page = urlopen(req).read()
page = page[1:]
session = page[:-1]
opener = build_opener()
opener.addheaders.append(('Cookie', 'beaker.session.id=' + session))
sPackage = sPackage.translate(str.maketrans('\\/:*?"<>|', '_________'))
py_url = py_host + ':' + py_port + '/api/addPackage?name="' + quote_plus(sPackage) + '"&links=["' + quote_plus(sUrl) + '"]'
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: PyLoad API call: ' + py_url, LOGNOTICE)
sock = opener.open(py_url).read()
sock.close()
return True
except HTTPError as e:
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: unable to send link: Error= ' + str(sys.exc_info()[0]), LOGNOTICE)
log(e.code, LOGNOTICE)
log(e.read(), LOGNOTICE)
try:
sock.close()
except Exception:
log(cConfig().getLocalizedString(30166) + ' -> [pyLoadHandler]: unable to close socket...', LOGNOTICE)
return False