major settings tweak and encryption
parent
539383d14f
commit
826e03da1b
16
Core.py
16
Core.py
|
@ -39,7 +39,6 @@ class Core:
|
|||
__settings__ = sys.modules["__main__"].__settings__
|
||||
ROOT = sys.modules["__main__"].__root__ #.decode('utf-8').encode(sys.getfilesystemencoding())
|
||||
userStorageDirectory = file_encode(__settings__.getSetting("storage"))
|
||||
USERAGENT = "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0"
|
||||
torrentFilesDirectory = 'torrents'
|
||||
debug = __settings__.getSetting('debug') == 'true'
|
||||
torrent_player=__settings__.getSetting("torrent_player")
|
||||
|
@ -1052,7 +1051,6 @@ class Core:
|
|||
self.sectionMenu()
|
||||
|
||||
def uTorrentBrowser(self, params={}):
|
||||
|
||||
menu, dirs = [], []
|
||||
contextMenustring = 'XBMC.RunPlugin(%s)' % ('%s?action=%s&url=%s') % (sys.argv[0], 'uTorrentBrowser', '%s')
|
||||
get = params.get
|
||||
|
@ -1231,11 +1229,13 @@ class Core:
|
|||
url = unquote(get("url"),None)
|
||||
tdir = unquote(get("url2"),None)
|
||||
|
||||
#url="D:\\[rutracker.org].t4563731.torrent"
|
||||
|
||||
if not url:
|
||||
action = xbmcgui.Dialog()
|
||||
url = action.browse(1, self.localize('Choose .torrent in video library'), 'video', '.torrent')
|
||||
xbmc.executebuiltin(
|
||||
'XBMC.ActivateWindow(%s)' % 'Videos,plugin://plugin.video.torrenter/?action=%s&url=%s'
|
||||
% ('torrentPlayer', url))
|
||||
return
|
||||
if url:
|
||||
self.__settings__.setSetting("lastTorrentUrl", url)
|
||||
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
||||
|
@ -1243,11 +1243,8 @@ class Core:
|
|||
torrentFilesDirectory=self.torrentFilesDirectory)
|
||||
self.__settings__.setSetting("lastTorrent", torrent.saveTorrent(url))
|
||||
contentList = []
|
||||
#filename='Suzumiya Haruhi no Yuuutsu - 05 [DVDrip 1280x720 x264 FLAC].mkv'
|
||||
#print str(torrent.getSubsIds(filename))
|
||||
for filedict in torrent.getContentList():
|
||||
fileTitle = filedict.get('title')
|
||||
#print fileTitle
|
||||
if filedict.get('size'):
|
||||
fileTitle += ' [%d MB]' % (filedict.get('size') / 1024 / 1024)
|
||||
contentList.append((self.unescape(fileTitle), str(filedict.get('ind'))))
|
||||
|
@ -1740,6 +1737,9 @@ class Core:
|
|||
url = searcherObject.getTorrentFile(classMatch.group(2))
|
||||
torrent = Downloader.Torrent(self.userStorageDirectory, torrentFilesDirectory=self.torrentFilesDirectory)
|
||||
torrent.initSession()
|
||||
encryption = self.__settings__.getSetting('encryption') == 'true'
|
||||
if encryption:
|
||||
torrent.encryptSession()
|
||||
url=torrent.saveTorrent(url)
|
||||
self.__settings__.setSetting("lastTorrent", url)
|
||||
if 0 < int(self.__settings__.getSetting("upload_limit")):
|
||||
|
@ -1747,7 +1747,7 @@ class Core:
|
|||
if 0 < int(self.__settings__.getSetting("download_limit")):
|
||||
torrent.setDownloadLimit(
|
||||
int(self.__settings__.getSetting("download_limit")) * 1000000 / 8) #MBits/second
|
||||
torrent.downloadProcess(ind)
|
||||
torrent.downloadProcess(ind, encryption)
|
||||
showMessage(self.localize('Download Status'), self.localize('Added!'))
|
||||
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
|
||||
|
||||
|
|
|
@ -103,6 +103,9 @@ class Torrent():
|
|||
def initSession(self):
|
||||
return self.player.initSession()
|
||||
|
||||
def encryptSession(self):
|
||||
return self.player.encryptSession()
|
||||
|
||||
def startSession(self):
|
||||
return self.player.startSession()
|
||||
|
||||
|
|
128
Libtorrent.py
128
Libtorrent.py
|
@ -24,7 +24,6 @@ import os
|
|||
import urllib2
|
||||
import hashlib
|
||||
import re
|
||||
# import sys
|
||||
from StringIO import StringIO
|
||||
import gzip
|
||||
|
||||
|
@ -51,80 +50,9 @@ class Libtorrent:
|
|||
|
||||
def __init__(self, storageDirectory='', torrentFile='', torrentFilesDirectory='torrents'):
|
||||
|
||||
'''dirname = os.path.join(xbmc.translatePath('special://home'), 'addons', 'plugin.video.torrenter',
|
||||
'resources')
|
||||
sys.path.insert(0, dirname)
|
||||
|
||||
try:
|
||||
import resources.libtorrent as libtorrent
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from python_libtorrent.'
|
||||
except Exception, e:
|
||||
print 'Error importing python_libtorrent. Exception: ' + str(e)
|
||||
|
||||
try:
|
||||
from ctypes import *
|
||||
cdll.LoadLibrary(os.path.join(dirname,'libtorrent.so'))
|
||||
except Exception, e:
|
||||
print 'Error importing by ctypes. Exception: ' + str(e)
|
||||
|
||||
try:
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from python_libtorrent.'
|
||||
except Exception, e:
|
||||
print 'Error importing python_libtorrent. Exception: ' + str(e)
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from ctypes.
|
||||
|
||||
try:
|
||||
import libtorrent
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from system'
|
||||
except Exception, e:
|
||||
print 'Error importing from system. Exception: ' + str(e)
|
||||
|
||||
if platform.system() != 'Windows':
|
||||
if sys.maxsize > 2 ** 32:
|
||||
system = 'linux_x86_64'
|
||||
else:
|
||||
system = 'linux_x86'
|
||||
else:
|
||||
system = 'windows'
|
||||
|
||||
dirname = os.path.join(xbmc.translatePath('special://home'), 'addons', 'script.module.libtorrent',
|
||||
'python_libtorrent', system)
|
||||
sys.path.insert(0, dirname)
|
||||
try:
|
||||
import libtorrent
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from python_libtorrent.' + system
|
||||
except Exception, e:
|
||||
print 'Error importing python_libtorrent.' + system + '. Exception: ' + str(e)
|
||||
pass
|
||||
'''
|
||||
#from ctypes import *
|
||||
#cdll.LoadLibrary(dirname + '/libtorrent-rasterbar.so.7')
|
||||
|
||||
self.platform = get_platform()
|
||||
|
||||
print '[Libtorrent] self.platform: ' + str(self.platform)
|
||||
|
||||
try:
|
||||
import libtorrent
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from system'
|
||||
except Exception, e:
|
||||
print 'Error importing from system. Exception: ' + str(e)
|
||||
|
||||
try:
|
||||
dirname = os.path.join(xbmc.translatePath('special://home'), 'addons', 'script.module.libtorrent',
|
||||
'python_libtorrent', self.platform['system'])
|
||||
sys.path.insert(0, dirname)
|
||||
import libtorrent
|
||||
|
||||
print 'Imported libtorrent v' + libtorrent.version + ' from python_libtorrent.' + self.platform[
|
||||
'system']
|
||||
except Exception, e:
|
||||
print 'Error importing python_libtorrent.' + self.platform['system'] + '. Exception: ' + str(e)
|
||||
pass'''
|
||||
#cdll.LoadLibrary(dirname + '/libtorrent-rasterbar.so.7')'''
|
||||
|
||||
self.platform = get_platform()
|
||||
try:
|
||||
|
@ -290,17 +218,11 @@ class Libtorrent:
|
|||
|
||||
def getContentList(self):
|
||||
filelist = []
|
||||
try:
|
||||
for contentId, contentFile in enumerate(self.torrentFileInfo.files()):
|
||||
stringdata = {"title": contentFile.path, "size": contentFile.size, "ind": int(contentId),
|
||||
'offset': contentFile.offset}
|
||||
filelist.append(stringdata)
|
||||
return filelist
|
||||
except:
|
||||
xbmcgui.Dialog().ok(Localization.localize('Python-Libtorrent Not Found'),
|
||||
Localization.localize(self.platform["message"][0]),
|
||||
Localization.localize(self.platform["message"][1]))
|
||||
return
|
||||
for contentId, contentFile in enumerate(self.torrentFileInfo.files()):
|
||||
stringdata = {"title": contentFile.path, "size": contentFile.size, "ind": int(contentId),
|
||||
'offset': contentFile.offset}
|
||||
filelist.append(stringdata)
|
||||
return filelist
|
||||
|
||||
def getSubsIds(self, filename):
|
||||
subs = []
|
||||
|
@ -323,7 +245,10 @@ class Libtorrent:
|
|||
hasher.update(string.encode('utf-8', 'ignore'))
|
||||
return hasher.hexdigest()
|
||||
|
||||
def downloadProcess(self, contentId):
|
||||
def downloadProcess(self, contentId, encrytion=True):
|
||||
self.initSession()
|
||||
if encrytion:
|
||||
self.encryptSession()
|
||||
self.startSession()
|
||||
self.paused = False
|
||||
db = DownloadDB()
|
||||
|
@ -386,15 +311,38 @@ class Libtorrent:
|
|||
except:
|
||||
pass
|
||||
self.session = self.lt.session()
|
||||
self.session.set_alert_mask(self.lt.alert.category_t.error_notification | self.lt.alert.category_t.status_notification | self.lt.alert.category_t.storage_notification)
|
||||
self.session.start_dht()
|
||||
self.session.add_dht_router("router.bittorrent.com", 6881)
|
||||
self.session.add_dht_router("router.utorrent.com", 6881)
|
||||
self.session.add_dht_router("router.bitcomet.com", 6881)
|
||||
self.session.start_lsd()
|
||||
self.session.start_upnp()
|
||||
self.session.start_natpmp()
|
||||
self.session.listen_on(6881, 6891)
|
||||
self.session.set_alert_mask(self.lt.alert.category_t.storage_notification)
|
||||
|
||||
# Session settings
|
||||
session_settings = self.session.settings()
|
||||
session_settings.announce_to_all_tiers = True
|
||||
session_settings.announce_to_all_trackers = True
|
||||
session_settings.connection_speed = 100
|
||||
session_settings.peer_connect_timeout = 2
|
||||
session_settings.rate_limit_ip_overhead = True
|
||||
session_settings.request_timeout = 5
|
||||
session_settings.torrent_connect_boost = 100
|
||||
|
||||
self.session.set_settings(session_settings)
|
||||
|
||||
def encryptSession(self):
|
||||
# Encryption settings
|
||||
encryption_settings = self.lt.pe_settings()
|
||||
encryption_settings.out_enc_policy = self.lt.enc_policy(self.lt.enc_policy.forced)
|
||||
encryption_settings.in_enc_policy = self.lt.enc_policy(self.lt.enc_policy.forced)
|
||||
encryption_settings.allowed_enc_level = self.lt.enc_level.both
|
||||
encryption_settings.prefer_rc4 = True
|
||||
self.session.set_pe_settings(encryption_settings)
|
||||
|
||||
def startSession(self):
|
||||
self.initSession()
|
||||
if None == self.magnetLink:
|
||||
self.torrentHandle = self.session.add_torrent({'ti': self.torrentFileInfo,
|
||||
'save_path': self.storageDirectory,
|
||||
|
@ -447,6 +395,10 @@ class Libtorrent:
|
|||
if self.threadComplete == True:
|
||||
print 'checkThread KIIIIIIIIIIILLLLLLLLLLLLLLL'
|
||||
self.session.remove_torrent(self.torrentHandle)
|
||||
self.session.stop_natpmp()
|
||||
self.session.stop_upnp()
|
||||
self.session.stop_lsd()
|
||||
self.session.stop_dht()
|
||||
|
||||
def debug(self):
|
||||
try:
|
||||
|
|
10
Player.py
10
Player.py
|
@ -176,6 +176,9 @@ class TorrentPlayer(xbmc.Player):
|
|||
self.on_playback_stopped = []
|
||||
|
||||
def setup_torrent(self):
|
||||
self.torrent.initSession()
|
||||
if self.__settings__.getSetting('encryption') == 'true':
|
||||
self.torrent.encryptSession()
|
||||
self.torrent.startSession()
|
||||
upload_limit = self.__settings__.getSetting("upload_limit") if self.__settings__.getSetting(
|
||||
"upload_limit") != "" else 0
|
||||
|
@ -355,13 +358,18 @@ class TorrentPlayer(xbmc.Player):
|
|||
event.remove(callback)
|
||||
|
||||
def loop(self):
|
||||
debug_counter=0
|
||||
with closing(
|
||||
OverlayText(w=OVERLAY_WIDTH, h=OVERLAY_HEIGHT, alignment=XBFONT_CENTER_X | XBFONT_CENTER_Y)) as overlay:
|
||||
with nested(self.attach(overlay.show, self.on_playback_paused),
|
||||
self.attach(overlay.hide, self.on_playback_resumed, self.on_playback_stopped)):
|
||||
while not xbmc.abortRequested and self.isPlaying() and not self.torrent.threadComplete:
|
||||
self.torrent.checkThread()
|
||||
self.torrent.debug()
|
||||
if self.iterator == 100 and debug_counter < 100:
|
||||
debug_counter += 1
|
||||
else:
|
||||
self.torrent.debug()
|
||||
debug_counter=0
|
||||
status = self.torrent.torrentHandle.status()
|
||||
overlay.text = "\n".join(self._get_status_lines(status))
|
||||
# downloadedSize = torrent.torrentHandle.file_progress()[contentId]
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
[B]Version 2.2.8[/B]
|
||||
[B]Version 2.2.9[/B]
|
||||
[+] .torrent Проигрыватель: Теперь .torrent не теряется при обновлении окна Kodi
|
||||
[+] Проигрыватель: Улучшенная настройка сессии из cherrytorrent
|
||||
|
||||
[B]Version 2.2.8[/B]
|
||||
[+] Добавлен Украинский язык (by kharts)
|
||||
[+] Торрент-клиент: Добавлены иконки торрент-клиентов (by kharts)
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
<string id="30038">Download via Python-Libtorrent</string>
|
||||
<string id="30039">Sort search results by seeds</string>
|
||||
<string id="30040">Custom search option phrase</string>
|
||||
<string id="30041">Encryption</string>
|
||||
<string id="30101">Interface</string>
|
||||
<string id="30102">P2P Network</string>
|
||||
<string id="30103">Advanced</string>
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
<string id="30038">Скачать Python-Libtorrent</string>
|
||||
<string id="30039">Сортировать поиск по количеству раздающих</string>
|
||||
<string id="30040">Дополнительная фраза в вариантах поиска</string>
|
||||
<string id="30041">Шифрование</string>
|
||||
<string id="30101">Интерфейс</string>
|
||||
<string id="30102">P2P Сеть</string>
|
||||
<string id="30103">Дополнительные</string>
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
<string id="30038">Завантажити за допомогою Python-Libtorrent</string>
|
||||
<string id="30039">Сортувати результати пошуку по кількості роздач</string>
|
||||
<string id="30040">Додаткова пошукова фраза в варіантах пошуку</string>
|
||||
<string id="30041">Шифрування</string>
|
||||
<string id="30101">Інтерфейс</string>
|
||||
<string id="30102">P2P Мережа</string>
|
||||
<string id="30103">Додатково</string>
|
||||
|
|
|
@ -137,6 +137,13 @@
|
|||
visible="eq(-9,0)"
|
||||
enable="eq(-7,true)"
|
||||
/>
|
||||
<setting
|
||||
id="encryption"
|
||||
type="bool"
|
||||
label="30041"
|
||||
default="true"
|
||||
visible="eq(-10,0)"
|
||||
/>
|
||||
</category>
|
||||
<category label="Torrent-client">
|
||||
<setting id="torrent_save" type="enum" label="50301" lvalues="50302|50303" default="0"/>
|
||||
|
|
Loading…
Reference in New Issue