예제 #1
0
    def _getUrl(self, jsCode, url='', data='', timestamp=''):
        printDBG("AnimeTo._getUrl url[%s], data[%s], timestamp[%s]" %
                 (url, data, timestamp))
        try:
            if False:
                tmp = EncodeGzipped('')
                tmp = self._cryptoJS_AES(
                    tmp, ''.join(GetPluginDir().split('/')[-5:]), False)
                tmp = hexlify(tmp)
                printDBG("$$$: " + tmp)
            else:
                tmp = 'ed3cfec3d06c36b40958c04b3cdfac405d3f49f2c8414537917d63db171714e2a14761c2f7f1aab84c0b91e47562fc4c7050284e95372807978603d115ec9b1e11accaf3493e91005f13a0e82bb461408027ae9d30572987a821eee530a9488927ac26a7c114b0a33bf76a472b3f9c583e856d754ecd11f5caf780f441c263b422db5ca8fb561144184049da10df93f1009fc9081ff0ffe77e341d53d94dd9a3c816713fb09b6b656c3b24185199f23c34bad676acfb1a9d91b7ae892d3e71b9ccc7368dffed08b276d9dd6987833f3cf1430ad9126e0661132db4c19bd12a8f5bcb64a4e938e0889bfcf4a636ca6e9b2e5eae05896ab902673be34cf82feaa357178ee32ee1b78796ea75d00b6181adebd500d071c35bd6aebc9e5650092d7c95d029713ed76f6d11d3e1153c759afa494f9461bfca8e6a30ddf3d7ecabb5a78aa62d37c78f90fb6df5f5138dd1c6415719c58f103335e6c6451b7b8de48bd80646d1d9b542977b4ff5d6332cdaf4f68e0fe24eea5b0d86039d6e66b558d011e29c2e946683739cc2c0619aa65de58ca5fed484b8db9f3eea0866e6f21ba839d4c177bc2efcd85aa6055520176c67528ccc1f5e9880e833d24ed9b84a7e24f315de0d6eaa38320f5daff8d42ed6edce911ded996ca077bf2b3acc76d5ceea0a6c590b4f58566f55c35d670b95b22881214b11e6779c43a3729a5acc36187f3e88cf9baf82782aa61868ae21b7a778e4d228ff1deb7475e56a74efae1334d8ffb12c428aaf7d6e10fb64464eac3d2c3a3b112920f7193ea57efc0095614c28fdd81143ab42fa21d61610f6062072a2abfd6dc702c22af67552c4c8c5cd347bc40597641c5fd69c2aa68641ee3960b323a5332326cb4505e52cff439dda63b78682dab7002d362835f189afb2535da6e3336f583602051e5693e7f286ca20507f8ef90c6a1c6fde24843a3bbd417ab463cd7d8105bc77f1e514a76cf5b81d95e80dd62892aeebf6b9e443bca6fb83e21890222bd65ae1ddb9eac051c29b78f43b'
                tmp = self._cryptoJS_AES(
                    unhexlify(tmp), ''.join(GetPluginDir().split('/')[-5:]))
                tmp = DecodeGzipped(tmp)
        except Exception:
            printExc()

        retUrl = ''
        jscode = [
            'iptv_ts=%s;' % timestamp, tmp, jsCode,
            'iptv_arg = {url:"%s", "data":"%s"}; iptv_call(iptv_arg); print(JSON.stringify(iptv_arg));'
            % (url, data)
        ]
        ret = js_execute('\n'.join(jscode), {'timeout_sec': 15})
        if ret['sts'] and 0 == ret['code']:
            data = ret['data'].strip()
            try:
                data = json_loads(data)
                retUrl = data['url']
                if data['data'] != '':
                    retUrl += '&' + data['data']
            except Exception:
                printExc()
        return retUrl
예제 #2
0
 def getHeaders(self, url):
     headers = {}
     if self._getHeaders == None:
         try:
             import hmac
             tmp = '89aac45129123590486772c958b0efc9074993ad1ffddc7fecfec3755806ca1d51a76813a3fbf891ee09081e10ea4f74681823b1443295b8b4ee2f14d8f209194fe5db528cbbf29117101f346dc7b4dd1474dff6face052de50948157720f1fd9d162c4068f329ca732336edd335ae93e29d3515f32b9c1963255b979da52f52bede1bfa1f505581bd8a92a4d43ce162ebe4efe19303d3a3b141305610bfe8257fa70af3c548003c3b5a216e2e5204566e2bf8fb2471468c016a74fcdbaa3926ad203810d120c5997014717abb01e7036bea34a336384d25bd3d7807d7f4e8efe3ee2393044dddca3b6e48d364b61135e1b71582b81578d394946c18f2a8e2c40a07c6ecd6bcce821876bfd0ca302aa33aef190ad5bcd2dd11caf38c7bf651d4dc96d34abd5781744a75a09cebb88933bbee4ab9d753f746e7da84e0fadf1cffe902ec710f91ba973d6b333eb52680f0497571ba1e6f20946f05956f73b901e482ba8cf7c74c6359608ab00f6aade9a203aa038e4d64a6036417063b2b11e4101bb9305699f0704a0378836fae0b1f5709c2cc79ff57aaa9f4da32c5827c5cbfedcc3ee9e82a23384c0c623e22e05935f236bbc374a304347414083c4ca10d19ec7a9d1ce5c2d9b9d37145df37d61c623a0930b991eea514a0565dac2226022a0cda6d6e77e41b5da5ad3a809f8d4fc31061b7fa040189f24f1c4fea3e908020335174e2dd66e59d2a6cd60e1781dafcfb770dcd77c605613795d6b7a9625f02bfed25661350f77cb54250c01cbf1a5707c394b10efeea54bb075d6cbb0f10e93c9744674c7f107ea892d947a2c57214ec6a68004508d5be2c203cabbd4fe247fcdabd5aaf816270b6b6c43fbe10d4e5f1ad1579ab25dcb9460672aa43fca504403f3e2d3422f7d8fec33439c73bd4336320e3cdb14dee681fb17313e36ee3792769ce192cb688f5a00bee4fc566eb859172b7993b70ce1222a55c9e94d5bae32de1525c8bbb86b54fa27215fa0d21f8'
             tmp = self._cryptoJS_AES_decrypt(
                 unhexlify(tmp), ''.join(GetPluginDir().split('/')[-5:]))
             tmp = base64.b64decode(tmp.split('\r')[-1]).replace('\r', '')
             _getHeaders = compile(tmp, '', 'exec')
             vGlobals = {
                 "__builtins__": None,
                 'len': len,
                 'list': list,
                 'dict': dict,
                 'time': time,
                 'base64': base64,
                 'hashlib': hashlib,
                 'hmac': hmac,
                 'json': json,
                 'int': int,
                 'str': str
             }
             vLocals = {'_getHeaders': ''}
             exec _getHeaders in vGlobals, vLocals
             self._getHeaders = vLocals['_getHeaders']
         except Exception:
             printExc()
     if self._getHeaders != None:
         try:
             headers = self._getHeaders(url)
         except Exception:
             printExc()
     return headers
예제 #3
0
 def _updateParams(self, params):
     if self._myFun == None:
         try:
             tmp = 'd4dc09ccf50eec3e8ff154e9aaae91d70fd5cb194964f86c2f2b4dda892d816c987cca66475b807bf875241ea891e7063f608834577df64b8a97f73fcb5598a2f7cd9aee7a7720eca337c09b1fd8808a1140579345f89aea4169d465869f1149e7e79245df09793524d95bfe8ed80b693316d6dce7c09a57c16fd29f0210ad2711f3a1fb4641bf914f7ef342fb1355211601edc691103e5c635ca2af3b8e730f18732e87348f95b806f4d976c113adbc6104b7524d5a22824fa2f694fda0e32b44bac01b78a2ff3baa2c224036bde220417074720a6965a6a835031b97fd18eaac53af1477d6e67ab66f324d9e2e3fc9051840f038336821ad2695090b6fc18589769b4fd63fa2baca4dbdec2d636b261537d3bb54c25ea3cdf591e1896486e086047ae196d93f625da5aefabed41b163297e09d4d6d39bb6336997197d76fdd829b7946e1e48a1182c633f9ad690798b17f8a01e3bb72838839779bd1e36f85857a45d09ae592435642f83d0629264a7f90f4822bb3ab51e78489659cbdcaa22ee798482edafcb948833bff410bb88c25440971f12ab54a5082d98cdf0bb6be9a9c992fac672e8ce3b4525c63d02ca3ea344ae3c150bf1c49e9b83bc7c40839d3bd9babd75860d3560ca0887a38c29eab0155c81cd6f400c1e69d05b228a84052683a5a6821d72185140aaa343fae61a9e06d2100924d4f716f752436528d2b169cd585ce0e5ca243bd6ad457cba5ba402f4706311ccaeefcce6bbccd4e65ba1e2d4318af6f1844d32c27bf871ca198c31bf6f7dcc9185357fd202f419795cb104ccb5383fafd91dd1ad97b2098f579077233c8ce07952a696babdd4e5ae913c5166c92950dc4a1457d2e77f39e4b72c044c3e248a76de4af1dcea6bafe66ea12bce34fe9d6be668f85a2f329256c312c4ec44b86ad66b32be861b916fff7ee33692be1f8a93161c1215e4c621a58427bb0a0d26bda5459f6335b982cf0725af821d6ee7d3dc12d1b3228a3fc2548646819ec8001649088e9cf042d248ef9e7'
             tmp = self._cryptoJS_AES(
                 unhexlify(tmp), ''.join(GetPluginDir().split('/')[-5:]))
             tmp = base64.b64decode(tmp.split('\r')[-1]).replace('\r', '')
             _myFun = compile(tmp, '', 'exec')
             vGlobals = {
                 "__builtins__": None,
                 'len': len,
                 'dict': dict,
                 'list': list,
                 'ord': ord,
                 'range': range,
                 'str': str,
                 'max': max,
                 'hex': hex
             }
             vLocals = {'zaraza': ''}
             exec _myFun in vGlobals, vLocals
             self._myFun = vLocals['zaraza']
         except Exception:
             printExc()
     try:
         params = self._myFun(params)
     except Exception:
         printExc()
     return params
예제 #4
0
    def startExecution(self):
        login = config.plugins.iptvplayer.myjd_login.value
        password = config.plugins.iptvplayer.myjd_password.value
        jdname = config.plugins.iptvplayer.myjd_jdname.value

        captcha = {
            'siteKey': self.sitekey,
            'sameOrigin': True,
            'siteUrl': self.referer,
            'contextUrl': '/'.join(self.referer.split('/')[:3]),
            'boundToDomain': True,
            'stoken': None
        }
        try:
            captcha = base64.b64encode(json.dumps(captcha))
        except Exception:
            printExc()
        if getDebugMode() == '': debug = 0
        else: debug = 1

        cmd = GetPyScriptCmd('fakejd') + ' "%s" "%s" "%s" "%s" "%s" %d' % (
            GetPluginDir('libs/'), login, password, jdname, captcha, debug)

        self["console"].setText(_('JDownloader script execution'))

        self.workconsole['console'] = eConsoleAppContainer()
        self.workconsole['close_conn'] = eConnectCallback(
            self.workconsole['console'].appClosed, self._scriptClosed)
        self.workconsole['stderr_conn'] = eConnectCallback(
            self.workconsole['console'].stderrAvail, self._scriptStderrAvail)
        self.workconsole['stdout_conn'] = eConnectCallback(
            self.workconsole['console'].stdoutAvail, self._scriptStdoutAvail)
        self.workconsole["console"].execute(E2PrioFix(cmd, 0))
        printDBG(">>> EXEC CMD [%s]" % cmd)
예제 #5
0
 def _updateParams(self, params, params2=True, params3=True):
     if self._myFun == None:
         try:
             if True:
                 tmp = 'd4dc09ccf50eec3e8ff154e9aaae91d7929c817981b33e845bd0b59ba69cdee3c2d131462159801b5c5f8ca1593cf43406422ee379fc634b29045ebb16c59b296711085334eb391754d0da0059462a8b182e895aaf125160dfbfe09b7397a3f7819d232803b32af8a933a20eafcdf6f2a308fd314479089998bad79964c1d2d3b92480dbc42d5418565fdac3faac40615af34a52d8a6db7fe8851e43a148fae4678f949fe0b70a201807bd8f7d093468ebb63905b54812f6f5a4ff820337e641fb0252b2744123f871c3e76076359b7eea77d6b8207a8af9e360403df67a5f31bb31377f3b3e8cc3a118ce3c35e512313374b16526a28b6e315b587e746c2bf48b118a82a788bd849c852859abc7ab86a13e2d8756c6338749ecc878f6ee0244618bd3e38067879ce449e49b22b6e94d59e64334e28eeb89fcfd05e167f79d8c923b58bb9561aabd8b362fb2278c2bae46f1bebfcd4416580f44102d4def7fcd33e5f6021cde372582f21e75123ff0ea9e4c008cb87c64b225daff9968952a75edc7479d3fb66d886921ae2290a60fd7e13081336040ae44906c25b91e7e72efc37466e13d6d31279536effdbdea310cc9af66224f56244588943867c0b0f2acffc6200c3b4aed323f18a5a247739589749caae7b7bad38e2bc667f1a0f439b58df21bda6f35f54833254af0a35421c3e1a1090f169926f5d630e6e3e4bfe5a641c1a0696390caea942a5b4d46a939e2936c523f5e9532ac9fd5d112bd9c6d5099164edc930b0b307812cf77611d3f31f976c711422ee77aa0603c221bb7042c0d3cb5d7becb58df5a4ee229832a56e7c297f3df8f38155cad424c296e1ff0ff8e88141d6a7dffde1ffae467155c316ca423b95a320efd17ad2a0e44434c1f3d54ab5f31167fcb9764ca795c2d743551727d2eb9b923e4c55f0094d8585d7ea78cf0a75f22d09038b64fa4de7c28e670b2a1b8dc6c032771ae465c1ebaeac76c7c02a98fbe00f985b634d2985b35e298d1fe79db36577dd0194d65945c137fe3c863d50f4573d8db495b1b736debdd8b'
                 tmp = self._cryptoJS_AES(
                     unhexlify(tmp),
                     ''.join(GetPluginDir().split('/')[-5:]))
                 tmp = base64.b64decode(tmp.split('\r')[0]).replace(
                     '\r', '')
             _myFun = compile(tmp, '', 'exec')
             vGlobals = {
                 "__builtins__": None,
                 'len': len,
                 'dict': dict,
                 'list': list,
                 'ord': ord,
                 'range': range,
                 'str': str,
                 'max': max,
                 'hex': hex,
                 'b64decode': base64.b64decode,
                 'True': True,
                 'False': False
             }
             vLocals = {'zaraza': ''}
             exec _myFun in vGlobals, vLocals
             self._myFun = vLocals['zaraza']
         except Exception:
             printExc()
     try:
         params = self._myFun(params, params2)
     except Exception:
         printExc()
     return params
예제 #6
0
 def _updateParams(self, params):
     if self._myFun == None:
         try:
             if False:
                 tmp = 'base64_code'
                 tmp = self._cryptoJS_AES(
                     tmp, ''.join(GetPluginDir().split('/')[-5:]), False)
                 tmp = hexlify(tmp)
                 printDBG("$$$: " + tmp)
             else:
                 tmp = 'd4dc09ccf50eec3e8ff154e9aaae91d7929c817981b33e845bd0b59ba69cdee3c2d131462159801b5c5f8ca1593cf434ab5b37a0109293bb5b77460cccb36b881f6d05920c9c4b1f8e8db5d3c144b481de77292eca89468f9f87782cc5facef40096e18371a68dd18bddbdcc744db850dbb9666ff1e4e478ba88a7af1872cc3a4f073fd33b00b73101f26746b140e082e519bc88dba1baa9981cbe20712f5927799db6152c03634df5232599438fb7665dfc3fc3aeae7d9d7eee146576619d1b1a8e07ada0bd9d48d094648053f79f3f7077b2e415883e798b2d1c241b27cc7854da4e71c4398df86fc4b7398d3127debd4eedc97775d5a43aeaf4e071ba0e3dc7be5a1651e95a51888c842ed0b3181822b6404837b7c477cf729641f7e53c40455e126854b8879194ead6a0ba0d3d23c4f991dd5b6dddf3d0c6e34ae5f543414a3bdfac20b543cee43452397d95f909ed841bff0ad32cb073b12ecc538f0c9e314df9740a07669b453d79a8107de12330d96b81f5092082801d054825e08c21cc1261d0055495190f402b979caaf87984475e320a931bf3c46f756f4e1322d7417db247b7152345c16dc749e3e22da5f895a57ecd8ec91d62c63de822fb1afa4e07ccfe23a1e5ca9cb0277eada4805961147f92c88b3708182a64b911443572b437d0f57e3c28a70092ed20006ef9d1c2e0ec68d25f0ef586a292e6503e533cf56c04fc1044262877c631bd0908fd67fead53fd9b1dc7f606df62ead99177a758a9fb92da18edf484655d35619cc5d062bfdb19de48b53c0f8229c1d027158b3dbd44539faecff61b48d0bfe89a742b3f2c52325b1e23893b7dfb303db11d68fb98ff3d752fe46d2464b7e32d873d37c537e7b30fcb8a581fd79c217134be224d2a8682b6fa675f2e56e6ee933455ee3901388e4602dad2e77dbad5f1791b555786b7d35c84e01e58be9e5f9db7336ca2bc62553c91ca55f9daf6500273922e89840a6d3348b4ab8692d31eb9ea4f8ab850e4088a85086fa6c5d25e4a21fd344cc332e061332cee63630cbd263c8fb446c705a72eb996df156d808af308639dd46c38a7c5e68140770d4cd61bf0dc460a1900ff232dfeca5805ef26cda6d5aaec6856a10303af0ce2298a8747d02b0e351989512309d46e7be56c694e30cb8c0aa915ee2c71831070b605f54b4d87babe9de968c6ccf83392e16d0fb89c4e1cca6892a1d1e2012ed3aec7747e81504395b51059e3f60f1493c7003c16fb657779933907371c839d6a7a5e4b3a14ad27ba8408925d18208bfed1595d37812b1fe672e79d0af986a813fce12d1278c96bef11493746612b9ceb02c62a7ef91c2585ad27b195a75730d14d77ac424b0656'
                 tmp = self._cryptoJS_AES(
                     unhexlify(tmp),
                     ''.join(GetPluginDir().split('/')[-5:]))
                 tmp = base64.b64decode(tmp.split('\r')[-1]).replace(
                     '\r', '')
             _myFun = compile(tmp, '', 'exec')
             vGlobals = {
                 "__builtins__": None,
                 'len': len,
                 'dict': dict,
                 'list': list,
                 'ord': ord,
                 'range': range,
                 'str': str,
                 'max': max,
                 'hex': hex,
                 'True': True,
                 'False': False
             }
             vLocals = {'zaraza': ''}
             exec _myFun in vGlobals, vLocals
             self._myFun = vLocals['zaraza']
         except Exception:
             printExc()
     try:
         params = self._myFun(params)
     except Exception:
         printExc()
     return params
 def reportHostCrash(self, ret):
     try:
         if ret:
             try: 
                 exceptStack = self.workThread.getExceptStack()
                 reporter = GetPluginDir('iptvdm/reporthostcrash.py')
                 msg = urllib_quote('%s|%s|%s|%s' % ('HOST_CRASH', IPTVSubDownloaderWidget.IPTV_VERSION, self.hostName, self.getCategoryPath()))
                 self.crashConsole = iptv_system('python "%s" "http://iptvplayer.vline.pl/reporthostcrash.php?msg=%s" "%s" 2&>1 > /dev/null' % (reporter, msg, exceptStack))
                 printDBG(msg)
             except Exception:
                 printExc()
         self.workThread = None
         self.prevSelList = []
         self.back_pressed()
     except Exception: printExc()
예제 #8
0
def reloadScripts():
    #### Reload scripts if new version of source exists ####
    webPath = GetPluginDir(file = '/Web/')
    if os.path.exists(os.path.join(webPath, "webParts.py")):
        if os.path.exists(os.path.join(webPath, "webParts.pyo")):
            if (int(os.path.getmtime(os.path.join(webPath, "webParts.pyo"))) < 
                int(os.path.getmtime(os.path.join(webPath, "webParts.py")))):
                reload(webParts)
        else:
            reload(webParts)
    if os.path.exists(os.path.join(webPath, "webThreads.py")):
        if os.path.exists(os.path.join(webPath, "webThreads.pyo")):
            if (int(os.path.getmtime(os.path.join(webPath, "webThreads.pyo"))) < 
                int(os.path.getmtime(os.path.join(webPath, "webThreads.py")))):
                reload(webThreads)
        else:
            reload(webThreads)
예제 #9
0
import os
from Plugins.Extensions.WebInterface.WebChilds.Toplevel import addExternalChild
from Tools.Directories import resolveFilename, SCOPE_PLUGINS

from webSite import StartPage, redirectionPage, hostsPage, useHostPage, downloaderPage, settingsPage, logsPage, searchPage
from twisted.web import static

from Plugins.Extensions.IPTVPlayer.tools.iptvtools import GetPluginDir
import settings

IPTVwebRoot = static.File(GetPluginDir(
    'Web/'))  #webRoot = pluginDir to get access to icons and logos
IPTVwebRoot.putChild("icons", static.File(GetPluginDir('icons/')))
IPTVwebRoot.putChild("", StartPage())
IPTVwebRoot.putChild("hosts", hostsPage())
IPTVwebRoot.putChild("usehost", useHostPage())
IPTVwebRoot.putChild("downloader", downloaderPage())
IPTVwebRoot.putChild("settings", settingsPage())
IPTVwebRoot.putChild("logs", logsPage())
IPTVwebRoot.putChild("search", searchPage())


def checkForFC():
    ret = False
    if os.path.exists(
            resolveFilename(SCOPE_PLUGINS,
                            'Extensions/OpenWebif/controllers/base.pyo')):
        myfileName = resolveFilename(
            SCOPE_PLUGINS, 'Extensions/OpenWebif/controllers/base.pyo')
    elif os.path.exists(
            resolveFilename(SCOPE_PLUGINS,
예제 #10
0
 def GET_PWGET_PATH():
     return GetPluginDir('iptvdm/pwget.py')
예제 #11
0
config.plugins.iptvplayer.skin = ConfigSelection(default = "Default", choices = GetSkinsList())

#Pin code
from iptvpin import IPTVPinWidget
config.plugins.iptvplayer.fakePin = ConfigSelection(default = "fake", choices = [("fake", "****")])
config.plugins.iptvplayer.pin = ConfigText(default = "0000", fixed_size = False)
config.plugins.iptvplayer.configProtectedByPin = ConfigYesNo(default = False)
config.plugins.iptvplayer.pluginProtectedByPin = ConfigYesNo(default = False)

#PROXY
config.plugins.iptvplayer.proxyurl = ConfigText(default = "http://PROXY_IP:PORT", fixed_size = False)
config.plugins.iptvplayer.german_proxyurl = ConfigText(default = "http://PROXY_IP:PORT", fixed_size = False)


# Update
if os_path.exists(GetPluginDir('iptvupdate/GOScontrol')):
    config.plugins.iptvplayer.AktualizacjaWmenu = ConfigYesNo(default = False)
    config.plugins.iptvplayer.autoCheckForUpdate = ConfigYesNo(default = False)
    config.plugins.iptvplayer.GOScontrol = NoSave(ConfigYesNo(default = True))
else:
    config.plugins.iptvplayer.AktualizacjaWmenu = ConfigYesNo(default = False)
    config.plugins.iptvplayer.autoCheckForUpdate = ConfigYesNo(default = True)
    config.plugins.iptvplayer.GOScontrol = NoSave(ConfigYesNo(default = False))
config.plugins.iptvplayer.updateLastCheckedVersion = ConfigText(default = "00.00.00.00", fixed_size = False)
config.plugins.iptvplayer.fakeUpdate               = ConfigSelection(default = "fake", choices = [("fake", "  ")])
config.plugins.iptvplayer.downgradePossible        = ConfigYesNo(default = False)
config.plugins.iptvplayer.possibleUpdateType       = ConfigSelection(default = "precompiled", choices = [("sourcecode", _("with source code")),("precompiled", _("precompiled")), ("all", _("all types"))]) 

# Hosts lists
config.plugins.iptvplayer.fakeHostsList = ConfigSelection(default = "fake", choices = [("fake", "  ")])
# hidden options
예제 #12
0
파일: pierwszatv.py 프로젝트: trunca/video
 def getVideoLink(self, cItem):
     printDBG("TelewizjadaNetApi.getVideoLink")
     url = cItem['url']
     sourceId = str(url.meta['id'])
     
     mainCon = {'url':self.mainConnectData.get('connect_to_live_url', ''), 'token':self.mainConnectData.get('connect_to_live_token', '')}
     
     sts, data = self.cm.getPage(cItem['url'], self.http_params)
     if not sts: return []
     
     params = dict(self.http_params)
     params['header'] = dict(params['header'])
     params['header']['Referer'] = cItem['url']
     params['header']['Origin']  = self.MAIN_URL[:-1]
     
     liveCon = {}
     url = self.mainConnectData.get('api_path', '') + '/live?wt=' + self.mainConnectData.get('wt', '')
     sts, data = self.cm.getPage(url, self.http_params2)
     if not sts: return []
     try:
         liveCon = byteify(json.loads(data))
     except Exception:
         printExc()
         return []
     
     url = self.mainConnectData.get('api_path', '') + "/play?id=%swatchToken=%s" % (sourceId, self.mainConnectData.get('wt', ''))
     sts, data = self.cm.getPage(url, self.http_params2)
     if not sts: return []
     
     try:
         def to_byte_array(inArray):
             import struct
             outArray = []
             for item in inArray:
                 outArray.append(struct.pack('>l', item))
             return ''.join(outArray)
         
         data = byteify(json.loads(data))
         ciphertext = to_byte_array(data['window']['encServers']['ciphertext']['words'])
         iv = to_byte_array(data['window']['encServers']['iv']['words'])
         key = to_byte_array(data['window']['encServers']['key']['words'])
         salt = to_byte_array(data['window']['encServers']['salt']['words'])
         
         tmp = self.cryptoJS_AES_decrypt(ciphertext, 'number-one', salt)
         printDBG(tmp)
         tmp = byteify(json.loads(tmp))
     
     except Exception:
         printExc()
         return []
     
     urlsTab = []
     try:
         if isinstance(tmp, list):
             tmp = tmp[0]
         
         if isinstance(tmp, dict):
             baseUrl1     = liveCon['url']
             streamToken1 = liveCon['token']
             baseUrl2     = tmp['server']
             streamToken2 = tmp['token']
             
             serverId = str(tmp['id'])
             
             printDBG("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
             printDBG(tmp)
             printDBG("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
             
             #def _getSocketIoUrl1(baseUrl, params):
             #    t1 = self.getTimestamp(time()*1000)
             
             t1 = self.getTimestamp(time()*1000)
             url = baseUrl1 + '/socket.io/?EIO=3&transport=polling&t=' + t1
             sts, data = self.cm.getPage(url, self.http_params2)
             if sts:
                 baseParams1 = data[data.find('{'):]
                 baseParams1 = byteify(json.loads(baseParams1))
                 printDBG("=========================================================")
                 printDBG([data])
             else:
                 baseParams1 = {'sid':''}
             printDBG(baseParams1)
             printDBG("=========================================================")
             
             t2 = self.getTimestamp(time()*1000)
             url = baseUrl2.replace(":8000",":8004") + '/socket.io/?EIO=3&transport=polling&t=' + t2
             sts, data = self.cm.getPage(url, self.http_params3)
             baseParams2 = data[data.find('{'):]
             baseParams2 = byteify(json.loads(baseParams2))
             printDBG("=========================================================")
             printDBG([data])
             printDBG(baseParams2)
             printDBG("=========================================================")
             
             #=====================
             t1 = self.getTimestamp(time()*1000)
             url = baseUrl1 + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t1, baseParams1['sid'])
             sts, data = self.cm.getPage(url, self.http_params2)
             if sts:
                 printDBG("=========================================================")
                 printDBG(data.split('\x00\x02\xff'))
                 printDBG("=========================================================")
             
             t2 = self.getTimestamp(time()*1000)
             url = baseUrl2.replace(":8000",":8004") + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t2, baseParams2['sid'])
             sts, data = self.cm.getPage(url, self.http_params3)
             printDBG("=========================================================")
             printDBG(data.split('\x00\x02\xff'))
             printDBG("=========================================================")
             
             #=====================
             #raw_post_data
             t1 = self.getTimestamp(time()*1000)
             url = baseUrl1 + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t1, baseParams1['sid'])
             self.http_params2['raw_post_data'] = True
             sts, data = self.cm.getPage(url, self.http_params2, '92:42["authorize",{"token":"%s"}]' % streamToken1)
             printDBG("=========================================================")
             printDBG([data])
             printDBG("=========================================================")
                 
             if 0:
                 t1 = self.getTimestamp(time()*1000)
                 url = baseUrl1 + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t1, baseParams1['sid'])
                 sts, data = self.cm.getPage(url, self.http_params2)
                 printDBG("=========================================================")
                 printDBG([data])
                 printDBG("=========================================================")
             
             #+++++
             t2 = self.getTimestamp(time()*1000)
             url = baseUrl2.replace(":8000",":8004") + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t2, baseParams2['sid'])
             self.http_params3['raw_post_data'] = True
             sts, data = self.cm.getPage(url, self.http_params3, '82:42["authorize","%s"]' % streamToken2)
             printDBG("=========================================================")
             printDBG([data])
             printDBG("=========================================================")
             
             t2 = self.getTimestamp(time()*1000)
             url = baseUrl2.replace(":8000",":8004") + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t2, baseParams2['sid'])
             sts, data = self.cm.getPage(url, self.http_params3)
             data = byteify( json.loads(data[data.find('42')+2:]) ) 
             stoken = data[1]['stoken']
             printDBG("=========================================================")
             printDBG([data])
             printDBG("=========================================================")
             
             n = sha256(serverId + '_' + sourceId + '_' + stoken + '_rabbit_foot').hexdigest()
             url = self.mainConnectData['api_path'] + '/request-stream' + "?token=" + streamToken2 + "&server=" + serverId + "&source=" + sourceId + "&cs=" + n
             sts, data = self.cm.getPage(url, self.http_params)
             data = byteify( json.loads(data) ) 
             streamId = str(data['id'])
             
             if 0:
                 t2 = self.getTimestamp(time()*1000)
                 url = baseUrl2.replace(":8000",":8004") + '/socket.io/?EIO=3&transport=polling&t={0}&sid={1}'.format(t2, baseParams2['sid'])
                 self.http_params3['raw_post_data'] = True
                 sts, data = self.cm.getPage(url, self.http_params3, '84:42["subscribe","%s"]' % streamId)
             
             wsUrl2 = baseUrl2.replace(":8000",":8004").replace('http://', 'ws://') + '/socket.io/?EIO=3&transport=websocket&sid={0}'.format(baseParams2['sid'])
             wsUrl1 = baseUrl1.replace('http://', 'ws://') + '/socket.io/?EIO=3&transport=websocket&sid={0}'.format(baseParams1['sid'])
             
             libsPath = GetPluginDir('libs/')
             
             pyCmd = GetPyScriptCmd('pierwszatv') + ' "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" ' % (self.http_params['header']['User-Agent'], baseUrl2, wsUrl2, wsUrl1, stoken, streamId, libsPath, baseParams2['sid'])
             vidUrl = strwithmeta("ext://url/" + cItem['url'], {'iptv_proto':'em3u8', 'iptv_refresh_cmd':pyCmd, 'Referer':cItem['url'], 'User-Agent':self.http_params['header']['User-Agent']})
             
             printDBG("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
             printDBG(pyCmd)
             printDBG("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
             #return []
             return [{'name':'pierwsza_hls', 'url':vidUrl}]
         
     except Exception:
         printExc()
         return []
     
     return urlsTab