55from urllib .parse import urljoin
66
77from app .sites .siteuserinfo ._base import _ISiteUserInfo , SITE_BASE_ORDER
8- from app .utils import RequestUtils
8+ from app .utils import RequestUtils , JsonUtils
99from app .utils .types import SiteSchema
1010from config import Config
1111
@@ -36,7 +36,6 @@ def parse(self):
3636 self ._parse_seeding_pages ()
3737 self .seeding_info = json .dumps (self .seeding_info )
3838
39-
4039 def _parse_favicon (self , html_text ):
4140 """
4241 解析站点favicon,返回base64 fav图标
@@ -51,14 +50,17 @@ def _parse_favicon(self, html_text):
5150 self .site_favicon = base64 .b64encode (res .content ).decode ()
5251
5352 def _parse_user_base_info (self , html_text ):
53+ if not JsonUtils .is_valid_json (html_text ):
54+ return
55+
5456 json_data = json .loads (html_text )
5557
5658 user_profile = self ._get_page_content (self ._base_url + '/api/member/profile' , params = {})
5759 user_profile = json .loads (user_profile )
58- if user_profile [ 'message' ] == 'SUCCESS' and json_data [ 'data' ] is not None :
59- userid = user_profile [ 'data' ][ 'id' ]
60- self .username = json_data [ 'data' ][ 'username' ]
61- self .bonus = json_data [ 'data' ][ 'memberCount' ][ 'bonus' ]
60+ if user_profile . get ( 'message' ) == 'SUCCESS' and json_data . get ( 'data' ) is not None :
61+ userid = user_profile . get ( 'data' ). get ( 'id' ) or ''
62+ self .username = json_data . get ( 'data' ). get ( 'username' ) or ''
63+ self .bonus = json_data . get ( 'data' ). get ( 'memberCount' ). get ( 'bonus' ) or ''
6264 self ._torrent_seeding_page = '/api/member/getUserTorrentList'
6365 self ._torrent_seeding_params = {"userid" : userid , "type" : "SEEDING" , "pageNumber" : 1 , "pageSize" : 25 }
6466
@@ -82,37 +84,43 @@ def _parse_user_detail_info(self, html_text):
8284 '8' : '總督/Ultimate User' ,
8385 '9' : '大臣/mTorrent Master'
8486 }
87+ if not JsonUtils .is_valid_json (html_text ):
88+ return
8589 json_data = json .loads (html_text )
86- if json_data [ 'data' ] is not None :
90+ if json_data . get ( 'data' ) is not None :
8791 # 用户等级
88- role = json_data [ 'data' ][ 'role' ]
92+ role = json_data . get ( 'data' ). get ( 'role' ) or ''
8993 self .user_level = role_dict .get (role , '其他' )
9094
9195 # 加入日期
92- self .join_at = json_data [ 'data' ][ 'createdDate' ]
96+ self .join_at = json_data . get ( 'data' ). get ( 'createdDate' )
9397
9498 def _parse_user_traffic_info (self , html_text ):
9599 json_data = json .loads (html_text )
96- if json_data [ 'data' ] is not None :
97- self .upload = int (json_data [ 'data' ][ 'memberCount' ][ 'uploaded' ] )
100+ if json_data . get ( 'data' ) is not None :
101+ self .upload = int (json_data . get ( 'data' ). get ( 'memberCount' ). get ( 'uploaded' ) )
98102
99- self .download = int (json_data [ 'data' ][ 'memberCount' ][ 'downloaded' ] )
103+ self .download = int (json_data . get ( 'data' ). get ( 'memberCount' ). get ( 'downloaded' ) )
100104
101- self .ratio = json_data [ 'data' ][ 'memberCount' ][ 'shareRate' ]
105+ self .ratio = json_data . get ( 'data' ). get ( 'memberCount' ). get ( 'shareRate' )
102106
103107 def _parse_user_torrent_seeding_info (self , html_text , multi_page = False ):
108+
109+ if not JsonUtils .is_valid_json (html_text ):
110+ return None
111+
104112 json_data = json .loads (html_text )
105113
106114 page_seeding = 0
107115 page_seeding_size = 0
108116 page_seeding_info = []
109117 next_page = None
110118
111- if json_data [ 'data' ] is not None :
112- page_seeding = len (json_data [ 'data' ][ 'data' ] )
113- for data in json_data [ 'data' ][ 'data' ] :
114- size = int (data [ 'torrent' ][ 'size' ] )
115- seeders = data [ 'torrent' ][ 'status' ][ 'seeders' ]
119+ if json_data . get ( 'data' ) is not None :
120+ page_seeding = len (json_data . get ( 'data' ). get ( 'data' ) )
121+ for data in json_data . get ( 'data' ). get ( 'data' ) :
122+ size = int (data . get ( 'torrent' ). get ( 'size' ) )
123+ seeders = data . get ( 'torrent' ). get ( 'status' ). get ( 'seeders' )
116124
117125 page_seeding_size += size
118126 page_seeding_info .append ([seeders , size ])
@@ -121,8 +129,8 @@ def _parse_user_torrent_seeding_info(self, html_text, multi_page=False):
121129 self .seeding_size += page_seeding_size
122130 self .seeding_info .extend (page_seeding_info )
123131
124- page_num = int (json_data [ 'data' ][ 'pageNumber' ] )
125- total_pages = int (json_data [ 'data' ][ 'totalPages' ] )
132+ page_num = int (json_data . get ( 'data' ). get ( 'pageNumber' ) )
133+ total_pages = int (json_data . get ( 'data' ). get ( 'totalPages' ) )
126134
127135 next_page = page_num + 1
128136 self ._torrent_seeding_params ['pageNumber' ] = next_page
0 commit comments