Changeset 42186 for titan/mediathek


Ignore:
Timestamp:
Apr 18, 2018, 12:15:21 AM (20 months ago)
Author:
obi
Message:

fix openload

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/mediathek/localhoster/openload.py

    r41359 r42186  
    206206        return p
    207207
     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
    208269    def getAllItemsBeetwenMarkers(self, data, marker1, marker2, withMarkers=True, caseSensitive=True):
    209270        itemsTab = []
     
    426487                subTracks.append({'title':subLabel + '_' + subLang, 'url':subUrl, 'lang':subLang, 'format':'srt'})
    427488       
    428 #        print "33333333333333333333333"
    429  
    430         preDataTab = self.getAllItemsBeetwenMarkers(data, 'a="0%', '{}', withMarkers=True, caseSensitive=False)
    431 #        print "preDataTab", preDataTab
    432  
    433         for item in preDataTab:
    434 #            print "item", item
    435             try:
    436                 dat = self.getSearchGroups(item, 'a\s*?=\s*?"([^"]+?)"', ignoreCase=True)[0]
    437 #                print "dat1", dat
    438                 z = self.getSearchGroups(item, '\}\(([0-9]+?)\)', ignoreCase=True)[0]
    439 #                print "z1", z
    440                 z = int(z)
    441 #                print "z2", z
    442                 def checkA(c):
    443                     code = ord(c.group(1))
    444                     if code <= ord('Z'):
    445                         tmp = 90
    446                     else:
    447                         tmp = 122
    448                     c = code + z
    449                     if tmp < c:
    450                         c -= 26
    451                     return chr(c)
    452                    
    453                 dat = urllib.unquote( re.sub('([a-zA-Z])', checkA, dat) )
    454 #                print "dat2", dat
    455                 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", dat
    460                 data += dat
    461             except Exception:
    462                  print "preDataTab error"
    463 #                printExc()
    464 
    465 
    466 
    467 
    468 
    469489        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)
    529493            for e in encTab:
    530494                if len(e) > 40:
Note: See TracChangeset for help on using the changeset viewer.