Changeset 42186
- Timestamp:
- 04/18/18 00:15:21 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
titan/mediathek/localhoster/openload.py
r41359 r42186 206 206 return p 207 207 208 def getAllItemsBeetwenNodes(self, data, node1, node2, withNodes=True, numNodes=-1, caseSensitive=True): 209 if len(node1) < 2 or len(node2) < 2: 210 return [] 211 itemsTab = [] 212 n1S = node1[0] 213 n1E = node1[1] 214 if len(node1) > 2: n1P = node1[2] 215 else: n1P = None 216 n2S = node2[0] 217 n2E = node2[1] 218 if len(node2) > 2: n2P = node2[2] 219 else: n2P = None 220 lastIdx = 0 221 search = 1 222 223 if caseSensitive: 224 sData = data 225 else: 226 sData = data.lower() 227 n1S = n1S.lower() 228 n1E = n1E.lower() 229 if n1P != None: n1P = n1P.lower() 230 n2S = n2S.lower() 231 n2E = n2E.lower() 232 if n2P != None: n2P = n2P.lower() 233 234 while True: 235 if search == 1: 236 # node 1 - start 237 idx1 = sData.find(n1S, lastIdx) 238 if -1 == idx1: return itemsTab 239 lastIdx = idx1 + len(n1S) 240 idx2 = sData.find(n1E, lastIdx) 241 if -1 == idx2: return itemsTab 242 lastIdx = idx2 + len(n1E) 243 if n1P != None and sData.find(n1P, idx1 + len(n1S), idx2) == -1: 244 continue 245 search = 2 246 else: 247 # node 2 - end 248 tIdx1 = sData.find(n2S, lastIdx) 249 if -1 == tIdx1: return itemsTab 250 lastIdx = tIdx1 + len(n2S) 251 tIdx2 = sData.find(n2E, lastIdx) 252 if -1 == tIdx2: return itemsTab 253 lastIdx = tIdx2 + len(n2E) 254 255 if n2P != None and sData.find(n2P, tIdx1 + len(n2S), tIdx2) == -1: 256 continue 257 258 if withNodes: 259 idx2 = tIdx2 + len(n2E) 260 else: 261 idx1 = idx2 + len(n1E) 262 idx2 = tIdx1 263 search = 1 264 itemsTab.append(data[idx1:idx2]) 265 if numNodes > 0 and len(itemsTab) == numNodes: 266 break 267 return itemsTab 268 208 269 def getAllItemsBeetwenMarkers(self, data, marker1, marker2, withMarkers=True, caseSensitive=True): 209 270 itemsTab = [] … … 426 487 subTracks.append({'title':subLabel + '_' + subLang, 'url':subUrl, 'lang':subLang, 'format':'srt'}) 427 488 428 # print "33333333333333333333333"429 430 preDataTab = self.getAllItemsBeetwenMarkers(data, 'a="0%', '{}', withMarkers=True, caseSensitive=False)431 # print "preDataTab", preDataTab432 433 for item in preDataTab:434 # print "item", item435 try:436 dat = self.getSearchGroups(item, 'a\s*?=\s*?"([^"]+?)"', ignoreCase=True)[0]437 # print "dat1", dat438 z = self.getSearchGroups(item, '\}\(([0-9]+?)\)', ignoreCase=True)[0]439 # print "z1", z440 z = int(z)441 # print "z2", z442 def checkA(c):443 code = ord(c.group(1))444 if code <= ord('Z'):445 tmp = 90446 else:447 tmp = 122448 c = code + z449 if tmp < c:450 c -= 26451 return chr(c)452 453 dat = urllib.unquote( re.sub('([a-zA-Z])', checkA, dat) )454 # print "dat2", dat455 dat = self.decryptPlayerParams(dat, 4, 4, ['j', '_', '__', '___'], 0, {})456 # pageData = unpackJS(data[idx1:-3], VIDUPME_decryptPlayerParams)457 # dat = jsunpack.unpack(dat)458 459 # print "dat3", dat460 data += dat461 except Exception:462 print "preDataTab error"463 # printExc()464 465 466 467 468 469 489 videoUrl = '' 470 tmp = '' 471 472 encodedData = self.getAllItemsBeetwenMarkers(data, '゚ω゚', '</script>', withMarkers=False, caseSensitive=False) 473 # encodedData = re.sub('゚ω゚', '</script>', data) 474 # encodedData = re.search(r'゚ω゚\.*?</script>', data, re.DOTALL) 475 # encodedData = re.search('''゚ω゚\(\s*)</script>''', data).group(1) 476 477 # print "encodedData1", encodedData 478 479 for item in encodedData: 480 # print "item1", item 481 tmpEncodedData = item.split('┻━┻') 482 # print "tmpEncodedData1", tmpEncodedData 483 for tmpItem in tmpEncodedData: 484 # print "tmpItem", tmpItem 485 try: 486 tmp += self.decodeOpenLoad(tmpItem) 487 # print "tmpItem1", tmpItem 488 except Exception: 489 skip = 1 490 # printExc() 491 # print "encodedData1 error" 492 493 tmp2 = '' 494 encodedData = self.getAllItemsBeetwenMarkers(data, "j=~[];", "())();", withMarkers=True, caseSensitive=False) 495 # print "encodedData2", encodedData 496 for item in encodedData: 497 # print "item2", item 498 try: 499 if '' != item: 500 tmp2 += JJDecoder(item).decode() 501 # print "tmp2", tmp2 502 except Exception: 503 skip = 1 504 # printExc() 505 # print "encodedData2 error" 506 507 508 # printDBG('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') 509 # printDBG(tmp) 510 # printDBG('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB') 511 # printDBG(tmp2) 512 # printDBG('CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC') 513 # print 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 514 # print "tmp1:", tmp 515 # print 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB' 516 # print "tmp2:", tmp2 517 # print 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC' 518 519 ########################################################## 520 # new algo 2016-12-04 ;) 521 ########################################################## 522 varName = self.getSearchGroups(tmp, '''window.r=['"]([^'^"]+?)['"]''', ignoreCase=True)[0] 523 encTab = re.compile('''<span[^>]+?id="%s[^"]*?"[^>]*?>([^<]+?)<\/span>''' % varName).findall(data) 524 # printDBG(">>>>>>>>>>>> varName[%s] encTab[%s]" % (varName, encTab) ) 525 # print ">>>>>>>>>>>> varName[%s] encTab[%s]" % (varName, encTab) 526 527 528 if varName == '': 490 tmp = self.getAllItemsBeetwenNodes(data, ('<div', '>', 'display:none'), ('</div', '>')) 491 for item in tmp: 492 encTab = re.compile('''<[^>]+?id="[^"]*?"[^>]*?>([^<]+?)<''').findall(data) 529 493 for e in encTab: 530 494 if len(e) > 40:
Note: See TracChangeset
for help on using the changeset viewer.