diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 122a1ae..27bcdb1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,14 +7,18 @@ on: paths: - "pyproject.toml" +permissions: + issues: write + jobs: publish-node: name: Publish Custom Node to registry runs-on: ubuntu-latest + if: ${{ github.repository_owner == 'Kosinkadink' }} steps: - name: Check out code uses: actions/checkout@v4 - name: Publish Custom Node - uses: Comfy-Org/publish-node-action@main + uses: Comfy-Org/publish-node-action@v1 with: - personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} ## Add your own personal access token to your Github Repository secrets and reference it here. \ No newline at end of file + personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} ## Add your own personal access token to your Github Repository secrets and reference it here. diff --git a/videohelpersuite/latent_preview.py b/videohelpersuite/latent_preview.py index 95ce9b6..1966d7a 100644 --- a/videohelpersuite/latent_preview.py +++ b/videohelpersuite/latent_preview.py @@ -39,6 +39,8 @@ class WrappedPreviewer(latent_preview.LatentPreviewer): self.last_time = self.last_time + num_previews/self.rate if num_previews > num_images: num_previews = num_images + elif num_previews <= 0: + return None if self.first_preview: self.first_preview = False serv.send_sync('VHS_latentpreview', {'length':num_images, 'rate': self.rate}) @@ -54,13 +56,14 @@ class WrappedPreviewer(latent_preview.LatentPreviewer): def process_previews(self, image_tensor, ind, leng): image_tensor = self.decode_latent_to_preview(image_tensor) if image_tensor.size(1) > 512 or image_tensor.size(2) > 512: - n = image.size(0) - if image_tensor.size(1) > image_tensor.size(2): - height = (512 * image_tensor.size(2)) // image_tensor.size(1) - image_tensor = F.interpolate(image_tensor, (512,height,3), mode='bilinear') + image_tensor = image_tensor.movedim(-1,0) + if image_tensor.size(2) < image_tensor.size(3): + height = (512 * image_tensor.size(2)) // image_tensor.size(3) + image_tensor = F.interpolate(image_tensor, (height,512), mode='bilinear') else: - width = (512 * image_tensor.size(1)) // image_tensor.size(2) - image_tensor = F.interpolate(image_tensor, (width, 512,3), mode='bilinear') + width = (512 * image_tensor.size(3)) // image_tensor.size(2) + image_tensor = F.interpolate(image_tensor, (512, width), mode='bilinear') + image_tensor = image_tensor.movedim(0,-1) previews_ubyte = (((image_tensor + 1.0) / 2.0).clamp(0, 1) # change scale from -1..1 to 0..1 .mul(0xFF) # to 0..255 ).to(device="cpu", dtype=torch.uint8) diff --git a/videohelpersuite/load_video_nodes.py b/videohelpersuite/load_video_nodes.py index d14bfa1..05c23e6 100644 --- a/videohelpersuite/load_video_nodes.py +++ b/videohelpersuite/load_video_nodes.py @@ -11,7 +11,7 @@ import time import folder_paths from comfy.utils import common_upscale, ProgressBar -from utils import extra_config +import nodes from comfy.k_diffusion.utils import FolderOfImages from .logger import logger from .utils import BIGMAX, DIMMAX, calculate_file_hash, get_sorted_dir_files_from_directory,\ @@ -24,10 +24,10 @@ video_extensions = ['webm', 'mp4', 'mkv', 'gif', 'mov'] VHSLoadFormats = { 'None': {}, 'AnimateDiff': {'target_rate': 8, 'dim': (8,0,512,512)}, - 'Mochi': {'target_rate': 24, 'dim': (8,0,848,480), 'frames':(6,1)}, - 'LTXV': {'target_rate': 24, 'dim': (8,0,768,512), 'frames':(8,1)}, - 'Hunyuan': {'target_rate': 24, 'dim': (8,0,848,480), 'frames':(4,1)}, - 'Cosmos': {'target_rate': 24, 'dim': (8,0,1280,704), 'frames':(8,1)}, + 'Mochi': {'target_rate': 24, 'dim': (16,0,848,480), 'frames':(6,1)}, + 'LTXV': {'target_rate': 24, 'dim': (32,0,768,512), 'frames':(8,1)}, + 'Hunyuan': {'target_rate': 24, 'dim': (16,0,848,480), 'frames':(4,1)}, + 'Cosmos': {'target_rate': 24, 'dim': (16,0,1280,704), 'frames':(8,1)}, } """ External plugins may add additional formats to utils.extra_config.VHSLoadFormats @@ -35,13 +35,13 @@ In addition to shorthand options, direct widget names will map a given dict to o Adding a third arguement to a frames tuple can enable strict checks on number of loaded frames, i.e (8,1,True) """ -if not hasattr(extra_config, 'VHSLoadFormats'): - extra_config.VHSLoadFormats = {} +if not hasattr(nodes, 'VHSLoadFormats'): + nodes.VHSLoadFormats = {} def get_load_formats(): #TODO: check if {**extra_config.VHSLoafFormats, **VHSLoadFormats} has minimum version formats = {} - formats.update(extra_config.VHSLoadFormats) + formats.update(nodes.VHSLoadFormats) formats.update(VHSLoadFormats) return (list(formats.keys()), {'default': 'AnimateDiff', 'formats': formats})