#-*- coding: utf-8 -*- ''' Torrenter v2 plugin for XBMC/Kodi Copyright (C) 2015 srg70, RussakHH, DiMartino ''' from functions import * import xbmc, xbmcaddon import sys import os __settings__ = xbmcaddon.Addon(id='script.module.libtorrent') __version__ = __settings__.getAddonInfo('version') __plugin__ = __settings__.getAddonInfo('name') + " v." + __version__ __language__ = __settings__.getLocalizedString libtorrent=None platform = get_platform() set_dirname=__settings__.getSetting('dirname') log('set_dirname:' +str(set_dirname)) if getSettingAsBool('custom_dirname') and set_dirname: dirname=set_dirname else: dirname = os.path.join(xbmc.translatePath('special://temp'), 'xbmcup', 'script.module.libtorrent', 'python_libtorrent') log('dirname:' +str(dirname)) default_version=0 #0.16.19 set_version=__settings__.getSetting('set_version') if getSettingAsBool('custom_version'): platform['version'] = __language__(1150+int(set_version)) else: platform['version'] = __language__(1150+default_version) dest_path = os.path.join(dirname, platform['system'], platform['version']) sys.path.insert(0, dest_path) lm=LibraryManager(dest_path) if not lm.check_exist(): ok=lm.download() xbmc.sleep(2000) if __settings__.getSetting('plugin_name')!=__plugin__: __settings__.setSetting('plugin_name', __plugin__) lm.update() log('platform: ' + str(platform)) if platform['system'] not in ['windows']: log('os: '+str(os.uname())) try: if platform['system'] in ['linux_x86', 'windows', 'linux_armv6', 'linux_armv7', 'linux_x86_64']: import libtorrent elif platform['system'] in ['darwin']: import imp path_list = [dest_path] log('path_list = ' + str(path_list)) fp, pathname, description = imp.find_module('libtorrent', path_list) log('fp = ' + str(fp)) log('pathname = ' + str(pathname)) try: libtorrent = imp.load_module('libtorrent', fp, pathname, description) finally: if fp: fp.close() elif platform['system'] in ['android_armv7', 'android_x86']: import imp from ctypes import CDLL try: dll_path=os.path.join(dest_path, 'liblibtorrent.so') log('CDLL path = ' + dll_path) liblibtorrent=CDLL(dll_path) log('CDLL = ' + str(liblibtorrent)) except: # If no permission in dest_path we need to go deeper! try: dest_path=lm.android_workaround(new_dest_path='/data/data/org.xbmc.kodi/lib/') dll_path=os.path.join(dest_path, 'liblibtorrent.so') log('NEW CDLL path = ' + dll_path) liblibtorrent=CDLL(dll_path) log('CDLL = ' + str(liblibtorrent)) except: # http://i3.kym-cdn.com/photos/images/original/000/531/557/a88.jpg dest_path=lm.android_workaround(new_dest_path=xbmc.translatePath('special://xbmc')) dll_path=os.path.join(dest_path, 'liblibtorrent.so') log('NEW CDLL path = ' + dll_path) liblibtorrent=CDLL(dll_path) log('CDLL = ' + str(liblibtorrent)) liblibtorrent=CDLL(dll_path) log('CDLL = ' + str(liblibtorrent)) path_list = [dest_path] log('path_list = ' + str(path_list)) fp, pathname, description = imp.find_module('libtorrent', path_list) log('fp = ' + str(fp)) log('pathname = ' + str(pathname)) try: libtorrent = imp.load_module('libtorrent', fp, pathname, description) finally: if fp: fp.close() log('Imported libtorrent v' + libtorrent.version + ' from "' + dest_path + '"') except Exception, e: log('Error importing libtorrent from "' + dest_path + '". Exception: ' + str(e)) pass def get_libtorrent(): return libtorrent