@@ -47,15 +47,16 @@ def run(self) -> None:
4747class SourceManager (QObject ):
4848 quickSource = pyqtSignal (str , float )
4949
50- def __init__ (self , sources : dict , current : any = None , parent = None ):
50+ def __init__ (self , sources : dict , current : str = None , parent = None ):
5151 super ().__init__ (parent )
5252 if not isinstance (sources , dict ):
5353 raise TypeError
5454 if not sources :
5555 raise ValueError
5656 self .sources = sources
5757 # 第一个的key
58- self .currentSource = list (sources .keys ())[0 ] if current is None else current
58+ self .currentSource = list (sources .keys ())[
59+ 0 ] if current is None else current
5960 self .speedData = {}
6061 self .threads = []
6162
@@ -70,7 +71,7 @@ def sources(self, sources: dict):
7071 if not sources :
7172 raise ValueError
7273 for key in sources :
73- sources [key ] = sources [key ].strip ('/' )
74+ sources [key ][ 'url' ] = sources [key ][ 'url' ].strip ('/' )
7475 self .__sources = sources
7576 self .currentSource = list (sources .keys ())[0 ]
7677
@@ -81,6 +82,17 @@ def currentSource(self):
8182 """
8283 return self .__currentSource
8384
85+ @property
86+ def token (self ) -> str :
87+ return self .__sources [self .currentSource ]['t' ]
88+
89+ @property
90+ def tokenUrl (self ) -> str :
91+ if self .currentSource == "gitee" :
92+ return f'?access_token={ self .token } '
93+ else :
94+ return ""
95+
8496 @currentSource .setter
8597 def currentSource (self , currentSource : str ):
8698 """
@@ -98,7 +110,7 @@ def currentSource(self, currentSource: str):
98110
99111 @property
100112 def currentSourceUrl (self ):
101- return self .sources [self .currentSource ]
113+ return self .sources [self .currentSource ][ 'url' ]
102114
103115 def checkSourceSpeed (self ):
104116 """
@@ -107,7 +119,7 @@ def checkSourceSpeed(self):
107119 self .threads .clear ()
108120 self .speedData = {}
109121 for source in self .sources :
110- thread = PingThread (source , self .sources [source ])
122+ thread = PingThread (source , self .sources [source ][ 'url' ] )
111123 thread .pingSignal .connect (self .__pingSignal )
112124 self .threads .append (thread )
113125 thread .start ()
@@ -129,13 +141,13 @@ def __init__(self, dataJson: dict, versionReStr: str) -> None:
129141 self .tag_name = dataJson ['tag_name' ] if re .search (
130142 versionReStr , dataJson ['tag_name' ]) else dataJson ['name' ]
131143 self .body = dataJson ['body' ]
132- self .html_url = dataJson ['html_url' ]
144+ self .html_url = dataJson ['html_url' ] if 'html_url' in dataJson else ""
133145 m_assert = dataJson ['assets' ][0 ]
134146 self .assets_name = m_assert ['name' ]
135- self .assets_content_type = m_assert ['content_type' ]
136- self .assets_size = m_assert ['size' ]
137- self .assets_download_count = m_assert ['download_count' ]
138- self .assets_created_at = m_assert ['created_at' ]
147+ self .assets_content_type = m_assert ['content_type' ] if 'content_type' in m_assert else ""
148+ self .assets_size = m_assert ['size' ] if 'size' in m_assert else 0
149+ self .assets_download_count = m_assert ['download_count' ] if 'download_count' in m_assert else ""
150+ self .assets_created_at = m_assert ['created_at' ] if 'created_at' in m_assert else ""
139151 self .assets_browser_download_url = m_assert ['browser_download_url' ]
140152
141153
@@ -148,20 +160,16 @@ class GitHub(QObject):
148160 downloadReleaseAsyncFinishSignal = pyqtSignal (str )
149161 errorSignal = pyqtSignal (str )
150162
151- def __init__ (self , sourceManager : SourceManager , owner : str , repo : str , version : str , versionReStr : str ,
163+ def __init__ (self , sourceManager : SourceManager , version : str , versionReStr : str ,
152164 parent = None ):
153165 """
154166 :param sourceManager: 一个SourceManager实例,提供了多个github api的url
155- :param owner: github的owner
156- :param repo: github的仓库名
157167 :param version: 当前的版本号
158168 :param versionReStr: 一个正则表达式串,用于从github的release中,提取版本号
159169 :param parent: 一个QObject实例,父对象
160170 """
161171 super ().__init__ (parent )
162172 self .__sourceManager = sourceManager
163- self .__owner = owner
164- self .__repo = repo
165173 self .__version = version
166174 self .__versionReStr = versionReStr
167175 self .__replyDict = {}
@@ -177,22 +185,6 @@ def sourceManager(self, sourceManager: SourceManager) -> None:
177185 self .__sourceManager = sourceManager
178186 self .__sourceManager .setParent (self )
179187
180- @property
181- def owner (self ) -> str :
182- return self .__owner
183-
184- @owner .setter
185- def owner (self , owner : str ) -> None :
186- self .__owner = owner
187-
188- @property
189- def repo (self ) -> str :
190- return self .__repo
191-
192- @repo .setter
193- def repo (self , repo : str ) -> None :
194- self .__repo = repo
195-
196188 @property
197189 def version (self ) -> str :
198190 return self .__version
@@ -214,14 +206,14 @@ def latestReleaseUrl(self) -> str:
214206 """
215207 获取最新的release的url
216208 """
217- return f'{ self .sourceManager .currentSourceUrl } /{ self . __owner } / { self .__repo } /releases/latest '
209+ return f'{ self .sourceManager .currentSourceUrl } /releases/latest { self .sourceManager . tokenUrl } '
218210
219211 @property
220212 def releasesUrl (self ) -> str :
221213 """
222214 获取所有release的url
223215 """
224- return f'{ self .sourceManager .currentSourceUrl } /{ self .__owner } / { self . __repo } /releases '
216+ return f'{ self .sourceManager .currentSourceUrl } /releases { self .sourceManager . tokenUrl } '
225217
226218 def isNeedUpdate (self , isAsync : bool = True ) -> bool | str | None :
227219 """
@@ -354,7 +346,8 @@ def downloadRelease(self, release: ReleaseInfo) -> str:
354346 :return: 一个当前请求的唯一标识
355347 """
356348 self .downloadReleaseAsyncStartSignal .emit (release )
357- nam , request = self .__createRequest (release .assets_browser_download_url )
349+ nam , request = self .__createRequest (
350+ release .assets_browser_download_url )
358351 reply = nam .get (request )
359352 reply .setObjectName (str (uuid .uuid1 ()))
360353 self .__replyDict [reply .objectName ()] = reply
@@ -474,14 +467,14 @@ def removeDownloadFile(self):
474467 """删除下载的文件"""
475468 GitHub .removeAllTempFile (f".*{ self .__repo } .*" )
476469
470+
477471if __name__ == '__main__' :
478472 app = QCoreApplication ([])
479473 data = {
480- "Github" : "https://api.github.com/repos/" ,
481- "gitee" : "https://api.gitee.com/repos/" ,
474+ "Github" : "https://api.github.com/repos/eee555/Metasweeper " ,
475+ "gitee" : "https://api.gitee.com/repos/ee55/Metasweeper " ,
482476 }
483- github = GitHub (SourceManager (data ), "eee555" ,
484- "Solvable-Minesweeper" , "3.1.9" , "(\d+\.\d+\.\d+)" )
477+ github = GitHub (SourceManager (data , "gitee" ), "3.1.9" , "(\d+\.\d+\.\d+)" )
485478 github .releasesAsyncSignal .connect (lambda x : print (x ))
486479 github .releases ()
487480 # manager = SourceManager(data)
0 commit comments