Skip to content
This repository was archived by the owner on Jan 28, 2026. It is now read-only.

Commit 38af302

Browse files
authored
feat: login via cookie (#47)
1 parent 106e06e commit 38af302

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

bilitool/cli.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def cli():
3737

3838
# Login subcommand
3939
login_parser = subparsers.add_parser('login', help='Login and save the cookie')
40+
login_parser.add_argument('-f', '--file', default='', help='(default is empty) Login via cookie file')
4041
login_parser.add_argument('--export', action='store_true', help='(default is false) Export the login cookie file')
4142

4243
# Logout subcommand
@@ -98,7 +99,10 @@ def cli():
9899
sys.exit()
99100

100101
if args.subcommand == 'login':
101-
LoginController().login_bilibili(args.export)
102+
if args.file:
103+
LoginController().login_bilibili_with_cookie_file(args.file)
104+
else:
105+
LoginController().login_bilibili(args.export)
102106

103107
if args.subcommand == 'logout':
104108
LoginController().logout_bilibili()

bilitool/controller/login_controller.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ def logout_bilibili(self):
2828

2929
def check_bilibili_login(self):
3030
return self.check_bili_login.check_bili_login()
31+
32+
def login_bilibili_with_cookie_file(self, filename):
33+
self.login_bili.get_cookie_file_login(filename)

bilitool/login/login_bili.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
from urllib.parse import urlencode
88
from bilitool.model.model import Model
9+
from bilitool.login.check_bili_login import CheckBiliLogin
910

1011

1112
class LoginBili(object):
@@ -79,3 +80,19 @@ def verify_login(self, auth_code, export):
7980
break
8081
else:
8182
time.sleep(3)
83+
84+
def get_cookie_file_login(self, filename):
85+
with open(filename, 'r', encoding='utf-8') as f:
86+
body = json.load(f)
87+
access_key_value = body['data']['access_token']
88+
sessdata_value = body['data']['cookie_info']['cookies'][0]['value']
89+
bili_jct_value = body['data']['cookie_info']['cookies'][1]['value']
90+
dede_user_id_value = body['data']['cookie_info']['cookies'][2]['value']
91+
dede_user_id_ckmd5_value = body['data']['cookie_info']['cookies'][3]['value']
92+
sid_value = body['data']['cookie_info']['cookies'][4]['value']
93+
Model().save_cookies_info(access_key_value, sessdata_value, bili_jct_value, dede_user_id_value, dede_user_id_ckmd5_value, sid_value)
94+
if CheckBiliLogin().check_bili_login():
95+
print("Login success!", flush=True)
96+
else:
97+
print("Login failed, please check the cookie file again", flush=True)
98+

0 commit comments

Comments
 (0)