/script.torrent-tv.ru.pp/defines.py

https://github.com/seppius-xbmc-repo/ru · Python · 124 lines · 102 code · 21 blank · 1 comment · 30 complexity · 0f4748d3ca14722e2100069e2c71672a MD5 · raw file

  1. # Edited (c) 2015, Vorotilin D.V., E-mail: dvor85@mail.ru
  2. import xbmcaddon
  3. import xbmc
  4. import sys
  5. import urllib2
  6. import threading
  7. import os
  8. from BeautifulSoup import BeautifulSoup
  9. ADDON = xbmcaddon.Addon(id='script.torrent-tv.ru.pp')
  10. ADDON_ICON = ADDON.getAddonInfo('icon')
  11. ADDON_PATH = ADDON.getAddonInfo('path')
  12. ADDON_ICON = ADDON.getAddonInfo('icon')
  13. ADDON_ID = ADDON.getAddonInfo('id')
  14. PTR_FILE = ADDON.getSetting('port_path')
  15. DATA_PATH = xbmc.translatePath(os.path.join("special://profile/addon_data", ADDON_ID))
  16. TTV_VERSION = '1.5.3'
  17. AUTOSTART = ADDON.getSetting('startlast') == 'true'
  18. DEBUG = ADDON.getSetting('debug') == 'true'
  19. skin = ADDON.getSetting('skin')
  20. SKIN_PATH = ADDON_PATH
  21. print skin
  22. if (skin != None) and (skin != "") and (skin != 'st.anger'):
  23. SKIN_PATH = DATA_PATH
  24. def Autostart(state):
  25. userdata = xbmc.translatePath("special://masterprofile")
  26. autoexec = os.path.join(userdata, 'autoexec.py')
  27. if os.path.isfile(autoexec):
  28. mode = 'r+'
  29. elif state:
  30. mode = 'w+'
  31. else:
  32. return
  33. try:
  34. found = False
  35. with open(autoexec, mode) as autoexec_file:
  36. for line in autoexec_file:
  37. if ADDON_ID in line:
  38. found = True
  39. break
  40. if not found and state:
  41. autoexec_file.seek(0)
  42. autoexec_file.write('import xbmc\n')
  43. autoexec_file.write("xbmc.executebuiltin('RunAddon(%s)')\n" % ADDON_ID)
  44. autoexec_file.truncate()
  45. if not state and found:
  46. os.unlink(autoexec)
  47. except:
  48. t, v, tb = sys.exc_info()
  49. sys.stderr.write("Error while write autoexec.py: {}:{}.".format(t, v))
  50. del tb
  51. class MyThread(threading.Thread):
  52. def __init__(self, func, params, back=True):
  53. threading.Thread.__init__(self)
  54. self.func = func
  55. self.params = params
  56. self.isCanceled = False
  57. def run(self):
  58. self.func(self.params)
  59. def stop(self):
  60. self.isCanceled = True
  61. if (sys.platform == 'win32') or (sys.platform == 'win64'):
  62. ADDON_PATH = ADDON_PATH.decode('utf-8')
  63. def showMessage(message='', heading='Torrent-TV.RU', times=6789):
  64. try:
  65. xbmc.executebuiltin('XBMC.Notification("%s", "%s", %s, %s)' % (heading.encode('utf-8'), message.encode('utf-8'), times, ADDON_ICON))
  66. except Exception, e:
  67. try:
  68. xbmc.executebuiltin('XBMC.Notification("%s", "%s", %s, %s)' % (heading, message, times, ADDON_ICON))
  69. except Exception, e:
  70. xbmc.log('showMessage: exec failed [%s]' % e, 3)
  71. def GET(target, post=None, cookie=None):
  72. t = 0
  73. while True:
  74. t += 1
  75. try:
  76. print target
  77. req = urllib2.Request(url=target, data=post)
  78. req.add_header('User-Agent', 'XBMC (script.torrent-tv.ru)')
  79. if cookie:
  80. req.add_header('Cookie', 'PHPSESSID=%s' % cookie)
  81. resp = urllib2.urlopen(req, timeout=6)
  82. try:
  83. http = resp.read()
  84. return http
  85. finally:
  86. resp.close()
  87. except Exception, e:
  88. if t % 10 == 0:
  89. xbmc.log('GET EXCEPT [%s]' % (e), 4)
  90. xbmc.sleep(30000)
  91. def checkPort(params):
  92. data = GET("http://2ip.ru/check-port/?port=%s" % params)
  93. beautifulSoup = BeautifulSoup(data)
  94. port = beautifulSoup.find('div', attrs={'class': 'ip-entry'}).text
  95. if port.encode('utf-8').find("Порт закрыт") > -1:
  96. return False
  97. else:
  98. return True
  99. def tryStringToInt(str_val):
  100. try:
  101. return int(str_val)
  102. except:
  103. return 0