Skip to content

Commit e6c66ea

Browse files
committed
[0.8.4] add buvid to web headers
1 parent 81109cc commit e6c66ea

File tree

9 files changed

+31
-25
lines changed

9 files changed

+31
-25
lines changed

app_state/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import constant
1313
from constant import *
14+
from constant import HeadersType
1415
from sign import gen_buvid
1516
from .app_state_base import StateBase
1617

@@ -120,9 +121,12 @@ class RoomInfo(StateBase):
120121
cookies_dict = {}
121122

122123

123-
def create_session() -> Session:
124+
def create_session(h_type: HeadersType) -> Session:
124125
session = Session()
125-
session.headers.update(constant.HEADERS_APP)
126+
if h_type == HeadersType.WEB:
127+
session.headers.update(constant.HEADERS_WEB)
128+
elif h_type == HeadersType.APP:
129+
session.headers.update(constant.HEADERS_APP)
126130
cookiejar_from_dict(cookies_dict,
127131
cookiejar=session.cookies)
128132
session.cookies.set("appkey", constant.APP_KEY, domain="bilibili.com",

constant/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"MAX_RECENT_TITLE", "VERSION", "DARK_COVER_CSS", "DARK_CSS", "LIGHT_COVER_CSS",
1010
"LIGHT_CSS",
1111
"ProxyMode", "PreferProto", "CoverStatus",
12-
"WidgetIndex", "CacheType", "BackgroundMode"
12+
"WidgetIndex", "CacheType", "BackgroundMode", "HeadersType"
1313
]
1414

1515

@@ -56,6 +56,12 @@ class BackgroundMode(IntEnum):
5656
COVER = 3 # 等比适应
5757

5858

59+
@unique
60+
class HeadersType(IntEnum):
61+
WEB = 0
62+
APP = 1
63+
64+
5965
KEYRING_SERVICE_NAME = "StartLive|userCredentials"
6066
KEYRING_COOKIES = "cookies"
6167
KEYRING_COOKIES_INDEX = "cookiesIndex"

models/workers/base/BaseWorker.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from requests import Session
66

77
from app_state import create_session
8+
from constant import HeadersType
89

910

1011
class BaseWorker(QRunnable):
@@ -18,15 +19,16 @@ class Signals(QObject):
1819
exception: Optional[Exception]
1920
signals: Signals
2021

21-
def __init__(self, name: str, *, with_session: bool = True):
22+
def __init__(self, name: str, *, with_session: bool = True,
23+
headers_type: HeadersType = HeadersType.APP):
2224
super().__init__()
2325
self.name = name
2426
self.finished = False
2527
self.exception = None
2628
self.signals = self.Signals()
2729
self.setAutoDelete(True)
2830
if with_session:
29-
self._session = create_session()
31+
self._session = create_session(headers_type)
3032
else:
3133
self._session = None
3234

models/workers/base/LongLiveWorker.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
from constant import HeadersType
12
from .BaseWorker import BaseWorker
23

34

45
class LongLiveWorker(BaseWorker):
56
is_running: bool
67

7-
def __init__(self, name: str, *, with_session: bool = True):
8-
super().__init__(name, with_session=with_session)
8+
def __init__(self, name: str, *, with_session: bool = True,
9+
headers_type: HeadersType = HeadersType.APP):
10+
super().__init__(name, with_session=with_session,
11+
headers_type=headers_type)
912
self.is_running = True
1013

1114
def stop(self) -> None:

models/workers/cover/cover_upload.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# local package import
88
import app_state
9-
import constant
9+
from constant import HeadersType
1010
from exceptions import CoverUploadError
1111
from models.log import get_logger
1212
from models.workers.base import BaseWorker, run_wrapper
@@ -15,11 +15,9 @@
1515

1616
class CoverUploadWorker(BaseWorker):
1717
def __init__(self, data: bytes | bytearray | memoryview):
18-
super().__init__(name="封面上传")
18+
super().__init__(name="封面上传", headers_type=HeadersType.WEB)
1919
self.data = data
2020
self.logger = get_logger(self.__class__.__name__)
21-
self._session.headers.clear()
22-
self._session.headers.update(constant.HEADERS_WEB)
2321

2422
@Slot()
2523
@run_wrapper

models/workers/credentials/credential_manager.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
# local package import
99
import app_state
10-
import constant
1110
from app_state import dumps
1211
from constant import *
12+
from constant import HeadersType
1313
from exceptions import CredentialExpiredError, CredentialDuplicatedError
1414
from models.log import get_logger
1515
from models.states import LoginState
@@ -21,7 +21,7 @@
2121

2222
class CredentialManagerWorker(BaseWorker):
2323
def __init__(self, cookie_index: int, is_new: bool = False):
24-
super().__init__(name="凭据管理")
24+
super().__init__(name="凭据管理", headers_type=HeadersType.WEB)
2525
self.cookie_index = cookie_index
2626
self.is_new = is_new
2727
self.logger = get_logger(self.__class__.__name__)
@@ -124,7 +124,6 @@ def run(self, /) -> None:
124124
saved_cookies = loads(saved_cookies)
125125
cookiejar_from_dict(saved_cookies,
126126
cookiejar=self._session.cookies)
127-
self._session.headers.update(constant.HEADERS_WEB)
128127
nav_url = "https://api.bilibili.com/x/web-interface/nav"
129128
self.logger.info(f"nav Request")
130129
response = self._session.get(

models/workers/login/fetch_login.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
# local package import
99
import app_state
10-
import constant
10+
from constant import HeadersType
1111
from exceptions import LoginError
1212
from models.log import get_logger
1313
from models.states import LoginState
@@ -20,12 +20,10 @@
2020

2121
class FetchLoginWorker(LongLiveWorker):
2222
def __init__(self, state: LoginState):
23-
super().__init__(name="登录")
23+
super().__init__(name="登录", headers_type=HeadersType.WEB)
2424
self.state = state
2525
self.logger = get_logger(self.__class__.__name__)
2626
self.cookie_key = None
27-
self._session.headers.clear()
28-
self._session.headers.update(constant.HEADERS_WEB)
2927

3028
@staticmethod
3129
def post_login(parent: "MainWindow", state: LoginState):

models/workers/login/fetch_qr.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,15 @@
66

77
# local package import
88
import app_state
9-
import constant
9+
from constant import HeadersType
1010
from models.log import get_logger
1111
from models.workers.base import BaseWorker, run_wrapper
1212

1313

1414
class FetchQRWorker(BaseWorker):
1515
def __init__(self):
16-
super().__init__(name="登录二维码")
16+
super().__init__(name="登录二维码", headers_type=HeadersType.WEB)
1717
self.logger = get_logger(self.__class__.__name__)
18-
self._session.headers.clear()
19-
self._session.headers.update(constant.HEADERS_WEB)
2018

2119
@Slot()
2220
@run_wrapper

models/workers/usernames/fetch_usernames.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616

1717
class FetchUsernamesWorker(BaseWorker):
1818
def __init__(self, skip_user: str):
19-
super().__init__(name="用户名更新")
19+
super().__init__(name="用户名更新", headers_type=HeadersType.WEB)
2020
self._current_user = skip_user
2121
self.logger = get_logger(self.__class__.__name__)
22-
self._session.headers.clear()
23-
self._session.headers.update(constant.HEADERS_WEB)
2422

2523
@Slot()
2624
@run_wrapper

0 commit comments

Comments
 (0)