Compare commits
7 Commits
main
...
feat/pkg_t
Author | SHA1 | Date |
---|---|---|
Dr.Lt.Data | ef368d15ca | 7 months ago |
Dr.Lt.Data | f6640453a9 | 7 months ago |
Dr.Lt.Data | 9d6098f198 | 7 months ago |
Dr.Lt.Data | e3779f8e03 | 7 months ago |
Dr.Lt.Data | 4019db2861 | 7 months ago |
Dr.Lt.Data | 001f54665b | 7 months ago |
Dr.Lt.Data | c019768513 | 7 months ago |
37 changed files with 6280 additions and 16297 deletions
@ -1,146 +0,0 @@
|
||||
# `cm-cli`: ComfyUI-Manager CLI |
||||
|
||||
`cm-cli` is a tool that allows you to use various functions of ComfyUI-Manager from the command line without launching ComfyUI. |
||||
|
||||
|
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
|
||||
python cm-cli.py [OPTIONS] |
||||
|
||||
OPTIONS: |
||||
[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
save-snapshot ?[--output <snapshot .json/.yaml>] |
||||
restore-snapshot <snapshot .json/.yaml> ?[--pip-non-url] ?[--pip-non-local-url] ?[--pip-local-url] |
||||
cli-only-mode [enable|disable] |
||||
restore-dependencies |
||||
clear |
||||
``` |
||||
|
||||
## How To Use? |
||||
* You can execute it via `python cm-cli.py`. |
||||
* For example, if you want to update all custom nodes: |
||||
* In the ComfyUI-Manager directory, you can execute the command `python cm-cli.py update all`. |
||||
* If running from the ComfyUI directory, you can specify the path to cm-cli.py like this: `python custom_nodes/ComfyUI-Manager/cm-cli.py update all`. |
||||
|
||||
## Prerequisite |
||||
* It must be run in the same Python environment as the one running ComfyUI. |
||||
* If using a venv, you must run it with the venv activated. |
||||
* If using a portable version, and you are in the directory with the run_nvidia_gpu.bat file, you should execute the command as follows: |
||||
`.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-Manager\cm-cli.py update all` |
||||
* The path for ComfyUI can be set with the COMFYUI_PATH environment variable. If omitted, a warning message will appear, and the path will be set relative to the installed location of ComfyUI-Manager: |
||||
``` |
||||
WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path. |
||||
``` |
||||
|
||||
## Features |
||||
|
||||
### 1. --channel, --mode |
||||
* For viewing information and managing custom nodes, you can set the information database through --channel and --mode. |
||||
* For instance, executing the command `python cm-cli.py update all --channel recent --mode remote` will operate based on the latest information from remote rather than local data embedded in the current ComfyUI-Manager repo and will only target the list in the recent channel. |
||||
* --channel, --mode are only available with the commands `simple-show, show, install, uninstall, update, disable, enable, fix`. |
||||
|
||||
### 2. Viewing Management Information |
||||
|
||||
`[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
* `[show|simple-show]` - `show` provides detailed information, while `simple-show` displays information more simply. |
||||
|
||||
Executing a command like `python cm-cli.py show installed` will display detailed information about the installed custom nodes. |
||||
|
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json |
||||
[ ENABLED ] ComfyUI-Manager (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI-Impact-Pack (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI-Inspire-Pack (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI_experiments (author: comfyanonymous) |
||||
[ ENABLED ] ComfyUI-SAI_API (author: Stability-AI) |
||||
[ ENABLED ] stability-ComfyUI-nodes (author: Stability-AI) |
||||
[ ENABLED ] comfyui_controlnet_aux (author: Fannovel16) |
||||
[ ENABLED ] ComfyUI-Frame-Interpolation (author: Fannovel16) |
||||
[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16) |
||||
``` |
||||
|
||||
Using a command like `python cm-cli.py simple-show installed` will simply display information about the installed custom nodes. |
||||
|
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json |
||||
ComfyUI-Manager |
||||
ComfyUI-Impact-Pack |
||||
ComfyUI-Inspire-Pack |
||||
ComfyUI_experiments |
||||
ComfyUI-SAI_API |
||||
stability-ComfyUI-nodes |
||||
comfyui_controlnet_aux |
||||
ComfyUI-Frame-Interpolation |
||||
ComfyUI-Loopchain |
||||
``` |
||||
|
||||
`[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]` |
||||
* `enabled`, `disabled`: Shows nodes that have been enabled or disabled among the installed custom nodes. |
||||
* `installed`: Shows all nodes that have been installed, regardless of whether they are enabled or disabled. |
||||
* `not-installed`: Shows a list of custom nodes that have not been installed. |
||||
* `all`: Shows a list of all custom nodes. |
||||
* `snapshot`: Displays snapshot information of the currently installed custom nodes. When viewed with `show`, it is displayed in JSON format, and with `simple-show`, it is displayed simply, along with the commit hash. |
||||
* `snapshot-list`: Shows a list of snapshot files stored in ComfyUI-Manager/snapshots. |
||||
|
||||
### 3. Managing Custom Nodes |
||||
|
||||
`[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
* You can apply management functions by listing the names of custom nodes, such as `python cm-cli.py install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments`. |
||||
* The names of the custom nodes are as shown by `show` and are the names of the git repositories. |
||||
(Plans are to update the use of nicknames in the future.) |
||||
|
||||
`[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
* The `update, disable, enable, fix` functions can be specified for all. |
||||
|
||||
* Detailed Operations |
||||
* `install`: Installs the specified custom nodes. |
||||
* `reinstall`: Removes and then reinstalls the specified custom nodes. |
||||
* `uninstall`: Uninstalls the specified custom nodes. |
||||
* `update`: Updates the specified custom nodes. |
||||
* `disable`: Disables the specified custom nodes. |
||||
* `enable`: Enables the specified custom nodes. |
||||
* `fix`: Attempts to fix dependencies for the specified custom nodes. |
||||
|
||||
|
||||
### 4. Snapshot Management |
||||
* `python cm-cli.py save-snapshot [--output <snapshot .json/.yaml>]`: Saves the current snapshot. |
||||
* With `--output`, you can save a file in .yaml format to any specified path. |
||||
* `python cm-cli.py restore-snapshot <snapshot .json/.yaml>`: Restores to the specified snapshot. |
||||
* If a file exists at the snapshot path, that snapshot is loaded. |
||||
* If no file exists at the snapshot path, it is implicitly assumed to be in ComfyUI-Manager/snapshots. |
||||
* `--pip-non-url`: Restore for pip packages registered on PyPI. |
||||
* `--pip-non-local-url`: Restore for pip packages registered at web URLs. |
||||
* `--pip-local-url`: Restore for pip packages specified by local paths. |
||||
|
||||
|
||||
### 5. CLI Only Mode |
||||
|
||||
You can set whether to use ComfyUI-Manager solely via CLI. |
||||
|
||||
`cli-only-mode [enable|disable]` |
||||
|
||||
* This mode can be used if you want to restrict the use of ComfyUI-Manager through the GUI for security or policy reasons. |
||||
* When CLI only mode is enabled, ComfyUI-Manager is loaded in a very restricted state, the internal web API is disabled, and the Manager button is not displayed in the main menu. |
||||
|
||||
### 6. Dependency Restoration |
||||
|
||||
`restore-dependencies` |
||||
|
||||
* This command can be used if custom nodes are installed under the `ComfyUI/custom_nodes` path but their dependencies are not installed. |
||||
* It is useful when starting a new cloud instance, like colab, where dependencies need to be reinstalled and installation scripts re-executed. |
||||
* It can also be utilized if ComfyUI is reinstalled and only the custom_nodes path has been backed up and restored. |
||||
|
||||
### 7. Clear |
||||
|
||||
In the GUI, installations, updates, or snapshot restorations are scheduled to execute the next time ComfyUI is launched. The `clear` command clears this scheduled state, ensuring no pre-execution actions are applied. |
@ -1,149 +0,0 @@
|
||||
# `cm-cli`: ComfyUI-Manager CLI |
||||
|
||||
`cm-cli` 는 ComfyUI를 실행시키지 않고 command line에서 ComfyUI-Manager의 여러가지 기능을 사용할 수 있도록 도와주는 도구입니다. |
||||
|
||||
|
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
|
||||
python cm-cli.py [OPTIONS] |
||||
|
||||
OPTIONS: |
||||
[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]] |
||||
save-snapshot ?[--output <snapshot .json/.yaml>] |
||||
restore-snapshot <snapshot .json/.yaml> ?[--pip-non-url] ?[--pip-non-local-url] ?[--pip-local-url] |
||||
cli-only-mode [enable|disable] |
||||
restore-dependencies |
||||
clear |
||||
``` |
||||
|
||||
## How To Use? |
||||
* `python cm-cli.py` 를 통해서 실행 시킬 수 있습니다. |
||||
* 예를 들어 custom node를 모두 업데이트 하고 싶다면 |
||||
* ComfyUI-Manager경로 에서 `python cm-cli.py update all` 를 command를 실행할 수 있습니다. |
||||
* ComfyUI 경로에서 실행한다면, `python custom_nodes/ComfyUI-Manager/cm-cli.py update all` 와 같이 cm-cli.py 의 경로를 지정할 수도 있습니다. |
||||
|
||||
## Prerequisite |
||||
* ComfyUI 를 실행하는 python과 동일한 python 환경에서 실행해야 합니다. |
||||
* venv를 사용할 경우 해당 venv를 activate 한 상태에서 실행해야 합니다. |
||||
* portable 버전을 사용할 경우 run_nvidia_gpu.bat 파일이 있는 경로인 경우, 다음과 같은 방식으로 코맨드를 실행해야 합니다. |
||||
`.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-Manager\cm-cli.py update all` |
||||
* ComfyUI 의 경로는 COMFYUI_PATH 환경 변수로 설정할 수 있습니다. 만약 생략할 경우 다음과 같은 경고 메시지가 나타나며, ComfyUI-Manager가 설치된 경로를 기준으로 상대 경로로 설정됩니다. |
||||
``` |
||||
WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path. |
||||
``` |
||||
|
||||
## Features |
||||
|
||||
### 1. --channel, --mode |
||||
* 정보 보기 기능과 커스텀 노드 관리 기능의 경우는 --channel과 --mode를 통해 정보 DB를 설정할 수 있습니다. |
||||
* 예들 들어 `python cm-cli.py update all --channel recent --mode remote`와 같은 command를 실행할 경우, 현재 ComfyUI-Manager repo에 내장된 로컬의 정보가 아닌 remote의 최신 정보를 기준으로 동작하며, recent channel에 있는 목록을 대상으로만 동작합니다. |
||||
* --channel, --mode 는 `simple-show, show, install, uninstall, update, disable, enable, fix` command에서만 사용 가능합니다. |
||||
|
||||
### 2. 관리 정보 보기 |
||||
|
||||
`[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
|
||||
* `[show|simple-show]` - `show`는 상세하게 정보를 보여주며, `simple-show`는 간단하게 정보를 보여줍니다. |
||||
|
||||
|
||||
`python cm-cli.py show installed` 와 같은 코맨드를 실행하면 설치된 커스텀 노드의 정보를 상세하게 보여줍니다. |
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json |
||||
[ ENABLED ] ComfyUI-Manager (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI-Impact-Pack (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI-Inspire-Pack (author: Dr.Lt.Data) |
||||
[ ENABLED ] ComfyUI_experiments (author: comfyanonymous) |
||||
[ ENABLED ] ComfyUI-SAI_API (author: Stability-AI) |
||||
[ ENABLED ] stability-ComfyUI-nodes (author: Stability-AI) |
||||
[ ENABLED ] comfyui_controlnet_aux (author: Fannovel16) |
||||
[ ENABLED ] ComfyUI-Frame-Interpolation (author: Fannovel16) |
||||
[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16) |
||||
``` |
||||
|
||||
`python cm-cli.py simple-show installed` 와 같은 코맨드를 이용해서 설치된 커스텀 노드의 정보를 간단하게 보여줍니다. |
||||
|
||||
``` |
||||
-= ComfyUI-Manager CLI (V2.24) =- |
||||
|
||||
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json |
||||
ComfyUI-Manager |
||||
ComfyUI-Impact-Pack |
||||
ComfyUI-Inspire-Pack |
||||
ComfyUI_experiments |
||||
ComfyUI-SAI_API |
||||
stability-ComfyUI-nodes |
||||
comfyui_controlnet_aux |
||||
ComfyUI-Frame-Interpolation |
||||
ComfyUI-Loopchain |
||||
``` |
||||
|
||||
* `[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]` |
||||
* `enabled`, `disabled`: 설치된 커스텀 노드들 중 enable 되었거나, disable된 노드들을 보여줍니다. |
||||
* `installed`: enable, disable 여부와 상관없이 설치된 모든 노드를 보여줍니다 |
||||
* `not-installed`: 설치되지 않은 커스텀 노드의 목록을 보여줍니다. |
||||
* `all`: 모든 커스텀 노드의 목록을 보여줍니다. |
||||
* `snapshot`: 현재 설치된 커스텀 노드의 snapshot 정보를 보여줍니다. `show`롤 통해서 볼 경우는 json 출력 형태로 보여주며, `simple-show`를 통해서 볼 경우는 간단하게, 커밋 해시와 함께 보여줍니다. |
||||
* `snapshot-list`: ComfyUI-Manager/snapshots 에 저장된 snapshot 파일의 목록을 보여줍니다. |
||||
|
||||
### 3. 커스텀 노드 관리 하기 |
||||
|
||||
`[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
* `python cm-cli.py install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments` 와 같이 커스텀 노드의 이름을 나열해서 관리 기능을 적용할 수 있습니다. |
||||
* 커스텀 노드의 이름은 `show`를 했을 때 보여주는 이름이며, git repository의 이름입니다. |
||||
(추후 nickname 을 사용가능하돌고 업데이트 할 예정입니다.) |
||||
|
||||
`[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]]` |
||||
|
||||
* `update, disable, enable, fix` 기능은 all 로 지정 가능합니다. |
||||
|
||||
* 세부 동작 |
||||
* `install`: 지정된 커스텀 노드들을 설치합니다 |
||||
* `reinstall`: 지정된 커스텀 노드를 삭제하고 재설치 합니다. |
||||
* `uninstall`: 지정된 커스텀 노드들을 삭제합니다. |
||||
* `update`: 지정된 커스텀 노드들을 업데이트합니다. |
||||
* `disable`: 지정된 커스텀 노드들을 비활성화합니다. |
||||
* `enable`: 지정된 커스텀 노드들을 활성화합니다. |
||||
* `fix`: 지정된 커스텀 노드의 의존성을 고치기 위한 시도를 합니다. |
||||
|
||||
|
||||
### 4. 스냅샷 관리 기능 |
||||
* `python cm-cli.py save-snapshot ?[--output <snapshot .json/.yaml>]`: 현재의 snapshot을 저장합니다. |
||||
* --output 으로 임의의 경로에 .yaml 파일과 format으로 저장할 수 있습니다. |
||||
* `python cm-cli.py restore-snapshot <snapshot .json/.yaml>`: 지정된 snapshot으로 복구합니다. |
||||
* snapshot 경로에 파일이 존재하는 경우 해당 snapshot을 로드합니다. |
||||
* snapshot 경로에 파일이 존재하지 않는 경우 묵시적으로, ComfyUI-Manager/snapshots 에 있다고 가정합니다. |
||||
* `--pip-non-url`: PyPI 에 등록된 pip 패키지들에 대해서 복구를 수행 |
||||
* `--pip-non-local-url`: web URL에 등록된 pip 패키지들에 대해서 복구를 수행 |
||||
* `--pip-local-url`: local 경로를 지정하고 있는 pip 패키지들에 대해서 복구를 수행 |
||||
|
||||
|
||||
### 5. CLI only mode |
||||
|
||||
ComfyUI-Manager를 CLI로만 사용할 것인지를 설정할 수 있습니다. |
||||
|
||||
`cli-only-mode [enable|disable]` |
||||
|
||||
* security 혹은 policy 의 이유로 GUI 를 통한 ComfyUI-Manager 사용을 제한하고 싶은 경우 이 모드를 사용할 수 있습니다. |
||||
* CLI only mode를 적용할 경우 ComfyUI-Manager 가 매우 제한된 상태로 로드되어, 내부적으로 제공하는 web API가 비활성화 되며, 메인 메뉴에서도 Manager 버튼이 표시되지 않습니다. |
||||
|
||||
|
||||
### 6. 의존성 설치 |
||||
|
||||
`restore-dependencies` |
||||
|
||||
* `ComfyUI/custom_nodes` 하위 경로에 커스텀 노드들이 설치되어 있긴 하지만, 의존성이 설치되지 않은 경우 사용할 수 있습니다. |
||||
* colab 과 같이 cloud instance를 새로 시작하는 경우 의존성 재설치 및 설치 스크립트가 재실행 되어야 하는 경우 사용합니다. |
||||
* ComfyUI을 재설치할 경우, custom_nodes 경로만 백업했다가 재설치 할 경우 활용 가능합니다. |
||||
|
||||
|
||||
### 7. clear |
||||
|
||||
GUI에서 install, update를 하거나 snapshot 을 restore하는 경우 예약을 통해서 다음번 ComfyUI를 실행할 경우 실행되는 구조입니다. `clear` 는 이런 예약 상태를 clear해서, 아무런 사전 실행이 적용되지 않도록 합니다. |
@ -1,350 +0,0 @@
|
||||
{ |
||||
"https://github.com/longgui0318/comfyui-one-more-step": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-28 10:33:08" |
||||
}, |
||||
"https://github.com/TemryL/ComfyUI-IDM-VTON": { |
||||
"stars": 11, |
||||
"last_update": "2024-04-28 23:39:01" |
||||
}, |
||||
"https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-27 13:25:08" |
||||
}, |
||||
"https://github.com/umisetokikaze/comfyui_mergekit": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-28 07:21:00" |
||||
}, |
||||
"https://github.com/Video3DGenResearch/comfyui-batch-input-node": { |
||||
"stars": 1, |
||||
"last_update": "2024-04-28 15:21:17" |
||||
}, |
||||
"https://github.com/kijai/ComfyUI-DeepSeek-VL": { |
||||
"stars": 12, |
||||
"last_update": "2024-04-23 18:10:42" |
||||
}, |
||||
"https://github.com/GentlemanHu/ComfyUI-Notifier": { |
||||
"stars": 1, |
||||
"last_update": "2024-04-26 04:22:25" |
||||
}, |
||||
"https://github.com/nat-chan/comfyui-in-memory-transceiver": { |
||||
"stars": 1, |
||||
"last_update": "2024-04-24 04:11:05" |
||||
}, |
||||
"https://github.com/DrMWeigand/ComfyUI_LineBreakInserter": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-19 11:37:19" |
||||
}, |
||||
"https://github.com/WilliamStanford/visuallabs_comfyui_nodes": { |
||||
"stars": 1, |
||||
"last_update": "2024-04-16 21:53:02" |
||||
}, |
||||
"https://github.com/bruce007lee/comfyui-cleaner": { |
||||
"stars": 2, |
||||
"last_update": "2024-04-20 15:36:03" |
||||
}, |
||||
"https://github.com/ExponentialML/ComfyUI_LiveDirector": { |
||||
"stars": 32, |
||||
"last_update": "2024-04-09 19:01:49" |
||||
}, |
||||
"https://github.com/logtd/ComfyUI-MotionThiefExperiment": { |
||||
"stars": 34, |
||||
"last_update": "2024-04-09 01:00:51" |
||||
}, |
||||
"https://github.com/hy134300/comfyui-hb-node": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-09 09:56:22" |
||||
}, |
||||
"https://github.com/gameltb/io_comfyui": { |
||||
"stars": 3, |
||||
"last_update": "2024-04-06 04:40:05" |
||||
}, |
||||
"https://github.com/ALatentPlace/ComfyUI_yanc": { |
||||
"stars": 4, |
||||
"last_update": "2024-04-16 19:03:34" |
||||
}, |
||||
"https://github.com/Jiffies-64/ComfyUI-SaveImagePlus": { |
||||
"stars": 0, |
||||
"last_update": "2024-04-01 10:52:59" |
||||
}, |
||||
"https://github.com/kadirnar/ComfyUI-Adapter": { |
||||
"stars": 3, |
||||
"last_update": "2024-04-03 12:05:39" |
||||
}, |
||||
"https://github.com/Beinsezii/comfyui-amd-go-fast": { |
||||
"stars": 3, |
||||
"last_update": "2024-03-31 01:17:57" |
||||
}, |
||||
"https://github.com/sugarkwork/comfyui_psd": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-26 08:24:56" |
||||
}, |
||||
"https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": { |
||||
"stars": 15, |
||||
"last_update": "2024-03-17 04:30:01" |
||||
}, |
||||
"https://github.com/MushroomFleet/DJZ-Nodes": { |
||||
"stars": 3, |
||||
"last_update": "2024-03-18 11:18:42" |
||||
}, |
||||
"https://github.com/stavsap/ComfyUI-React-SDK": { |
||||
"stars": 5, |
||||
"last_update": "2024-03-17 21:54:21" |
||||
}, |
||||
"https://github.com/chaojie/ComfyUI-DynamiCrafter": { |
||||
"stars": 86, |
||||
"last_update": "2024-03-16 19:08:28" |
||||
}, |
||||
"https://github.com/cubiq/Comfy_Dungeon": { |
||||
"stars": 134, |
||||
"last_update": "2024-04-26 11:00:58" |
||||
}, |
||||
"https://github.com/dfl/comfyui-stylegan": { |
||||
"stars": 1, |
||||
"last_update": "2024-03-14 14:34:25" |
||||
}, |
||||
"https://github.com/christian-byrne/elimination-nodes": { |
||||
"stars": 4, |
||||
"last_update": "2024-04-09 18:51:29" |
||||
}, |
||||
"https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1": { |
||||
"stars": 12, |
||||
"last_update": "2024-03-08 10:11:44" |
||||
}, |
||||
"https://github.com/houdinii/comfy-magick": { |
||||
"stars": 4, |
||||
"last_update": "2024-03-11 06:40:54" |
||||
}, |
||||
"https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-05 13:31:31" |
||||
}, |
||||
"https://github.com/DeTK/ComfyUI-Switch": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-04 11:52:04" |
||||
}, |
||||
"https://github.com/GrindHouse66/ComfyUI-GH_Tools": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-10 13:27:14" |
||||
}, |
||||
"https://github.com/sdfxai/SDFXBridgeForComfyUI": { |
||||
"stars": 2, |
||||
"last_update": "2024-04-12 14:09:45" |
||||
}, |
||||
"https://github.com/SeedV/ComfyUI-SeedV-Nodes": { |
||||
"stars": 1, |
||||
"last_update": "2024-04-23 07:56:19" |
||||
}, |
||||
"https://github.com/mut-ex/comfyui-gligengui-node": { |
||||
"stars": 24, |
||||
"last_update": "2024-02-28 02:46:05" |
||||
}, |
||||
"https://github.com/unanan/ComfyUI-Dist": { |
||||
"stars": 4, |
||||
"last_update": "2024-02-28 10:03:50" |
||||
}, |
||||
"https://github.com/NicholasKao1029/comfyui-hook": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-07 05:50:56" |
||||
}, |
||||
"https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI": { |
||||
"stars": 13, |
||||
"last_update": "2024-03-10 01:04:02" |
||||
}, |
||||
"https://github.com/shadowcz007/comfyui-llamafile": { |
||||
"stars": 10, |
||||
"last_update": "2024-04-29 08:35:31" |
||||
}, |
||||
"https://github.com/gameltb/ComfyUI_paper_playground": { |
||||
"stars": 7, |
||||
"last_update": "2024-04-06 10:30:44" |
||||
}, |
||||
"https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui": { |
||||
"stars": 2, |
||||
"last_update": "2024-02-27 08:22:49" |
||||
}, |
||||
"https://github.com/tuckerdarby/ComfyUI-TDNodes": { |
||||
"stars": 3, |
||||
"last_update": "2024-02-19 17:00:55" |
||||
}, |
||||
"https://github.com/shadowcz007/comfyui-musicgen": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-13 08:45:12" |
||||
}, |
||||
"https://github.com/shadowcz007/comfyui-CLIPSeg": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-08 02:16:24" |
||||
}, |
||||
"https://github.com/dezi-ai/ComfyUI-AnimateLCM": { |
||||
"stars": 127, |
||||
"last_update": "2024-02-07 17:34:39" |
||||
}, |
||||
"https://github.com/stutya/ComfyUI-Terminal": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-05 16:47:28" |
||||
}, |
||||
"https://github.com/marcueberall/ComfyUI-BuildPath": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-06 07:57:33" |
||||
}, |
||||
"https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-04 21:15:22" |
||||
}, |
||||
"https://github.com/kappa54m/ComfyUI_Usability": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-05 14:49:45" |
||||
}, |
||||
"https://github.com/17Retoucher/ComfyUI_Fooocus": { |
||||
"stars": 50, |
||||
"last_update": "2024-02-24 07:33:29" |
||||
}, |
||||
"https://github.com/nkchocoai/ComfyUI-PromptUtilities": { |
||||
"stars": 6, |
||||
"last_update": "2024-02-21 14:47:42" |
||||
}, |
||||
"https://github.com/BadCafeCode/execution-inversion-demo-comfyui": { |
||||
"stars": 3, |
||||
"last_update": "2024-03-23 23:53:13" |
||||
}, |
||||
"https://github.com/unanan/ComfyUI-clip-interrogator": { |
||||
"stars": 18, |
||||
"last_update": "2024-02-01 09:46:57" |
||||
}, |
||||
"https://github.com/prismwastaken/comfyui-tools": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-05 14:34:56" |
||||
}, |
||||
"https://github.com/poisenbery/NudeNet-Detector-Provider": { |
||||
"stars": 1, |
||||
"last_update": "2024-02-26 02:11:27" |
||||
}, |
||||
"https://github.com/LarryJane491/ComfyUI-ModelUnloader": { |
||||
"stars": 1, |
||||
"last_update": "2024-01-14 08:22:39" |
||||
}, |
||||
"https://github.com/AIGODLIKE/ComfyUI-Studio": { |
||||
"stars": 185, |
||||
"last_update": "2024-04-03 03:59:31" |
||||
}, |
||||
"https://github.com/MrAdamBlack/CheckProgress": { |
||||
"stars": 1, |
||||
"last_update": "2024-01-10 08:02:18" |
||||
}, |
||||
"https://github.com/birnam/ComfyUI-GenData-Pack": { |
||||
"stars": 0, |
||||
"last_update": "2024-03-25 01:25:23" |
||||
}, |
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText": { |
||||
"stars": 38, |
||||
"last_update": "2024-01-07 11:48:05" |
||||
}, |
||||
"https://github.com/nidefawl/ComfyUI-nidefawl": { |
||||
"stars": 0, |
||||
"last_update": "2024-01-16 18:16:41" |
||||
}, |
||||
"https://github.com/kadirnar/comfyui_helpers": { |
||||
"stars": 2, |
||||
"last_update": "2024-03-04 16:25:30" |
||||
}, |
||||
"https://github.com/foglerek/comfyui-cem-tools": { |
||||
"stars": 1, |
||||
"last_update": "2024-01-13 23:22:07" |
||||
}, |
||||
"https://github.com/talesofai/comfyui-supersave": { |
||||
"stars": 1, |
||||
"last_update": "2023-12-27 02:05:53" |
||||
}, |
||||
"https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes": { |
||||
"stars": 2, |
||||
"last_update": "2024-02-22 08:34:44" |
||||
}, |
||||
"https://github.com/eigenpunk/ComfyUI-audio": { |
||||
"stars": 44, |
||||
"last_update": "2024-03-03 21:14:14" |
||||
}, |
||||
"https://github.com/Jaxkr/comfyui-terminal-command": { |
||||
"stars": 1, |
||||
"last_update": "2023-12-03 10:31:40" |
||||
}, |
||||
"https://github.com/BlueDangerX/ComfyUI-BDXNodes": { |
||||
"stars": 1, |
||||
"last_update": "2023-12-10 04:01:19" |
||||
}, |
||||
"https://github.com/ilovejohnwhite/UncleBillyGoncho": { |
||||
"stars": 0, |
||||
"last_update": "2024-02-29 00:16:42" |
||||
}, |
||||
"https://github.com/IvanZhd/comfyui-codeformer": { |
||||
"stars": 0, |
||||
"last_update": "2023-12-02 20:51:52" |
||||
}, |
||||
"https://github.com/alt-key-project/comfyui-dream-video-batches": { |
||||
"stars": 46, |
||||
"last_update": "2023-12-03 10:31:55" |
||||
}, |
||||
"https://github.com/oyvindg/ComfyUI-TrollSuite": { |
||||
"stars": 0, |
||||
"last_update": "2023-11-21 01:46:07" |
||||
}, |
||||
"https://github.com/romeobuilderotti/ComfyUI-EZ-Pipes": { |
||||
"stars": 3, |
||||
"last_update": "2023-11-15 22:00:49" |
||||
}, |
||||
"https://github.com/wormley/comfyui-wormley-nodes": { |
||||
"stars": 0, |
||||
"last_update": "2023-11-12 19:05:11" |
||||
}, |
||||
"https://github.com/dnl13/ComfyUI-dnl13-seg": { |
||||
"stars": 17, |
||||
"last_update": "2024-01-08 10:52:13" |
||||
}, |
||||
"https://github.com/phineas-pta/comfy-trt-test": { |
||||
"stars": 77, |
||||
"last_update": "2024-03-10 21:17:56" |
||||
}, |
||||
"https://github.com/Brandelan/ComfyUI_bd_customNodes": { |
||||
"stars": 1, |
||||
"last_update": "2023-10-09 00:40:26" |
||||
}, |
||||
"https://github.com/Jordach/comfy-consistency-vae": { |
||||
"stars": 68, |
||||
"last_update": "2023-11-06 20:50:40" |
||||
}, |
||||
"https://github.com/gameltb/ComfyUI_stable_fast": { |
||||
"stars": 174, |
||||
"last_update": "2024-04-01 13:30:57" |
||||
}, |
||||
"https://github.com/jn-jairo/jn_node_suite_comfyui": { |
||||
"stars": 5, |
||||
"last_update": "2024-01-11 20:39:36" |
||||
}, |
||||
"https://github.com/PluMaZero/ComfyUI-SpaceFlower": { |
||||
"stars": 4, |
||||
"last_update": "2023-12-09 05:55:15" |
||||
}, |
||||
"https://github.com/laksjdjf/ssd-1b-comfyui": { |
||||
"stars": 1, |
||||
"last_update": "2023-10-27 20:05:06" |
||||
}, |
||||
"https://github.com/flowtyone/comfyui-flowty-lcm": { |
||||
"stars": 62, |
||||
"last_update": "2023-10-23 12:08:55" |
||||
}, |
||||
"https://github.com/doucx/ComfyUI_WcpD_Utility_Kit": { |
||||
"stars": 1, |
||||
"last_update": "2024-01-06 19:07:45" |
||||
}, |
||||
"https://github.com/WSJUSA/Comfyui-StableSR": { |
||||
"stars": 32, |
||||
"last_update": "2023-10-18 12:40:30" |
||||
}, |
||||
"https://github.com/ltdrdata/ComfyUI-Workflow-Component": { |
||||
"stars": 181, |
||||
"last_update": "2024-04-26 01:39:09" |
||||
}, |
||||
"https://github.com/comfyanonymous/ComfyUI": { |
||||
"stars": 33530, |
||||
"last_update": "2024-04-29 00:08:28" |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,21 +0,0 @@
|
||||
{ |
||||
"imageio-ffmpeg": "imageio", |
||||
"imageio[ffmpeg]": "imageio", |
||||
"imageio_ffmpeg": "imageio", |
||||
"diffusers~=0.21.4": "diffusers", |
||||
"huggingface_hub": "huggingface-hub", |
||||
"numpy<1.24>=1.18": "numpy", |
||||
"numpy>=1.18.5, <1.25.0": "numpy", |
||||
"opencv-contrib-python": "opencv-contrib-python-headless", |
||||
"opencv-python": "opencv-contrib-python-headless", |
||||
"opencv-python-headless": "opencv-contrib-python-headless", |
||||
"opencv-python-headless[ffmpeg]<=4.7.0.72": "opencv-contrib-python-headless", |
||||
"opencv-python>=4.7.0.72": "opencv-contrib-python-headless", |
||||
"pandas<=1.5.1": "pandas", |
||||
"scikit-image==0.20.0": "scikit-image", |
||||
"scipy>=1.11.4": "scipy", |
||||
"segment_anything": "segment-anything", |
||||
"timm==0.6.5": "timm", |
||||
"timm>=0.4.12": "timm", |
||||
"transformers==4.26.1": "transformers" |
||||
} |
@ -0,0 +1,162 @@
|
||||
import requests |
||||
import sys |
||||
import re |
||||
from typing import Tuple, Optional |
||||
from packaging import version, specifiers |
||||
import re |
||||
import traceback |
||||
|
||||
|
||||
import re |
||||
from typing import Tuple, Optional |
||||
|
||||
|
||||
def parse_pip_spec(spec: str) -> Tuple[str, Optional[str], Optional[str]]: |
||||
match = re.match(r'([A-Za-z0-9_-]+)(\[[^\]]+\])?(.*)', spec) |
||||
if match: |
||||
package_name = match.group(1).strip() |
||||
extras = match.group(2)[1:-1] if match.group(2) else None |
||||
|
||||
version_spec = None |
||||
if match.group(3): |
||||
version_match = re.match(r'\(?([^\)]+)\)?', match.group(3).strip()) |
||||
if version_match: |
||||
version_spec = version_match.group(1).strip() |
||||
|
||||
return package_name, extras, version_spec |
||||
else: |
||||
raise ValueError(f"Invalid package spec: {spec}") |
||||
|
||||
|
||||
def fetch_package_versions(package_name): |
||||
url = f"https://pypi.org/pypi/{package_name}/json" |
||||
try: |
||||
response = requests.get(url) |
||||
response.raise_for_status() |
||||
data = response.json() |
||||
versions = data["releases"].keys() |
||||
print(f"Available versions of '{package_name}':") |
||||
return list(versions) |
||||
except requests.RequestException as e: |
||||
print(f"Error fetching package versions: {e}") |
||||
return [] |
||||
|
||||
|
||||
def fetch_required_dist(package_name, ver): |
||||
url = f"https://pypi.org/pypi/{package_name}/{ver}/json" |
||||
try: |
||||
response = requests.get(url) |
||||
response.raise_for_status() |
||||
data = response.json() |
||||
|
||||
requires_dist = data.get('info', {}).get('requires_dist', []) |
||||
|
||||
if not requires_dist: |
||||
print(f"No dependencies found for {package_name} version {ver}.") |
||||
return [] |
||||
|
||||
dependencies = [] |
||||
for dist in requires_dist: |
||||
dist = dist.split(";") |
||||
|
||||
dist_extra = None |
||||
if len(dist) > 1: |
||||
match = re.match(r'extra\s*==\s*"([^"]*)"', dist[1].strip()) |
||||
if match: |
||||
dist_extra = match.group(1).strip() |
||||
|
||||
match = re.match(r'([^=<>!~]+)(.*)', dist[0].strip()) |
||||
|
||||
if match: |
||||
pkg_name = match.group(1).strip() |
||||
ver_spec = match.group(2).strip() or None |
||||
|
||||
if ver_spec is not None and ver_spec.endswith(')'): |
||||
pass |
||||
|
||||
dependencies.append((pkg_name, dist_extra, ver_spec)) |
||||
|
||||
# print(f"Processed dependencies for {package_name} version {ver}: {dependencies}") |
||||
return dependencies |
||||
except requests.RequestException as e: |
||||
print(f"Error fetching required distribution info: {e}") |
||||
return [] |
||||
|
||||
|
||||
def filter_versions(versions, spec): |
||||
try: |
||||
specifier = specifiers.SpecifierSet(spec) if spec else specifiers.SpecifierSet() |
||||
|
||||
res = [] |
||||
for v in versions: |
||||
match = re.match(r'^([0-9.]+[0-9])', v) |
||||
if match: |
||||
if match.group(1) in specifier: |
||||
res.append(v) |
||||
|
||||
return res |
||||
except Exception as e: |
||||
print(f"ERROR: {e}") |
||||
traceback.print_exc() |
||||
|
||||
|
||||
def filter_extras(required_dist, extras): |
||||
return [x for x in required_dist if x[1] is None or x[1] == extras] |
||||
|
||||
|
||||
resolved = {} |
||||
|
||||
|
||||
def resolve_pip_spec(pkg_name, extras, ver): |
||||
global resolved |
||||
required_dist = fetch_required_dist(pkg_name, ver) |
||||
resolved[(pkg_name, extras, ver)] = required_dist |
||||
return filter_extras(required_dist, extras) |
||||
|
||||
|
||||
def best_match(pkg_name, version_spec): |
||||
global resolved |
||||
candidate_versions = fetch_package_versions(pkg_name) |
||||
|
||||
if version_spec: |
||||
candidate_versions = filter_versions(candidate_versions, version_spec) |
||||
|
||||
if candidate_versions: |
||||
return max(candidate_versions, key=version.parse) |
||||
else: |
||||
print("No matching versions found.") |
||||
return None |
||||
|
||||
|
||||
def resolve_recursively(items): |
||||
worklist = items |
||||
|
||||
while worklist: |
||||
pkg_name, extras, version_spec = worklist[0] |
||||
worklist = worklist[1:] |
||||
ver = best_match(pkg_name, version_spec) |
||||
|
||||
if (pkg_name, extras, ver) in resolved: |
||||
continue |
||||
|
||||
if ver is not None: |
||||
nexts = resolve_pip_spec(pkg_name, extras, ver) |
||||
worklist += nexts |
||||
|
||||
|
||||
def main(): |
||||
global resolved |
||||
if len(sys.argv) < 2: |
||||
print("Usage: python script.py <package_name>") |
||||
sys.exit(1) |
||||
|
||||
pkg_name, extras, version_spec = parse_pip_spec(sys.argv[1]) |
||||
ver = best_match(pkg_name, version_spec) |
||||
required_dist = resolve_pip_spec(pkg_name, extras, ver) |
||||
resolve_recursively(required_dist) |
||||
|
||||
print(f"Requirements: {resolved}") |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
main() |
Loading…
Reference in new issue