最近在github中看到一個python的PPTV的介面,有人能幫忙把此介面當中的演算法轉換成PHP嗎?

來源:互聯網
上載者:User
#!/usr/bin/env python__all__ = ['pptv_download', 'pptv_download_by_id']from ..common import *import reimport timeimport urllibfrom random import randomdef constructKey(arg):    def str2hex(s):        r=""        for i in s[:8]:            t=hex(ord(i))[2:]            if len(t)==1:                t="0"+t            r+=t        for i in range(16):            r+=hex(int(15*random()))[2:]        return r    #ABANDONED  Because SERVER_KEY is static    def getkey(s):        #returns 1896220160        l2=[i for i in s]        l4=0        l3=0        while l4>> in as3        if k>=0:            return k>>b        elif k<0:            return (2**32+k)>>b        pass    def lot(k,b):        return (k<([^<>]+)', xml)    k = r1(r']+>([^<>]+)', xml)    rid = r1(r'rid="([^"]+)"', xml)    title = r1(r'nm="([^"]+)"', xml)    st=r1(r'([^<>]+)',xml)[:-4]    st=time.mktime(time.strptime(st))*1000-60*1000-time.time()*1000    st+=time.time()*1000    st=st/1000    key=constructKey(st)    pieces = re.findall(']+fs="(\d+)"', xml)    numbers, fs = zip(*pieces)    urls=["http://{}/{}/{}?key={}&fpp.ver=1.3.0.4&k={}&type=web.fpp".format(host,i,rid,key,k) for i in range(max(map(int,numbers))+1)]    total_size = sum(map(int, fs))    assert rid.endswith('.mp4')    print_info(site_info, title, 'mp4', total_size)    if not info_only:        try:            download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge)        except urllib.error.HTTPError:            #for key expired            pptv_download_by_id(id, output_dir = output_dir, merge = merge, info_only = info_only)def pptv_download(url, output_dir = '.', merge = True, info_only = False, **kwargs):    assert re.match(r'http://v.pptv.com/show/(\w+)\.html$', url)    html = get_html(url)    id = r1(r'webcfg\s*=\s*{"id":\s*(\d+)', html)    assert id    pptv_download_by_id(id, output_dir = output_dir, merge = merge, info_only = info_only)

回複內容:

#!/usr/bin/env python__all__ = ['pptv_download', 'pptv_download_by_id']from ..common import *import reimport timeimport urllibfrom random import randomdef constructKey(arg):    def str2hex(s):        r=""        for i in s[:8]:            t=hex(ord(i))[2:]            if len(t)==1:                t="0"+t            r+=t        for i in range(16):            r+=hex(int(15*random()))[2:]        return r    #ABANDONED  Because SERVER_KEY is static    def getkey(s):        #returns 1896220160        l2=[i for i in s]        l4=0        l3=0        while l4>> in as3        if k>=0:            return k>>b        elif k<0:            return (2**32+k)>>b        pass    def lot(k,b):        return (k<([^<>]+)', xml)    k = r1(r']+>([^<>]+)', xml)    rid = r1(r'rid="([^"]+)"', xml)    title = r1(r'nm="([^"]+)"', xml)    st=r1(r'([^<>]+)',xml)[:-4]    st=time.mktime(time.strptime(st))*1000-60*1000-time.time()*1000    st+=time.time()*1000    st=st/1000    key=constructKey(st)    pieces = re.findall(']+fs="(\d+)"', xml)    numbers, fs = zip(*pieces)    urls=["http://{}/{}/{}?key={}&fpp.ver=1.3.0.4&k={}&type=web.fpp".format(host,i,rid,key,k) for i in range(max(map(int,numbers))+1)]    total_size = sum(map(int, fs))    assert rid.endswith('.mp4')    print_info(site_info, title, 'mp4', total_size)    if not info_only:        try:            download_urls(urls, title, 'mp4', total_size, output_dir = output_dir, merge = merge)        except urllib.error.HTTPError:            #for key expired            pptv_download_by_id(id, output_dir = output_dir, merge = merge, info_only = info_only)def pptv_download(url, output_dir = '.', merge = True, info_only = False, **kwargs):    assert re.match(r'http://v.pptv.com/show/(\w+)\.html$', url)    html = get_html(url)    id = r1(r'webcfg\s*=\s*{"id":\s*(\d+)', html)    assert id    pptv_download_by_id(id, output_dir = output_dir, merge = merge, info_only = info_only)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.