script.module.libtorrent/python_libtorrent/platform_pulsar.py

205 lines
8.2 KiB
Python

# -*- coding: utf-8 -*-
"""
python-libtorrent for Kodi (script.module.libtorrent)
Copyright (C) 2015-2016 DiMartino, srg70, RussakHH, aisman
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import sys
import os
try:
import xbmc, xbmcaddon
__settings__ = xbmcaddon.Addon(id='script.module.libtorrent')
__version__ = __settings__.getAddonInfo('version')
__plugin__ = __settings__.getAddonInfo('name') + " v." + __version__
except:
__plugin__ = 'script.module.libtorrent'
pass
def log(msg):
try:
xbmc.log("### [%s]: %s" % (__plugin__, msg,), level=xbmc.LOGINFO)
except UnicodeEncodeError:
xbmc.log("### [%s]: %s" % (__plugin__, msg.encode("utf-8", "ignore"),), level=xbmc.LOGINFO)
except:
try:
xbmc.log("### [%s]: %s" % (__plugin__, 'ERROR LOG',), level=xbmc.LOGINFO)
except:
print(msg)
def get_libname(platform):
libname = []
if platform['system'] in ['darwin', 'linux_x86', 'linux_arm', 'linux_armv6',
'linux_armv7', 'linux_x86_64', 'ios_arm',
'linux_mipsel_ucs2', 'linux_mipsel_ucs4', 'linux_aarch64_ucs2', 'linux_aarch64_ucs4']:
libname = ['libtorrent.so']
elif platform['system'] == 'windows':
libname = ['libtorrent.pyd']
elif platform['system'] in ['android_armv7', 'android_x86']:
libname = ['libtorrent.so', 'liblibtorrent.so']
return libname
def get_platform():
__settings__ = xbmcaddon.Addon(id='script.module.libtorrent')
__version__ = __settings__.getAddonInfo('version')
__plugin__ = __settings__.getAddonInfo('name') + " v." + __version__
__language__ = __settings__.getLocalizedString
if __settings__.getSetting('custom_system').lower() == "true":
system = int(__settings__.getSetting('set_system'))
log('USE CUSTOM SYSTEM: ' + __language__(401100 + system))
ret = {}
if system == 0:
ret["os"] = "windows"
ret["arch"] = "x86"
elif system == 1:
ret["os"] = "linux"
ret["arch"] = "x86"
elif system == 2:
ret["os"] = "linux"
ret["arch"] = "x64"
elif system == 3:
ret["os"] = "linux"
ret["arch"] = "armv7"
elif system == 4:
ret["os"] = "linux"
ret["arch"] = "armv6"
elif system == 5:
ret["os"] = "android"
ret["arch"] = "arm"
elif system == 6:
ret["os"] = "android"
ret["arch"] = "x86"
elif system == 7:
ret["os"] = "darwin"
ret["arch"] = "x64"
elif system == 8:
ret["os"] = "ios"
ret["arch"] = "arm"
elif system == 9:
ret["os"] = "ios"
ret["arch"] = "arm"
elif system == 10:
ret["os"] = "linux"
ret["arch"] = "mipsel_ucs2"
elif system == 11:
ret["os"] = "linux"
ret["arch"] = "mipsel_ucs4"
elif system == 12:
ret["os"] = "linux"
ret["arch"] = "aarch64_ucs2"
elif system == 13:
ret["os"] = "linux"
ret["arch"] = "aarch64_ucs4"
elif system == 14:
ret["os"] = "windows"
ret["arch"] = "x64"
else:
ret = {
"arch": sys.maxsize > 2 ** 32 and "x64" or "x86",
}
if xbmc.getCondVisibility("system.platform.android"):
ret["os"] = "android"
if "arm" in os.uname()[4] or "aarch64" in os.uname()[4]:
ret["arch"] = "arm"
elif xbmc.getCondVisibility("system.platform.linux"):
ret["os"] = "linux"
uname = os.uname()[4]
if "arm" in uname:
if "armv7" in uname:
ret["arch"] = "armv7"
else:
ret["arch"] = "armv6"
elif "mips" in uname:
if sys.maxunicode > 65536:
ret["arch"] = 'mipsel_ucs4'
else:
ret["arch"] = 'mipsel_ucs2'
elif "aarch64" in uname:
if sys.maxsize > 2147483647: # is_64bit_system
if sys.maxunicode > 65536:
ret["arch"] = 'aarch64_ucs4'
else:
ret["arch"] = 'aarch64_ucs2'
else:
ret["arch"] = "armv7" # 32-bit userspace
elif xbmc.getCondVisibility("system.platform.windows"):
ret["os"] = "windows"
elif xbmc.getCondVisibility("system.platform.osx"):
ret["os"] = "darwin"
elif xbmc.getCondVisibility("system.platform.ios"):
ret["os"] = "ios"
ret["arch"] = "arm"
ret = get_system(ret)
return ret
def get_system(ret):
ret["system"] = ''
ret["message"] = ['', '']
if ret["os"] == 'windows':
ret["system"] = 'windows_' + ret['arch']
ret["message"] = ['Windows has static compiled python-libtorrent included.',
'You should install "script.module.libtorrent" from "MyShows.me Kodi Repo"']
elif ret["os"] == "linux" and ret["arch"] == "x64":
ret["system"] = 'linux_x86_64'
ret["message"] = ['Linux x64 has not static compiled python-libtorrent included.',
'You should install it by "sudo apt-get install python-libtorrent"']
elif ret["os"] == "linux" and ret["arch"] == "x86":
ret["system"] = 'linux_x86'
ret["message"] = ['Linux has static compiled python-libtorrent included but it didn\'t work.',
'You should install it by "sudo apt-get install python-libtorrent"']
elif ret["os"] == "linux" and "aarch64" in ret["arch"]:
ret["system"] = 'linux_' + ret["arch"]
ret["message"] = ['Linux has static compiled python-libtorrent included but it didn\'t work.',
'You should install it by "sudo apt-get install python-libtorrent"']
elif ret["os"] == "linux" and ("arm" in ret["arch"] or 'mips' in ret["arch"]):
ret["system"] = 'linux_' + ret["arch"]
ret["message"] = ['As far as I know you can compile python-libtorrent for ARMv6-7.',
'You should search for "OneEvil\'s OpenELEC libtorrent" or use Ace Stream.']
elif ret["os"] == "android":
if ret["arch"] == 'arm':
ret["system"] = 'android_armv7'
else:
ret["system"] = 'android_x86'
ret["message"] = ['Please contact DiMartino on kodi.tv forum. We compiled python-libtorrent for Android,',
'but we need your help with some tests on different processors.']
elif ret["os"] == "darwin":
ret["system"] = 'darwin'
ret["message"] = ['It is possible to compile python-libtorrent for OS X.',
'But you would have to do it by yourself, there is some info on github.com.']
elif ret["os"] == "ios" and ret["arch"] == "arm":
ret["system"] = 'ios_arm'
ret["message"] = ['It is probably NOT possible to compile python-libtorrent for iOS.',
'But you can use torrent-client control functions.']
return ret