Ejemplo n.º 1
0
 def draw_lottery(self):
     for i in range(60, 80):
         response = bilibili().get_lotterylist(i)
         res = response.json()
         if res['code'] == 0:
             temp = response.json()['data']['title']
             if "测试" in temp:
                 print("检测到疑似钓鱼类测试抽奖,默认不参与,请自行判断抽奖可参与性")
                 # print(url)
             else:
                 check = len(response.json()['data']['typeB'])
                 for g in range(0, check):
                     join_end_time = response.json(
                     )['data']['typeB'][g]['join_end_time']
                     join_start_time = response.json(
                     )['data']['typeB'][g]['join_start_time']
                     ts = CurrentTime()
                     if int(join_end_time) > int(ts) > int(join_start_time):
                         response1 = bilibili().get_gift_of_lottery(i, g)
                         print(
                             "当前时间:",
                             time.strftime('%Y-%m-%d %H:%M:%S',
                                           time.localtime(time.time())))
                         print("参与实物抽奖回显:", response1.json())
                     else:
                         pass
         else:
             break
Ejemplo n.º 2
0
 async def login_new(self):
     if bilibili().dic_bilibili['saved-session']['cookie']:
         Printer().printer(f"复用cookie", "Info", "green")
         bilibili().load_session(bilibili().dic_bilibili['saved-session'])
         return True
     else:
         return self.login()
Ejemplo n.º 3
0
 def login(self):
     username = str(bilibili().dic_bilibili['account']['username'])
     password = str(bilibili().dic_bilibili['account']['password'])
     if username != "":
         response = bilibili().request_getkey()
         value = response.json()['data']
         key = value['key']
         Hash = str(value['hash'])
         username, password = bilibili().calc_name_passw(key, Hash, username, password)
         response = self.normal_login(username, password)
         while response.json()['code'] == -105:
             response = self.login_with_captcha(username, password)
         try:
             access_key = response.json()['data']['token_info']['access_token']
             cookie = (response.json()['data']['cookie_info']['cookies'])
             cookie_format = ""
             for i in range(0, len(cookie)):
                 cookie_format = cookie_format + cookie[i]['name'] + "=" + cookie[i]['value'] + ";"
             bilibili().dic_bilibili['csrf'] = cookie[0]['value']
             bilibili().dic_bilibili['access_key'] = access_key
             bilibili().dic_bilibili['cookie'] = cookie_format
             bilibili().dic_bilibili['uid'] = cookie[1]['value']
             bilibili().dic_bilibili['pcheaders']['cookie'] = cookie_format
             bilibili().dic_bilibili['appheaders']['cookie'] = cookie_format
             dic_saved_session = {
                 'csrf': cookie[0]['value'],
                 'access_key': access_key,
                 'cookie': cookie_format,
                 'uid': cookie[1]['value']
             }
             configloader.write2bilibili(dic_saved_session)
             Printer().printlist_append(['join_lottery', '', 'user', "登录成功"], True)
         except:
             Printer().printlist_append(['join_lottery', '', 'user', "登录失败,错误信息为:", response.json()['message']],
                                        True)
Ejemplo n.º 4
0
Archivo: Tasks.py Proyecto: xQFxiaoyi/-
 def link_sign(self):
     response = bilibili().get_grouplist()
     check = len(response.json()['data']['list'])
     group_id_list = []
     owner_uid_list = []
     for i in range(0, check):
         group_id = response.json()['data']['list'][i]['group_id']
         owner_uid = response.json()['data']['list'][i]['owner_uid']
         group_id_list.append(group_id)
         owner_uid_list.append(owner_uid)
     for (i1, i2) in zip(group_id_list, owner_uid_list):
         response = bilibili().assign_group(i1, i2)
         if response.json()['code'] == 0:
             if (response.json()['data']['status']) == 1:
                 Printer().printlist_append(
                     ['join_lottery', '', 'user',
                      "# 应援团 %s 已应援过" % (i1)])
             if (response.json()['data']['status']) == 0:
                 Printer().printlist_append([
                     'join_lottery', '', 'user',
                     "# 应援团 %s 应援成功,获得 %s 点亲密度" %
                     (i1, response.json()['data']['add_num'])
                 ])
         else:
             Printer().printlist_append(
                 ['join_lottery', '', 'user',
                  "# 应援团 %s 应援失败" % (i1)])
Ejemplo n.º 5
0
 def loginup(self, username, password):
     bilibili().dic_bilibili['account']['username'] = str(username)
     bilibili().dic_bilibili['account']['password'] = str(password)
     dic_saved_session = {
         'username': str(username),
         'password': str(password)
     }
     configloader.write2bilibililogin(dic_saved_session)
     return self.login()
Ejemplo n.º 6
0
 def sliver2coin(self):
     if self.dic_user['coin']['on/off'] == '1':
         response = bilibili().silver2coin_web()
         response1 = bilibili().silver2coin_app()
         Printer().printlist_append(
             ['join_lottery', '', 'user', "# ",
              response.json()['msg']])
         Printer().printlist_append(
             ['join_lottery', '', 'user', "# ",
              response1.json()['msg']])
Ejemplo n.º 7
0
 def normal_login(self, username, password):
    
     url = "https://passport.bilibili.com/api/v2/oauth2/login"
     temp_params = 'appkey=' + bilibili().dic_bilibili['appkey'] + '&password='******'&username='******'appkey'] + "&password="******"&username="******"&sign=" + sign
     response = requests.post(url, data=payload, headers=headers)
     return response
Ejemplo n.º 8
0
    async def query(self):

        while 1:
            # print('lotteryresult test')
            bilibili().clean_activity()

            bilibili().clean_TV()

            # print('自动延迟参数', sleeptime1, sleeptime2)
            await asyncio.sleep(30)
            '''
Ejemplo n.º 9
0
 async def login_new(self):
     response = await bilibili().check_activity_exist()
     json_res = await response.json()
     if json_res['code'] == 0:
         activity_name = (list((json_res['data']['eventList'][0]['lottery']['config']).keys()))[0]
         bilibili().dic_bilibili['activity_name'] = activity_name
     else:
         Printer().printlist_append(['join_lottery', '', 'user', "自动查询没有查询到新活动"], True)
     if bilibili().dic_bilibili['saved-session']['cookie']:
         Printer().printlist_append(['join_lottery', '', 'user', "复用cookie"], True)
         bilibili().load_session(bilibili().dic_bilibili['saved-session'])
     else:
         return self.login()
Ejemplo n.º 10
0
 def send_gift(self):
     if self.dic_user['gift']['on/off'] == '1':
         try:
             argvs = bilibili().get_bag_list()
             for i in range(0, len(argvs)):
                 giftID = argvs[i][0]
                 giftNum = argvs[i][1]
                 bagID = argvs[i][2]
                 roomID = self.dic_user['gift']['send_to_room']
                 bilibili().send_bag_gift_web(roomID, giftID, giftNum,
                                              bagID)
         except:
             print("# 没有将要过期的礼物~")
Ejemplo n.º 11
0
def send_gift_web(roomid, giftid, giftnum, bagid):
    response = bilibili().request_check_room(roomid)
    ruid = response.json()['data']['uid']
    biz_id = response.json()['data']['room_id']
    response1 = bilibili().request_send_gift_web(giftid, giftnum, bagid, ruid,
                                                 biz_id)
    json_response1 = response1.json()
    if json_response1['code'] == 0:
        # print(json_response1['data'])
        print(
            "# 送出礼物:", json_response1['data']['gift_name'] + "X" +
            str(json_response1['data']['gift_num']))
    else:
        print("# 错误", json_response1['msg'])
Ejemplo n.º 12
0
async def handle_1_TV_raffle(type, raffleid, time_wait, time_limit, num,
                             real_roomid):
    Statistics().append_to_TVlist(raffleid, time_limit)
    if Schedule().scheduled_sleep:
        Printer().printer(f"定时休眠,跳过房间 {real_roomid} 广播道具抽奖 {raffleid}", "Info",
                          "green")
        return
    if bilibili().black_status:
        Printer().printer(f"黑屋休眠,跳过房间 {real_roomid} 广播道具抽奖 {raffleid}", "Info",
                          "green")
        return
    await asyncio.sleep(
        min(
            max(0, time_wait) + random.uniform(0, min(num, 30)),
            time_limit - 1))
    response2 = await bilibili().get_gift_of_TV(type, real_roomid, raffleid)
    # Printer().printer(f"参与了房间 {real_roomid} 的广播抽奖 {raffleid}", "Lottery", "cyan")
    json_response2 = await response2.json(content_type=None)
    # Printer().printer(f"参与房间 {real_roomid} 广播道具抽奖 {raffleid} 状态: {json_response2['msg']}", "Lottery", "cyan")
    if json_response2['code'] == 0:
        data = json_response2["data"]
        Printer().printer(
            f"房间 {real_roomid} 广播道具抽奖 {raffleid} 结果: {data['award_name']}X{data['award_num']}",
            "Lottery", "cyan")
        Statistics().add_to_result(data['award_name'], int(data['award_num']))
    else:
        # {"code":-403,"data":null,"message":"访问被拒绝","msg":"访问被拒绝"}
        # {'code': 503, 'data': None, 'message': '请求太多了!', 'msg': '请求太多了!'}
        # {'code': -509, 'message': '请求过于频繁,请稍后再试', 'ttl': 1}
        Printer().printer(
            f"房间 {real_roomid} 广播道具抽奖 {raffleid} 结果: {json_response2['message']}",
            "Lottery", "cyan")
        print(json_response2)
Ejemplo n.º 13
0
async def run(account_id: int):
    from Service import User
    import asyncio
    from login import login
    from bilibili import bilibili
    import biliconsole
    from schedule import Schedule
    from aioweb.aioWebsocket import aioWebsocket
    user = User(account_id=account_id)
    dic_user = await user.load_account_conf()
    x = bilibili()
    await x.init()
    from statistics import Statistics
    Statistics()
    biliconsole_task = biliconsole.Biliconsole()
    # login_tasks = login().login_new()
    login_tasks = login().login2()
    await login_tasks
    from comments import load_tasks
    tasks = await load_tasks(user)
    asyncio.create_task(biliconsole_task.run(), name="biliconsole")
    schedule = Schedule()
    print(dic_user)
    if dic_user['regular_sleep']['on']:
        Schedule().scheduled_sleep = True
        asyncio.create_task(schedule.run(
            dic_user['regular_sleep']['schedule']),
                            name="schedule")
    aioWebsocket.tasks = tasks
    asyncio.create_task(aioWebsocket().receive(), name="aiowebsocket")
Ejemplo n.º 14
0
 def auto_send_gift(self):
     if self.dic_user['auto-gift']['on/off'] == "1":
         a = utils.fetch_medal(printer=False)
         temp_dic = bilibili().gift_list()
         temp = utils.fetch_bag_list(printer=False)[1]
         roomid = a[0]
         today_feed = a[1]
         day_limit = a[2]
         left_num = int(day_limit) - int(today_feed)
         calculate = 0
         for i in range(0, len(temp)):
             gift_id = int(temp[i][0])
             gift_num = int(temp[i][1])
             bag_id = int(temp[i][2])
             if (gift_num * (temp_dic[gift_id] / 100) <
                     left_num) and (gift_id != 4 and gift_id != 3):
                 calculate = calculate + temp_dic[gift_id] / 100 * gift_num
                 # tmp = calculate / (temp_dic[gift_id] / 100)
                 tmp2 = temp_dic[gift_id] / 100 * gift_num
                 utils.send_gift_web(roomid, gift_id, gift_num, bag_id)
                 left_num = left_num - tmp2
             elif left_num - temp_dic[gift_id] / 100 >= 0 and (
                     gift_id != 4 and gift_id != 3):
                 tmp = (left_num) / (temp_dic[gift_id] / 100)
                 tmp1 = (temp_dic[gift_id] / 100) * int(tmp)
                 calculate = calculate + tmp1
                 utils.send_gift_web(roomid, gift_id, tmp, bag_id)
                 left_num = left_num - tmp1
         Printer().printlist_append([
             'join_lottery', '', 'user',
             "# 自动送礼共送出亲密度为%s的礼物" % int(calculate)
         ])
Ejemplo n.º 15
0
 def Daily_bag(self):
     response = bilibili().get_dailybag()
     for i in range(0, len(response.json()['data']['bag_list'])):
         Printer().printlist_append([
             'join_lottery', '', 'user', "# 获得-" +
             response.json()['data']['bag_list'][i]['bag_name'] + "-成功"
         ])
Ejemplo n.º 16
0
def fetch_bag_list(verbose=False, bagid=None, printer=True):
    response = bilibili().request_fetch_bag_list()
    temp = []
    gift_list = []
    if printer == True:
        print('[{}] 查询可用礼物'.format(
            time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
    for i in range(len(response.json()['data']['list'])):
        bag_id = (response.json()['data']['list'][i]['bag_id'])
        gift_id = (response.json()['data']['list'][i]['gift_id'])
        gift_num = str(
            (response.json()['data']['list'][i]['gift_num'])).center(4)
        gift_name = response.json()['data']['list'][i]['gift_name']
        expireat = (response.json()['data']['list'][i]['expire_at'])
        left_time = (expireat - int(CurrentTime()))
        left_days = (expireat - int(CurrentTime())) / 86400
        gift_list.append([gift_id, gift_num, bag_id])
        if bagid is not None:
            if bag_id == int(bagid):
                return gift_id
        else:
            if verbose:
                print("# 编号为" + str(bag_id) + '的' + gift_name + 'X' + gift_num,
                      '(在' + str(math.ceil(left_days)) + '天后过期)')
            elif printer == True:
                print("# " + gift_name + 'X' + gift_num,
                      '(在' + str(math.ceil(left_days)) + '天后过期)')

                if 0 < int(left_time) < 43200:  # 剩余时间少于半天时自动送礼
                    temp.append([gift_id, gift_num, bag_id])
    return temp, gift_list
Ejemplo n.º 17
0
    def login_with_captcha(self, username, password):
        headers = {
            'user-agent':
            'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
            'cookie': "sid=hxt5szbb"
        }
        s = requests.session()
        url = "https://passport.snm0516.aisee.tv/api/captcha?token=5598158bcd8511e1"
        res = s.get(url, headers=headers)
        tmp1 = base64.b64encode(res.content)
        for _ in range(login.auto_captcha_times):
            try:
                captcha = bilibili().cnn_captcha(tmp1)
                break
            except Exception:
                Printer().printer("验证码识别服务器连接失败", "Error", "red")
                login.auto_captcha_times -= 1
        else:
            try:
                from PIL import Image
                from io import BytesIO
                img = Image.open(BytesIO(res.content))
                img.show()
                captcha = input('输入验证码\n').strip()
            except ImportError:
                Printer().printer("安装 Pillow 库后重启,以弹出验证码图片", "Error", "red")
                exit()

        temp_params = f"appkey={appkey}&build={build}&captcha={captcha}&channel=master&guid=XYEBAA3E54D502E17BD606F0589A356902FCF&mobi_app={mobi_app}&password={password}&platform={bilibili().dic_bilibili['platform']}&token=5598158bcd8511e1&ts=0&username={username}"
        data = f"{temp_params}&sign={bilibili().calc_sign(temp_params, app_secret)}"
        headers['Content-type'] = "application/x-www-form-urlencoded"
        headers['cookie'] = "sid=hxt5szbb"
        url = "https://passport.snm0516.aisee.tv/api/tv/login"
        response = s.post(url, data=data, headers=headers)
        return response
Ejemplo n.º 18
0
 def reconnect(self, roomid):
     self.tag_reconnect = True
     if self.danmuji is not None:
         self.danmuji.close_connection()
     bilibili().dic_bilibili['roomid'] = roomid
     print('已经切换roomid')
     self.tag_reconnect = False
Ejemplo n.º 19
0
 def __new__(cls, *args, **kw):
     if not cls.instance:
         cls.instance = super(OnlineNet, cls).__new__(cls, *args, **kw)
         cls.instance.bili = bilibili()
         cls.instance.var_is_online = True
         cls.instance.list_delay = []
     return cls.instance
Ejemplo n.º 20
0
def fetch_user_info():
    response = bilibili().request_fetch_user_info()
    print('[{}] 查询用户信息'.format(
        time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))))
    json_response = response.json()
    if (json_response['code'] == 0):
        data = json_response['data']
        uname = data['userInfo']['uname']
        achieve = data['achieves']
        user_level = data['userCoinIfo']['user_level']
        silver = data['userCoinIfo']['silver']
        gold = data['userCoinIfo']['gold']
        user_next_level = data['userCoinIfo']['user_next_level']
        user_intimacy = data['userCoinIfo']['user_intimacy']
        user_next_intimacy = data['userCoinIfo']['user_next_intimacy']
        user_level_rank = data['userCoinIfo']['user_level_rank']
        billCoin = data['userCoinIfo']['coins']
        print('# 用户名', uname)
        print('# 银瓜子', silver)
        print('# 金瓜子', gold)
        print('# 硬币数', billCoin)
        print('# 成就值', achieve)
        print('# 等级值', user_level, '———>', user_next_level)
        print('# 经验值', user_intimacy)
        print('# 剩余值', user_next_intimacy - user_intimacy)
        arrow = int(user_intimacy * 30 / user_next_intimacy)
        line = 30 - arrow
        percent = user_intimacy / user_next_intimacy * 100.0
        process_bar = '[' + '>' * arrow + '-' * line + ']' + '%.2f' % percent + '%'
        print(process_bar)
        print('# 等级榜', user_level_rank)
Ejemplo n.º 21
0
def fetch_medal(printer=True):
    printlist = []
    if printer == True:
        printlist.append('查询勋章信息')
        printlist.append('{} {} {:^12} {:^10} {} {:^6} '.format(
            adjust_for_chinese('勋章'), adjust_for_chinese('主播昵称'), '亲密度',
            '今日的亲密度', adjust_for_chinese('排名'), '勋章状态'))
    dic_worn = {'1': '正在佩戴', '0': '待机状态'}
    response = bilibili().request_fetchmedal()
    # print(response.json())
    json_response = response.json()
    roomid = 0
    today_feed = 0
    day_limit = 0
    if json_response['code'] == 0:
        for i in json_response['data']['fansMedalList']:
            if i['status'] == 1:
                roomid = i['roomid']
                today_feed = i['today_feed']
                day_limit = i['day_limit']
            if printer == True:
                printlist.append('{} {} {:^14} {:^14} {} {:^6} '.format(
                    adjust_for_chinese(i['medal_name'] + '|' +
                                       str(i['level'])),
                    adjust_for_chinese(i['anchorInfo']['uname']),
                    str(i['intimacy']) + '/' + str(i['next_intimacy']),
                    str(i['todayFeed']) + '/' + str(i['dayLimit']),
                    adjust_for_chinese(str(i['rank'])),
                    dic_worn[str(i['status'])]))
        if printer:
            Printer().printlist_append(['join_lottery', '', 'user', printlist],
                                       True)
        return roomid, today_feed, day_limit
Ejemplo n.º 22
0
 def time_end(self):
     try:
         response = bilibili().get_time_about_silver()
         temp = response.json()
         time_end = temp['data']['time_end']
         return str(time_end)
     except:
         pass
Ejemplo n.º 23
0
 def login_with_captcha(self, username, password):
     headers = {
         'Accept': 'application/json, text/plain, */*',
         'User-Agent':
         'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
         'Host': 'passport.bilibili.com',
         'cookie': "sid=hxt5szbb"
     }
     s = requests.session()
     url = "https://passport.bilibili.com/captcha"
     res = s.get(url, headers=headers)
     tmp1 = base64.b64encode(res.content)
     captcha = bilibili().cnn_captcha(tmp1)
     temp_params = 'actionKey=' + bilibili().dic_bilibili[
         'actionKey'] + '&appkey=' + bilibili().dic_bilibili['appkey'] + '&build=' + bilibili().dic_bilibili[
                       'build'] + '&captcha=' + captcha + '&device=' + bilibili().dic_bilibili[
                       'device'] + '&mobi_app=' + \
                   bilibili().dic_bilibili['mobi_app'] + '&password='******'&platform=' + \
                   bilibili().dic_bilibili[
                       'platform'] + '&username='******'&sign=' + sign
     headers['Content-type'] = "application/x-www-form-urlencoded"
     headers['cookie'] = "sid=hxt5szbb"
     url = "https://passport.bilibili.com/api/v2/oauth2/login"
     response = s.post(url, data=payload, headers=headers)
     return response
Ejemplo n.º 24
0
 def GetAward(self):
     try:
         timeend = self.time_end()
         timestart = self.time_start()
         response = bilibili().get_silver(timestart, timeend)
         #print(response.json())
         return response.json()['code']
     except:
         pass
Ejemplo n.º 25
0
def check_room_true(roomid):
    response = bilibili().request_check_room(roomid)
    json_response = response.json()
    if json_response['code'] == 0:
        data = json_response['data']
        param1 = data['is_hidden']
        param2 = data['is_locked']
        param3 = data['encrypted']
        return param1, param2, param3
Ejemplo n.º 26
0
 def login(self):
     username = str(bilibili().dic_bilibili['account']['username'])
     password = str(bilibili().dic_bilibili['account']['password'])
     if username != "":
         while True:
             response = bilibili().request_getkey()
             value = response.json()['data']
             key = value['key']
             Hash = str(value['hash'])
             calcd_username, calcd_password = bilibili().calc_name_passw(
                 key, Hash, username, password)
             response = self.normal_login(calcd_username, calcd_password)
             while response.json()['code'] == -105:
                 response = self.login_with_captcha(calcd_username,
                                                    calcd_password)
             if response.json(
             )['code'] == -662:  # "can't decrypt rsa password~"
                 Printer().printer("打码时间太长key失效,重试", "Error", "red")
                 continue
             break
         try:
             access_key = response.json(
             )['data']['token_info']['access_token']
             cookie_info = self.access_token_2_cookies(access_key)
             cookie_format = ""
             for key, value in cookie_info.items():
                 cookie_format = cookie_format + key + "=" + value + ";"
             bilibili().dic_bilibili['csrf'] = cookie_info['bili_jct']
             bilibili().dic_bilibili['access_key'] = access_key
             bilibili().dic_bilibili['cookie'] = cookie_format
             bilibili().dic_bilibili['uid'] = int(cookie_info['DedeUserID'])
             bilibili().dic_bilibili['pcheaders']['cookie'] = cookie_format
             bilibili().dic_bilibili['appheaders']['cookie'] = cookie_format
             dic_saved_session = {
                 'csrf': cookie_info['bili_jct'],
                 'access_key': access_key,
                 'cookie': cookie_format,
                 'uid': cookie_info['DedeUserID']
             }
             configloader.write2bilibili(dic_saved_session)
             Printer().printer(f"登录成功", "Info", "green")
         except:
             Printer().printer(f"登录失败,错误信息为:{response.json()}", "Error",
                               "red")
Ejemplo n.º 27
0
Archivo: Silver.py Proyecto: xzhhbx/-
    def time_start(self):

        response = bilibili().get_time_about_silver()
        temp = response.json()
        # print (temp['code'])    #宝箱领完返回的code为-10017
        if temp['code'] == -10017:
            Printer().printlist_append(['join_lottery', '', 'user', "# 今日宝箱领取完毕"])            
        else:
            time_start = temp['data']['time_start']
            return str(time_start)
Ejemplo n.º 28
0
 async def link_sign(self):
     response = bilibili().get_grouplist()
     check = len(response.json()['data']['list'])
     group_id_list = []
     owner_uid_list = []
     for i in range(0, check):
         group_id = response.json()['data']['list'][i]['group_id']
         owner_uid = response.json()['data']['list'][i]['owner_uid']
         group_id_list.append(group_id)
         owner_uid_list.append(owner_uid)
     for (i1, i2) in zip(group_id_list, owner_uid_list):
         response = bilibili().assign_group(i1, i2)
         if response.json()['code'] == 0:
             if (response.json()['data']['status']) == 1:
                 Printer().printer(f"应援团{i1}已应援过", "Info", "green")
             if (response.json()['data']['status']) == 0:
                 Printer().printer(f"应援团{i1}应援成功,获得{response.json()['data']['add_num']}点亲密度", "Info", "green")
         else:
             Printer().printer(f"应援团{i1}应援失败,{response.json()}", "Error", "red")
Ejemplo n.º 29
0
    async def login2(self, ):
        username = bilibili().dic_bilibili['account']['username']
        password = bilibili().dic_bilibili['account']['password']
        json_rsp = await bilibili().fetch_key()
        data = json_rsp['data']
        pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(data['key'])
        crypto_password = base64.b64encode(
            rsa.encrypt((data['hash'] + password).encode('utf-8'), pubkey))
        url_password = parse.quote_plus(crypto_password)
        url_name = parse.quote_plus(username)

        json_rsp = await bilibili().login_bili2(url_name, url_password)
        while json_rsp['code'] == -105:
            binary_rsp = await bilibili().fetch_capcha()
            captcha = await bilibili().cnn_captcha2(binary_rsp)
            json_rsp = await bilibili().login_bili2(url_name, url_password,
                                                    captcha)

        if not json_rsp['code'] and not json_rsp['data']['status']:
            data = json_rsp['data']
            access_key = data['token_info']['access_token']
            refresh_token = data['token_info']['refresh_token']
            cookies = data['cookie_info']['cookies']
            list_cookies = [f'{i["name"]}={i["value"]}' for i in cookies]
            cookie = ';'.join(list_cookies)
            login_data = {
                'csrf': cookies[0]['value'],
                'access_key': access_key,
                'refresh_token': refresh_token,
                'cookie': cookie,
                'uid': cookies[1]['value']
            }
            await User().update_cookie(login_data)
        else:
            login_data = {
                'csrf': f'{json_rsp}',
                'access_key': '',
                'refresh_token': '',
                'cookie': '',
                'uid': 'NULL'
            }
            await User().update_cookie(login_data)
            return False
Ejemplo n.º 30
0
    def time_start(self):

        response = bilibili().get_time_about_silver()
        temp = response.json()
        # print (temp['code'])    #宝箱领完返回的code为-10017
        if temp['code'] == -10017:
            print("# 今日宝箱领取完毕")
        else:
            time_start = temp['data']['time_start']
            return str(time_start)