1
+ import re
1
2
from dataclasses import dataclass
2
- from typing import TypedDict
3
+ from typing import TypedDict , TypeVar , Union
3
4
4
5
from .serialize import JsonSerializer
5
6
6
7
8
+ _T = TypeVar ('_T' , bound = dict [str , Union [int , str ]])
9
+ _trans_map = {
10
+ "SsoVersion" : "pt_os_version" ,
11
+ "WtLoginSdk" : "wtlogin_sdk" ,
12
+ "AppIdQrCode" : "app_id_qrcode" ,
13
+ "MainSigMap" : "main_sigmap" ,
14
+ "SubSigMap" : "sub_sigmap" ,
15
+ }
16
+
17
+ def _translate_appinfo (s : _T ) -> _T :
18
+ out : _T = {}
19
+ for k , v in s .items ():
20
+ if k in _trans_map :
21
+ out [_trans_map [k ]] = v
22
+ else :
23
+ k = re .sub (
24
+ r'([A-Z])([^A-Z]+)' ,
25
+ '_\g<0>' ,
26
+ k
27
+ ).lstrip ("_" ).lower ()
28
+ out [k ] = v
29
+ return out
30
+
31
+
7
32
@dataclass
8
33
class AppInfo (JsonSerializer ):
9
34
os : str
10
35
kernel : str
11
36
vendor_os : str
12
37
13
38
current_version : str
14
- build_version : int
39
+ # build_version: int
15
40
misc_bitmap : int
16
41
pt_version : str
17
42
pt_os_version : int
18
43
package_name : str
19
44
wtlogin_sdk : str
20
- package_sign : str
21
45
app_id : int
22
46
sub_app_id : int
23
47
app_id_qrcode : int
@@ -26,6 +50,27 @@ class AppInfo(JsonSerializer):
26
50
sub_sigmap : int
27
51
nt_login_type : int
28
52
53
+ @property
54
+ def build_version (self ) -> int :
55
+ return int (self .current_version .split ("-" )[1 ])
56
+
57
+ @property
58
+ def package_sign (self ) -> str :
59
+ # QUA?
60
+ if self .os == "Windows" :
61
+ kernel = "WIN"
62
+ elif self .os == "Linux" :
63
+ kernel = "LNX"
64
+ elif self .os == "Mac" :
65
+ kernel = "MAC"
66
+ else :
67
+ raise NotImplementedError (self .os )
68
+ return f"V1_{ kernel } _NQ_{ self .current_version } _RDM_B"
69
+
70
+ @classmethod
71
+ def load_custom (cls , d : _T ) -> "AppInfo" :
72
+ return cls (** _translate_appinfo (d ))
73
+
29
74
30
75
class AppInfoDict (TypedDict ):
31
76
linux : AppInfo
@@ -39,13 +84,13 @@ class AppInfoDict(TypedDict):
39
84
kernel = "Linux" ,
40
85
vendor_os = "linux" ,
41
86
current_version = "3.2.10-25765" ,
42
- build_version = 25765 ,
87
+ # build_version=25765,
43
88
misc_bitmap = 32764 ,
44
89
pt_version = "2.0.0" ,
45
90
pt_os_version = 19 ,
46
91
package_name = "com.tencent.qq" ,
47
92
wtlogin_sdk = "nt.wtlogin.0.0.1" ,
48
- package_sign = "V1_LNX_NQ_3.1.2-13107_RDM_B" ,
93
+ # package_sign="V1_LNX_NQ_3.1.2-13107_RDM_B",
49
94
app_id = 1600001615 ,
50
95
sub_app_id = 537234773 ,
51
96
app_id_qrcode = 13697054 ,
@@ -59,13 +104,13 @@ class AppInfoDict(TypedDict):
59
104
kernel = "Darwin" ,
60
105
vendor_os = "mac" ,
61
106
current_version = "6.9.20-17153" ,
62
- build_version = 17153 ,
107
+ # build_version=17153,
63
108
misc_bitmap = 32764 ,
64
109
pt_version = "2.0.0" ,
65
110
pt_os_version = 23 ,
66
111
package_name = "com.tencent.qq" ,
67
112
wtlogin_sdk = "nt.wtlogin.0.0.1" ,
68
- package_sign = "V1_MAC_NQ_6.9.20-17153_RDM_B" ,
113
+ # package_sign="V1_MAC_NQ_6.9.20-17153_RDM_B",
69
114
app_id = 1600001602 ,
70
115
sub_app_id = 537162356 ,
71
116
app_id_qrcode = 537162356 ,
@@ -79,13 +124,13 @@ class AppInfoDict(TypedDict):
79
124
kernel = "Windows_NT" ,
80
125
vendor_os = "win32" ,
81
126
current_version = "9.9.2-15962" ,
82
- build_version = 15962 ,
127
+ # build_version=15962,
83
128
pt_version = "2.0.0" ,
84
129
misc_bitmap = 32764 ,
85
130
pt_os_version = 23 ,
86
131
package_name = "com.tencent.qq" ,
87
132
wtlogin_sdk = "nt.wtlogin.0.0.1" ,
88
- package_sign = "V1_WIN_NQ_9.9.2-15962_RDM_B" ,
133
+ # package_sign="V1_WIN_NQ_9.9.2-15962_RDM_B",
89
134
app_id = 1600001604 ,
90
135
sub_app_id = 537138217 ,
91
136
app_id_qrcode = 537138217 ,
0 commit comments