51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
from codequick.support import addon_data # @UnresolvedImport
|
|
from codequick.listing import local_image # @UnresolvedImport
|
|
from urlquick import urljoin # @UnresolvedImport
|
|
from ..settings import option
|
|
import xbmcgui
|
|
import os
|
|
from hashlib import sha1
|
|
from pyrrent2http import Engine # @UnresolvedImport
|
|
import sys
|
|
py3 = sys.version_info >= (3, 0)
|
|
if py3:
|
|
from urllib.request import pathname2url # @UnresolvedImport
|
|
else:
|
|
from urllib import pathname2url
|
|
|
|
def localize(sid):
|
|
return addon_data.getLocalizedString(sid)
|
|
def store_torrent_file(file_bytes):
|
|
h = sha1(file_bytes).hexdigest()
|
|
t_fname = '{}.torrent'.format(h)
|
|
full_path = os.path.join(storage_toorents_dir, t_fname)
|
|
if os.path.exists(full_path):
|
|
with open(full_path, 'rb') as f:
|
|
if sha1(f.read()).hexdigest() == h:
|
|
return full_path
|
|
with open(full_path, 'wb') as f:
|
|
f.write(file_bytes)
|
|
return full_path
|
|
def torrent_full_path(t_fname):
|
|
return os.path.join(storage_toorents_dir, t_fname)
|
|
|
|
def file_url(path):
|
|
if not path.startswith('file:'):
|
|
path = urljoin('file:', pathname2url(path))
|
|
return path
|
|
|
|
def get_engine(torrent_uri):
|
|
return Engine(uri=file_url(torrent_uri), download_path=storage_download_dir,
|
|
encryption=1, keep_complete=False, keep_incomplete=False,
|
|
dht_routers=["router.bittorrent.com:6881", "router.utorrent.com:6881"], use_random_port=False, listen_port=6881,
|
|
user_agent='', enable_dht=True)
|
|
while not option['storage_dir']:
|
|
dialog = xbmcgui.Dialog()
|
|
dialog.ok(localize(33000), localize(33051))
|
|
addon_data.openSettings()
|
|
storage_root = os.path.abspath(os.path.join(option['storage_dir'], 'Torrenter3'))
|
|
storage_toorents_dir = os.path.join(storage_root, 'torrents')
|
|
storage_download_dir = os.path.join(storage_root, 'download')
|
|
if not os.path.exists(storage_toorents_dir): os.makedirs(storage_toorents_dir)
|
|
if not os.path.exists(storage_download_dir): os.makedirs(storage_download_dir)
|