Exemplo n.º 1
0
def handle_aid(aid, sema_a, sema_o, daemon_thd):
    with sema_a:
        new_url = root_url+'video/av'+aid
        res = get_url(new_url, cookies=cookies)
        filter_url(bs(res.content, 'html.parser'))
        fetch_related(aid)
        av_res = get_oid(aid)
        av_json = av_res.json()
        if av_json['code'] != 0:
            print('message:', av_json['message'])
            return
        if av_json['data'].get('pages') is None:
            print('av', aid, 'no page')
            return
        oid_thds = list()
        for obj in av_json['data']['pages']:
            oid = obj['cid']
            sema_o.acquire()
            thd = threading.Thread(target=get_dm, args=(str(oid),sema_o))
            thd.start()
            oid_thds.append(thd)
        else:
            for subthd in threading.enumerate():
                if subthd not in (threading.main_thread(),
                    threading.current_thread(), daemon_thd, *oid_thds):
                    subthd.join()
Exemplo n.º 2
0
def get_oid(aid):
    aid = str(aid)
    payload = {'aid': aid}
    res = get_url(oid_url, params=payload)
    with open(os.path.join(oid_path, aid), 'wb') as fd:
        fd.write(res.content)
    return res
Exemplo n.º 3
0
def fetch_related(aid):
    related_url = 'https://api.bilibili.com/x/web-interface/archive/related'
    payload = {'aid': str(aid)}
    res = get_url(related_url, params=payload)
    js_res = res.json()
    for ele in js_res['data']:
        new_aid = str(ele['aid'])
        if new_aid not in to_scan_list+os.listdir(oid_path):
            to_scan_list.append(str(ele['aid']))
Exemplo n.º 4
0
def get_dm(oid, sema=None):
    oid = str(oid)
    payload = {'oid': oid}
    res = get_url(dm_url, params=payload)
    with open(os.path.join(dm_path, oid), 'wb') as fd:
        fd.write(res.content)
    if sema:
        sema.release()
    return res
Exemplo n.º 5
0
def download_aid(aid):
    new_url = root_url+'video/av'+aid
    res = get_url(new_url, cookies=cookies)
    filter_url(bs(res.content, 'html.parser'))
    av_res = get_oid(aid)
    av_json = av_res.json()
    if av_json['code'] != 0:
        print('message:', av_json['message'])
        return
    if av_json['data'].get('pages') is None:
        print('av', aid, 'no page')
        return
    for obj in av_json['data']['pages']:
        oid = obj['cid']
        get_dm(str(oid))
    else:
        print(aid, 'done')
Exemplo n.º 6
0
to_scan_list = list()

cookies = {
    'dssid': '86ed8fc8a0c4e4cb6', 'fts': '1528953020',
    'dsess': 'BAh7CkkiD3Nlc3Npb25faWQGOgZFVEkiFThmYzhhMGM0ZTRjYjYwNDgGOwBG%0ASSIJY3NyZgY7AEZJIiU0MDQ2Mjc4YjVhOGJlNzE1MmIyY2FhMTA0ZjNkNTA2%0AZQY7AEZJIg10cmFja2luZwY7AEZ7B0kiFEhUVFBfVVNFUl9BR0VOVAY7AFRJ%0AIi04NmE2NDJiNWVjMWVjZWRlNjYyYWRmNDc2YTdkNGVkZjBkOGFkNTJmBjsA%0ARkkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsAVEkiLWZiZmMxYjhmZTg0YmFi%0ANjA2ZTA5ODExYTQ1YjlmZGI2MWM4ZDE1ZGIGOwBGSSIKY3RpbWUGOwBGbCsH%0AvvghW0kiCGNpcAY7AEYiEzE4MC4xMTAuNzAuMjI4%0A--1ca162c02bfb95e7938bc209cd979fa2fe12164c',
    'buvid3': '701F4484-F2A1-4B51-BC0B-98B3855544E432080infoc',
    'rpdid': 'kwimoislqqdosiqlskwxw', 'LIVE_PLAYER_TYPE': '1',
    'LIVE_BUVID': '1e563880af9694e05154b2cd845fc275',
    'LIVE_BUVID__ckMd5': 'c7c6c83775f08cae', 'im_notify_type_2925953': '0',
    'sid': 'hw5btqjb', 'CURRENT_QUALITY': '80', 'stardustvideo': '1',
    'CURRENT_FNVAL': '16',
    'UM_distinctid': '16919985ccf748-0b5dec4aacd535-24414032-100200-16919985cd047a',
    'bp_t_offset_2925953': '245165151394976108',
    '_dfcaptcha': '19ae4569cecab98ec0c5183b9213718c'
}

if __name__ == '__main__':
    to_scan_list = list()
    aid = '13690129'
    res = get_url(root_url+'video/av'+aid, cookies=cookies)
    filter_url(bs(res.content, 'html.parser'))
    fetch_related(aid)
    try:
        main()
    except Exception:
        raise
    finally:
        with open(settings.TO_SCAN, 'w') as fd:
            json.dump(to_scan_list, fd)