* FIXED: Resolved an issue where cache updates were not working properly.
* IMPROVED: Instead of updating the entire CNR cache at once, the process now divides it into 30-page queries. * IMPROVED: Clicking on the titles of nodes that exist only in CNR now opens the GitHub repository link instead of the CNR link, where possible. * ADDED: Added information about `extra_model_paths.yaml` to the README.md file. https://github.com/ltdrdata/ComfyUI-Manager/issues/1457
This commit is contained in:
@@ -5,6 +5,7 @@ import manager_util
|
||||
import toml
|
||||
import os
|
||||
import asyncio
|
||||
import json
|
||||
|
||||
base_url = "https://api.comfy.org"
|
||||
|
||||
@@ -13,33 +14,55 @@ lock = asyncio.Lock()
|
||||
|
||||
is_cache_loading = False
|
||||
|
||||
async def get_cnr_data(page=1, limit=1000, cache_mode=True, dont_wait=True):
|
||||
async def get_cnr_data(cache_mode=True, dont_wait=True):
|
||||
global is_cache_loading
|
||||
|
||||
uri = f'{base_url}/nodes?page={page}&limit={limit}'
|
||||
uri = f'{base_url}/nodes'
|
||||
|
||||
def touch(json_obj):
|
||||
for v in json_obj['nodes']:
|
||||
async def fetch_all():
|
||||
remained = True
|
||||
page = 1
|
||||
|
||||
full_nodes = {}
|
||||
while remained:
|
||||
sub_uri = f'{base_url}/nodes?page={page}&limit=30'
|
||||
sub_json_obj = await manager_util.get_data_with_cache(sub_uri, cache_mode=False, silent=True)
|
||||
remained = page < sub_json_obj['totalPages']
|
||||
|
||||
for x in sub_json_obj['nodes']:
|
||||
full_nodes[x['id']] = x
|
||||
|
||||
if page % 5 == 0:
|
||||
print(f"FETCH ComfyRegistry Data: {page}/{sub_json_obj['totalPages']}")
|
||||
page += 1
|
||||
|
||||
print("FETCH ComfyRegistry Data [DONE]")
|
||||
|
||||
for v in full_nodes.values():
|
||||
if 'latest_version' not in v:
|
||||
v['latest_version'] = dict(version='nightly')
|
||||
|
||||
return {'nodes': list(full_nodes.values())}
|
||||
|
||||
if cache_mode:
|
||||
if dont_wait:
|
||||
json_obj = await manager_util.get_data_with_cache(uri, cache_mode=cache_mode, dont_wait=True) # fallback
|
||||
|
||||
if 'nodes' in json_obj:
|
||||
touch(json_obj)
|
||||
return json_obj['nodes']
|
||||
else:
|
||||
return {}
|
||||
|
||||
is_cache_loading = True
|
||||
cache_state = manager_util.get_cache_state(uri)
|
||||
|
||||
if dont_wait:
|
||||
if cache_state == 'not-cached':
|
||||
return {}
|
||||
else:
|
||||
print("[ComfyUI-Manager] The ComfyRegistry cache update is still in progress, so an outdated cache is being used.")
|
||||
with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||
return json.load(json_file)['nodes']
|
||||
|
||||
if cache_state == 'cached':
|
||||
with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||
return json.load(json_file)['nodes']
|
||||
|
||||
try:
|
||||
json_obj = await manager_util.get_data_with_cache(uri, cache_mode=cache_mode)
|
||||
touch(json_obj)
|
||||
|
||||
json_obj = await fetch_all()
|
||||
manager_util.save_to_cache(uri, json_obj)
|
||||
return json_obj['nodes']
|
||||
except:
|
||||
res = {}
|
||||
|
||||
Reference in New Issue
Block a user