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
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
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
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)
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
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()
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)
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,
def GET_PWGET_PATH(): return GetPluginDir('iptvdm/pwget.py')
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
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