@@ -144,18 +144,24 @@ def fetch_repo_images(self, repo: 'Repository') -> None:
144144 with open (metadata_path , "r" , encoding = "utf-8" ) as f :
145145 local_meta = json .load (f )
146146
147- try :
148- parts = urllib .parse .urlparse (repo .images_zip_url ).path .split ("/" )
149- owner , repo_name , _ , _ , tag = parts [1 :6 ]
150- api_url = f"https://api.github.com/repos/{ owner } /{ repo_name } /releases/tags/{ tag } "
151- data , _ = _gh_request (api_url )
152- release = json .loads (data )
153- except Exception as e :
154- print (f"[ERROR] Query release { repo .name } : { e } " )
155- return
147+ parts = urllib .parse .urlparse (repo .images_zip_url ).path .split ("/" )
148+ owner , repo_name , _ , _ , tag = parts [1 :6 ]
156149
157- asset = next ((a for a in release .get ("assets" , []) if a ["name" ] == "images.zip" ), None )
150+ # Try the configured tag, then fall back.
151+ asset = None
152+ for candidate_tag in dict .fromkeys ((tag , "screenshots-latest" )):
153+ try :
154+ api_url = f"https://api.github.com/repos/{ owner } /{ repo_name } /releases/tags/{ candidate_tag } "
155+ data , _ = _gh_request (api_url )
156+ release = json .loads (data )
157+ except Exception as e :
158+ print (f"[IMAGES] No { candidate_tag } release for { repo .name } : { e } " )
159+ continue
160+ asset = next ((a for a in release .get ("assets" , []) if a ["name" ] == "images.zip" ), None )
161+ if asset :
162+ break
158163 if not asset :
164+ print (f"[IMAGES] No images.zip found for { repo .name } " )
159165 return
160166
161167 remote_id = asset .get ("id" )
0 commit comments