weshop-cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -7
- package/dist/client.d.ts +2 -0
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/2d-to-3d-image-converter.d.ts +2 -0
- package/dist/commands/2d-to-3d-image-converter.js +44 -0
- package/dist/commands/2d-to-3d-image-converter.js.map +1 -0
- package/dist/commands/ai-3d-rendering.d.ts +2 -0
- package/dist/commands/ai-3d-rendering.js +46 -0
- package/dist/commands/ai-3d-rendering.js.map +1 -0
- package/dist/commands/ai-action-figure-generators.d.ts +2 -0
- package/dist/commands/ai-action-figure-generators.js +49 -0
- package/dist/commands/ai-action-figure-generators.js.map +1 -0
- package/dist/commands/ai-aging.d.ts +2 -0
- package/dist/commands/ai-aging.js +52 -0
- package/dist/commands/ai-aging.js.map +1 -0
- package/dist/commands/ai-babe.d.ts +2 -0
- package/dist/commands/ai-babe.js +43 -0
- package/dist/commands/ai-babe.js.map +1 -0
- package/dist/commands/ai-bikini-model.d.ts +2 -0
- package/dist/commands/ai-bikini-model.js +54 -0
- package/dist/commands/ai-bikini-model.js.map +1 -0
- package/dist/commands/ai-bikini-photo-editor.d.ts +2 -0
- package/dist/commands/ai-bikini-photo-editor.js +43 -0
- package/dist/commands/ai-bikini-photo-editor.js.map +1 -0
- package/dist/commands/ai-bikini-video.d.ts +2 -0
- package/dist/commands/ai-bikini-video.js +48 -0
- package/dist/commands/ai-bikini-video.js.map +1 -0
- package/dist/commands/ai-christmas-photo.d.ts +2 -0
- package/dist/commands/ai-christmas-photo.js +49 -0
- package/dist/commands/ai-christmas-photo.js.map +1 -0
- package/dist/commands/ai-clothes-changer.d.ts +2 -0
- package/dist/commands/ai-clothes-changer.js +56 -0
- package/dist/commands/ai-clothes-changer.js.map +1 -0
- package/dist/commands/ai-collage-maker.d.ts +2 -0
- package/dist/commands/ai-collage-maker.js +54 -0
- package/dist/commands/ai-collage-maker.js.map +1 -0
- package/dist/commands/ai-dog.d.ts +2 -0
- package/dist/commands/ai-dog.js +57 -0
- package/dist/commands/ai-dog.js.map +1 -0
- package/dist/commands/ai-elf.d.ts +2 -0
- package/dist/commands/ai-elf.js +45 -0
- package/dist/commands/ai-elf.js.map +1 -0
- package/dist/commands/ai-face-merge.d.ts +2 -0
- package/dist/commands/ai-face-merge.js +63 -0
- package/dist/commands/ai-face-merge.js.map +1 -0
- package/dist/commands/ai-feet.d.ts +2 -0
- package/dist/commands/ai-feet.js +44 -0
- package/dist/commands/ai-feet.js.map +1 -0
- package/dist/commands/ai-flag-generator.d.ts +2 -0
- package/dist/commands/ai-flag-generator.js +49 -0
- package/dist/commands/ai-flag-generator.js.map +1 -0
- package/dist/commands/ai-generated-bikini-girls.d.ts +2 -0
- package/dist/commands/ai-generated-bikini-girls.js +52 -0
- package/dist/commands/ai-generated-bikini-girls.js.map +1 -0
- package/dist/commands/ai-generated-perfect-female-body.d.ts +2 -0
- package/dist/commands/ai-generated-perfect-female-body.js +52 -0
- package/dist/commands/ai-generated-perfect-female-body.js.map +1 -0
- package/dist/commands/ai-ghost-mannequin-generator.d.ts +2 -0
- package/dist/commands/ai-ghost-mannequin-generator.js +56 -0
- package/dist/commands/ai-ghost-mannequin-generator.js.map +1 -0
- package/dist/commands/ai-group-photo-generator.d.ts +2 -0
- package/dist/commands/ai-group-photo-generator.js +54 -0
- package/dist/commands/ai-group-photo-generator.js.map +1 -0
- package/dist/commands/ai-hair-color-changer.d.ts +2 -0
- package/dist/commands/ai-hair-color-changer.js +48 -0
- package/dist/commands/ai-hair-color-changer.js.map +1 -0
- package/dist/commands/ai-hairstyle-changer.d.ts +2 -0
- package/dist/commands/ai-hairstyle-changer.js +48 -0
- package/dist/commands/ai-hairstyle-changer.js.map +1 -0
- package/dist/commands/ai-hot-girl-image.d.ts +2 -0
- package/dist/commands/ai-hot-girl-image.js +52 -0
- package/dist/commands/ai-hot-girl-image.js.map +1 -0
- package/dist/commands/ai-image-animation.d.ts +2 -0
- package/dist/commands/ai-image-animation.js +60 -0
- package/dist/commands/ai-image-animation.js.map +1 -0
- package/dist/commands/ai-image-combiner.d.ts +2 -0
- package/dist/commands/ai-image-combiner.js +57 -0
- package/dist/commands/ai-image-combiner.js.map +1 -0
- package/dist/commands/ai-landscape-design-free.d.ts +2 -0
- package/dist/commands/ai-landscape-design-free.js +60 -0
- package/dist/commands/ai-landscape-design-free.js.map +1 -0
- package/dist/commands/ai-lingerie-models.d.ts +2 -0
- package/dist/commands/ai-lingerie-models.js +52 -0
- package/dist/commands/ai-lingerie-models.js.map +1 -0
- package/dist/commands/ai-photoshoot.d.ts +2 -0
- package/dist/commands/ai-photoshoot.js +81 -0
- package/dist/commands/ai-photoshoot.js.map +1 -0
- package/dist/commands/ai-poster-from-images.d.ts +2 -0
- package/dist/commands/ai-poster-from-images.js +73 -0
- package/dist/commands/ai-poster-from-images.js.map +1 -0
- package/dist/commands/ai-poster.d.ts +2 -0
- package/dist/commands/ai-poster.js +73 -0
- package/dist/commands/ai-poster.js.map +1 -0
- package/dist/commands/ai-room-planner.d.ts +2 -0
- package/dist/commands/ai-room-planner.js +49 -0
- package/dist/commands/ai-room-planner.js.map +1 -0
- package/dist/commands/ai-selfie.d.ts +2 -0
- package/dist/commands/ai-selfie.js +44 -0
- package/dist/commands/ai-selfie.js.map +1 -0
- package/dist/commands/ai-sexy-portrait.d.ts +2 -0
- package/dist/commands/ai-sexy-portrait.js +52 -0
- package/dist/commands/ai-sexy-portrait.js.map +1 -0
- package/dist/commands/ai-sexy-teens.d.ts +2 -0
- package/dist/commands/ai-sexy-teens.js +52 -0
- package/dist/commands/ai-sexy-teens.js.map +1 -0
- package/dist/commands/ai-spray-paint.d.ts +2 -0
- package/dist/commands/ai-spray-paint.js +49 -0
- package/dist/commands/ai-spray-paint.js.map +1 -0
- package/dist/commands/ai-swimsuit-model.d.ts +2 -0
- package/dist/commands/ai-swimsuit-model.js +44 -0
- package/dist/commands/ai-swimsuit-model.js.map +1 -0
- package/dist/commands/ai-tattoo-generator.d.ts +2 -0
- package/dist/commands/ai-tattoo-generator.js +48 -0
- package/dist/commands/ai-tattoo-generator.js.map +1 -0
- package/dist/commands/ai-text-remover-from-video.d.ts +2 -0
- package/dist/commands/ai-text-remover-from-video.js +37 -0
- package/dist/commands/ai-text-remover-from-video.js.map +1 -0
- package/dist/commands/ai-translate.d.ts +2 -0
- package/dist/commands/ai-translate.js +53 -0
- package/dist/commands/ai-translate.js.map +1 -0
- package/dist/commands/ai-video-enhancer.d.ts +2 -0
- package/dist/commands/ai-video-enhancer.js +49 -0
- package/dist/commands/ai-video-enhancer.js.map +1 -0
- package/dist/commands/ai-werewolf.d.ts +2 -0
- package/dist/commands/ai-werewolf.js +61 -0
- package/dist/commands/ai-werewolf.js.map +1 -0
- package/dist/commands/ai-xray-clothes.d.ts +2 -0
- package/dist/commands/ai-xray-clothes.js +45 -0
- package/dist/commands/ai-xray-clothes.js.map +1 -0
- package/dist/commands/ai-zombie.d.ts +2 -0
- package/dist/commands/ai-zombie.js +45 -0
- package/dist/commands/ai-zombie.js.map +1 -0
- package/dist/commands/aimodel.js +2 -2
- package/dist/commands/aimodel.js.map +1 -1
- package/dist/commands/aipose.js +2 -2
- package/dist/commands/aipose.js.map +1 -1
- package/dist/commands/aiproduct.js +2 -2
- package/dist/commands/aiproduct.js.map +1 -1
- package/dist/commands/anime-image-converter.d.ts +2 -0
- package/dist/commands/anime-image-converter.js +44 -0
- package/dist/commands/anime-image-converter.js.map +1 -0
- package/dist/commands/baby-face-generator.d.ts +2 -0
- package/dist/commands/baby-face-generator.js +59 -0
- package/dist/commands/baby-face-generator.js.map +1 -0
- package/dist/commands/bald-filter.d.ts +2 -0
- package/dist/commands/bald-filter.js +47 -0
- package/dist/commands/bald-filter.js.map +1 -0
- package/dist/commands/bangs-filter.d.ts +2 -0
- package/dist/commands/bangs-filter.js +45 -0
- package/dist/commands/bangs-filter.js.map +1 -0
- package/dist/commands/bikini-contest-photos.d.ts +2 -0
- package/dist/commands/bikini-contest-photos.js +52 -0
- package/dist/commands/bikini-contest-photos.js.map +1 -0
- package/dist/commands/bikini-try-on.d.ts +2 -0
- package/dist/commands/bikini-try-on.js +44 -0
- package/dist/commands/bikini-try-on.js.map +1 -0
- package/dist/commands/braces-filter.d.ts +2 -0
- package/dist/commands/braces-filter.js +44 -0
- package/dist/commands/braces-filter.js.map +1 -0
- package/dist/commands/brat-generator.d.ts +2 -0
- package/dist/commands/brat-generator.js +48 -0
- package/dist/commands/brat-generator.js.map +1 -0
- package/dist/commands/buzz-cut-ai.d.ts +2 -0
- package/dist/commands/buzz-cut-ai.js +52 -0
- package/dist/commands/buzz-cut-ai.js.map +1 -0
- package/dist/commands/celeb-ai.d.ts +2 -0
- package/dist/commands/celeb-ai.js +54 -0
- package/dist/commands/celeb-ai.js.map +1 -0
- package/dist/commands/chibi-maker.d.ts +2 -0
- package/dist/commands/chibi-maker.js +52 -0
- package/dist/commands/chibi-maker.js.map +1 -0
- package/dist/commands/clothing-magic-remover.d.ts +2 -0
- package/dist/commands/clothing-magic-remover.js +44 -0
- package/dist/commands/clothing-magic-remover.js.map +1 -0
- package/dist/commands/custom-bikini.d.ts +2 -0
- package/dist/commands/custom-bikini.js +52 -0
- package/dist/commands/custom-bikini.js.map +1 -0
- package/dist/commands/cute-anime-girl-ai-bikini.d.ts +2 -0
- package/dist/commands/cute-anime-girl-ai-bikini.js +52 -0
- package/dist/commands/cute-anime-girl-ai-bikini.js.map +1 -0
- package/dist/commands/demon-slayer-oc-maker.d.ts +2 -0
- package/dist/commands/demon-slayer-oc-maker.js +50 -0
- package/dist/commands/demon-slayer-oc-maker.js.map +1 -0
- package/dist/commands/dress-remover-magic-eraser.d.ts +2 -0
- package/dist/commands/dress-remover-magic-eraser.js +44 -0
- package/dist/commands/dress-remover-magic-eraser.js.map +1 -0
- package/dist/commands/expandimage.js +2 -2
- package/dist/commands/expandimage.js.map +1 -1
- package/dist/commands/face-forge.d.ts +2 -0
- package/dist/commands/face-forge.js +86 -0
- package/dist/commands/face-forge.js.map +1 -0
- package/dist/commands/fat-ai.d.ts +2 -0
- package/dist/commands/fat-ai.js +53 -0
- package/dist/commands/fat-ai.js.map +1 -0
- package/dist/commands/firered-image-edit.d.ts +2 -0
- package/dist/commands/firered-image-edit.js +61 -0
- package/dist/commands/firered-image-edit.js.map +1 -0
- package/dist/commands/flat-lay.d.ts +2 -0
- package/dist/commands/flat-lay.js +65 -0
- package/dist/commands/flat-lay.js.map +1 -0
- package/dist/commands/free-4k-video-upscaler.d.ts +2 -0
- package/dist/commands/free-4k-video-upscaler.js +42 -0
- package/dist/commands/free-4k-video-upscaler.js.map +1 -0
- package/dist/commands/free-ai-girlfriend-generator.d.ts +2 -0
- package/dist/commands/free-ai-girlfriend-generator.js +48 -0
- package/dist/commands/free-ai-girlfriend-generator.js.map +1 -0
- package/dist/commands/free-online-video-quality-enhancer.d.ts +2 -0
- package/dist/commands/free-online-video-quality-enhancer.js +42 -0
- package/dist/commands/free-online-video-quality-enhancer.js.map +1 -0
- package/dist/commands/free-sexy-ai-generator.d.ts +2 -0
- package/dist/commands/free-sexy-ai-generator.js +52 -0
- package/dist/commands/free-sexy-ai-generator.js.map +1 -0
- package/dist/commands/futuristic-elegance.d.ts +2 -0
- package/dist/commands/futuristic-elegance.js +54 -0
- package/dist/commands/futuristic-elegance.js.map +1 -0
- package/dist/commands/gemini-watermark-remover.d.ts +2 -0
- package/dist/commands/gemini-watermark-remover.js +37 -0
- package/dist/commands/gemini-watermark-remover.js.map +1 -0
- package/dist/commands/gender-swap.d.ts +2 -0
- package/dist/commands/gender-swap.js +53 -0
- package/dist/commands/gender-swap.js.map +1 -0
- package/dist/commands/ghibli-art-create.d.ts +2 -0
- package/dist/commands/ghibli-art-create.js +48 -0
- package/dist/commands/ghibli-art-create.js.map +1 -0
- package/dist/commands/grok-imagine-video.d.ts +2 -0
- package/dist/commands/grok-imagine-video.js +53 -0
- package/dist/commands/grok-imagine-video.js.map +1 -0
- package/dist/commands/grok-imagine.d.ts +2 -0
- package/dist/commands/grok-imagine.js +46 -0
- package/dist/commands/grok-imagine.js.map +1 -0
- package/dist/commands/hair-color-try-on.d.ts +2 -0
- package/dist/commands/hair-color-try-on.js +48 -0
- package/dist/commands/hair-color-try-on.js.map +1 -0
- package/dist/commands/happy-woman-bikini-ai-pic.d.ts +2 -0
- package/dist/commands/happy-woman-bikini-ai-pic.js +52 -0
- package/dist/commands/happy-woman-bikini-ai-pic.js.map +1 -0
- package/dist/commands/hot-bikini-models.d.ts +2 -0
- package/dist/commands/hot-bikini-models.js +52 -0
- package/dist/commands/hot-bikini-models.js.map +1 -0
- package/dist/commands/image-mixer.d.ts +2 -0
- package/dist/commands/image-mixer.js +57 -0
- package/dist/commands/image-mixer.js.map +1 -0
- package/dist/commands/image-to-sketch.d.ts +2 -0
- package/dist/commands/image-to-sketch.js +44 -0
- package/dist/commands/image-to-sketch.js.map +1 -0
- package/dist/commands/improve-video-quality-online-free.d.ts +2 -0
- package/dist/commands/improve-video-quality-online-free.js +42 -0
- package/dist/commands/improve-video-quality-online-free.js.map +1 -0
- package/dist/commands/kling.d.ts +2 -0
- package/dist/commands/kling.js +75 -0
- package/dist/commands/kling.js.map +1 -0
- package/dist/commands/logo-remover-from-video.d.ts +2 -0
- package/dist/commands/logo-remover-from-video.js +37 -0
- package/dist/commands/logo-remover-from-video.js.map +1 -0
- package/dist/commands/midjourney.d.ts +2 -0
- package/dist/commands/midjourney.js +54 -0
- package/dist/commands/midjourney.js.map +1 -0
- package/dist/commands/mugshot-creator.d.ts +2 -0
- package/dist/commands/mugshot-creator.js +45 -0
- package/dist/commands/mugshot-creator.js.map +1 -0
- package/dist/commands/murder-drones-oc.d.ts +2 -0
- package/dist/commands/murder-drones-oc.js +50 -0
- package/dist/commands/murder-drones-oc.js.map +1 -0
- package/dist/commands/outfit-generator.d.ts +2 -0
- package/dist/commands/outfit-generator.js +54 -0
- package/dist/commands/outfit-generator.js.map +1 -0
- package/dist/commands/personalized-swimsuit.d.ts +2 -0
- package/dist/commands/personalized-swimsuit.js +52 -0
- package/dist/commands/personalized-swimsuit.js.map +1 -0
- package/dist/commands/photo-to-bikini-ai.d.ts +2 -0
- package/dist/commands/photo-to-bikini-ai.js +44 -0
- package/dist/commands/photo-to-bikini-ai.js.map +1 -0
- package/dist/commands/pregnant-ai.d.ts +2 -0
- package/dist/commands/pregnant-ai.js +54 -0
- package/dist/commands/pregnant-ai.js.map +1 -0
- package/dist/commands/ps2-filter.d.ts +2 -0
- package/dist/commands/ps2-filter.js +45 -0
- package/dist/commands/ps2-filter.js.map +1 -0
- package/dist/commands/qwen-image-edit.d.ts +2 -0
- package/dist/commands/qwen-image-edit.js +64 -0
- package/dist/commands/qwen-image-edit.js.map +1 -0
- package/dist/commands/random-animal-generator.d.ts +2 -0
- package/dist/commands/random-animal-generator.js +49 -0
- package/dist/commands/random-animal-generator.js.map +1 -0
- package/dist/commands/remove-filter-from-photo.d.ts +2 -0
- package/dist/commands/remove-filter-from-photo.js +48 -0
- package/dist/commands/remove-filter-from-photo.js.map +1 -0
- package/dist/commands/remove-subtitles-from-video-online-free.d.ts +2 -0
- package/dist/commands/remove-subtitles-from-video-online-free.js +37 -0
- package/dist/commands/remove-subtitles-from-video-online-free.js.map +1 -0
- package/dist/commands/remove-text-from-video-online-free.d.ts +2 -0
- package/dist/commands/remove-text-from-video-online-free.js +37 -0
- package/dist/commands/remove-text-from-video-online-free.js.map +1 -0
- package/dist/commands/removebg.js +2 -2
- package/dist/commands/removebg.js.map +1 -1
- package/dist/commands/replace-face-in-video-online-free.d.ts +2 -0
- package/dist/commands/replace-face-in-video-online-free.js +56 -0
- package/dist/commands/replace-face-in-video-online-free.js.map +1 -0
- package/dist/commands/see-through-clothes-fitler.d.ts +2 -0
- package/dist/commands/see-through-clothes-fitler.js +45 -0
- package/dist/commands/see-through-clothes-fitler.js.map +1 -0
- package/dist/commands/seedance.d.ts +2 -0
- package/dist/commands/seedance.js +65 -0
- package/dist/commands/seedance.js.map +1 -0
- package/dist/commands/seedream.d.ts +2 -0
- package/dist/commands/seedream.js +85 -0
- package/dist/commands/seedream.js.map +1 -0
- package/dist/commands/sex-ai-generator.d.ts +2 -0
- package/dist/commands/sex-ai-generator.js +52 -0
- package/dist/commands/sex-ai-generator.js.map +1 -0
- package/dist/commands/sexy-ai-pics.d.ts +2 -0
- package/dist/commands/sexy-ai-pics.js +43 -0
- package/dist/commands/sexy-ai-pics.js.map +1 -0
- package/dist/commands/skin-color-changer.d.ts +2 -0
- package/dist/commands/skin-color-changer.js +48 -0
- package/dist/commands/skin-color-changer.js.map +1 -0
- package/dist/commands/sonic-oc.d.ts +2 -0
- package/dist/commands/sonic-oc.js +49 -0
- package/dist/commands/sonic-oc.js.map +1 -0
- package/dist/commands/sora-2.d.ts +2 -0
- package/dist/commands/sora-2.js +53 -0
- package/dist/commands/sora-2.js.map +1 -0
- package/dist/commands/sprunki-oc-maker.d.ts +2 -0
- package/dist/commands/sprunki-oc-maker.js +50 -0
- package/dist/commands/sprunki-oc-maker.js.map +1 -0
- package/dist/commands/square-face-icon-generator.d.ts +2 -0
- package/dist/commands/square-face-icon-generator.js +51 -0
- package/dist/commands/square-face-icon-generator.js.map +1 -0
- package/dist/commands/stardew-valley-portrait-maker.d.ts +2 -0
- package/dist/commands/stardew-valley-portrait-maker.js +49 -0
- package/dist/commands/stardew-valley-portrait-maker.js.map +1 -0
- package/dist/commands/string-bikini-beauty-contest.d.ts +2 -0
- package/dist/commands/string-bikini-beauty-contest.js +52 -0
- package/dist/commands/string-bikini-beauty-contest.js.map +1 -0
- package/dist/commands/swimsuit-try-on-haul.d.ts +2 -0
- package/dist/commands/swimsuit-try-on-haul.js +52 -0
- package/dist/commands/swimsuit-try-on-haul.js.map +1 -0
- package/dist/commands/video-resolution-enhancer-online-free.d.ts +2 -0
- package/dist/commands/video-resolution-enhancer-online-free.js +42 -0
- package/dist/commands/video-resolution-enhancer-online-free.js.map +1 -0
- package/dist/commands/video-upscaler-online-free.d.ts +2 -0
- package/dist/commands/video-upscaler-online-free.js +42 -0
- package/dist/commands/video-upscaler-online-free.js.map +1 -0
- package/dist/commands/video-watermark-remover.d.ts +2 -0
- package/dist/commands/video-watermark-remover.js +45 -0
- package/dist/commands/video-watermark-remover.js.map +1 -0
- package/dist/commands/virtualtryon.js +2 -2
- package/dist/commands/virtualtryon.js.map +1 -1
- package/dist/commands/wan-ai.d.ts +2 -0
- package/dist/commands/wan-ai.js +49 -0
- package/dist/commands/wan-ai.js.map +1 -0
- package/dist/commands/wild-graffiti.d.ts +2 -0
- package/dist/commands/wild-graffiti.js +49 -0
- package/dist/commands/wild-graffiti.js.map +1 -0
- package/dist/commands/z-image.d.ts +2 -0
- package/dist/commands/z-image.js +51 -0
- package/dist/commands/z-image.js.map +1 -0
- package/dist/index.js +231 -2
- package/dist/index.js.map +1 -1
- package/dist/printer.js +13 -3
- package/dist/printer.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# weshop-cli
|
|
2
2
|
|
|
3
|
-
One command. Studio-quality images.
|
|
3
|
+
One command. Studio-quality images and videos.
|
|
4
4
|
|
|
5
|
-
`weshop-cli` turns [WeShop AI](https://www.weshop.ai) into a command-line tool — virtual try-on, model swap, background replace, pose change, canvas expand, and more. Built for developers and AI agents who want to generate production-ready fashion
|
|
5
|
+
`weshop-cli` turns [WeShop AI](https://www.weshop.ai) into a command-line tool — virtual try-on, model swap, background replace, pose change, canvas expand, AI video generation, video enhancement, and much more. Built for developers and AI agents who want to generate production-ready fashion, product, and creative media without touching a browser.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Virtual try-on: put a garment onto a model reference
|
|
9
9
|
weshop virtualtryon --image ./garment.png --model-image ./model-photo.png --gen-version weshopPro --prompt-mode auto --aspect-ratio 2:3
|
|
10
10
|
|
|
11
|
-
#
|
|
12
|
-
weshop
|
|
11
|
+
# Generate a cinematic video from an image using Kling
|
|
12
|
+
weshop kling --image ./scene.png --prompt 'Camera slowly pans across a misty forest' --model Kling_3_0 --duration 8s
|
|
13
13
|
|
|
14
14
|
# Remove background and replace with white
|
|
15
15
|
weshop removebg --image ./product.png --mask-type autoSubjectSegment --bg-hex '#ffffff'
|
|
@@ -17,7 +17,7 @@ weshop removebg --image ./product.png --mask-type autoSubjectSegment --bg-hex '#
|
|
|
17
17
|
|
|
18
18
|
## Why
|
|
19
19
|
|
|
20
|
-
- **One command = one
|
|
20
|
+
- **One command = one task.** No curl, no JSON, no polling loops.
|
|
21
21
|
- **Agent-friendly.** Structured `[key]: value` output that any LLM agent can parse. No colors, no spinners, no noise.
|
|
22
22
|
- **Local files just work.** Pass a local path to `--image` and it auto-uploads. Same file won't upload twice (cached by path + size + mtime).
|
|
23
23
|
- **Blocking or async.** Waits for results by default. Add `--no-wait` to get the execution ID and poll later with `weshop status`.
|
|
@@ -46,6 +46,8 @@ npx tsx src/index.ts --help
|
|
|
46
46
|
|
|
47
47
|
Run `weshop <command> --help` to see each command's full parameters, enum values, and examples.
|
|
48
48
|
|
|
49
|
+
### Image editing (fashion & product)
|
|
50
|
+
|
|
49
51
|
| Command | What it does |
|
|
50
52
|
|---|---|
|
|
51
53
|
| `virtualtryon` | Put a garment onto a generated model with optional model/background references |
|
|
@@ -54,6 +56,140 @@ Run `weshop <command> --help` to see each command's full parameters, enum values
|
|
|
54
56
|
| `aipose` | Change the human pose while keeping the garment unchanged |
|
|
55
57
|
| `expandimage` | Expand the canvas — AI fills the new area to blend naturally |
|
|
56
58
|
| `removebg` | Remove the background or replace it with a solid color |
|
|
59
|
+
| `flat-lay` | Generate flat-lay product shots |
|
|
60
|
+
| `ai-ghost-mannequin-generator` | Ghost mannequin effect for apparel photography |
|
|
61
|
+
| `outfit-generator` | Generate outfit combinations |
|
|
62
|
+
| `ai-clothes-changer` | Change clothing on a model |
|
|
63
|
+
|
|
64
|
+
### AI image generation
|
|
65
|
+
|
|
66
|
+
| Command | What it does |
|
|
67
|
+
|---|---|
|
|
68
|
+
| `seedream` | Generate or edit images with Seedream 5.0 by ByteDance (text + up to 14 reference images) |
|
|
69
|
+
| `midjourney` | Generate images with Midjourney v6.1, v7, or Niji 6 |
|
|
70
|
+
| `grok-imagine` | Generate high-resolution images with xAI Aurora (Grok Imagine) |
|
|
71
|
+
| `z-image` | Text-to-image generation with Z-Image by Alibaba |
|
|
72
|
+
| `qwen-image-edit` | Edit or generate images with natural language using Qwen (up to 5 reference images) |
|
|
73
|
+
| `firered-image-edit` | Edit or generate images with FireRed open-source model (up to 3 reference images) |
|
|
74
|
+
|
|
75
|
+
### AI video generation
|
|
76
|
+
|
|
77
|
+
| Command | What it does |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `kling` | Generate cinematic videos from images using Kling (v2.1–v3.0, 3s–15s, optional audio) |
|
|
80
|
+
| `seedance` | Generate AI videos with Seedance 2.0 by ByteDance (up to 15s, optional audio) |
|
|
81
|
+
| `sora-2` | Generate cinematic videos with realistic physics using OpenAI Sora 2 |
|
|
82
|
+
| `wan-ai` | Generate AI videos from images and text using Wan AI |
|
|
83
|
+
| `grok-imagine-video` | Generate cinematic AI videos with native audio using xAI |
|
|
84
|
+
| `ai-bikini-video` | AI video generation for swimwear/fashion scenes |
|
|
85
|
+
| `ai-image-animation` | Animate a still image into a short video |
|
|
86
|
+
|
|
87
|
+
### Video editing & enhancement
|
|
88
|
+
|
|
89
|
+
| Command | What it does |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `ai-video-enhancer` | Upscale and enhance video quality (up to 4K) |
|
|
92
|
+
| `video-watermark-remover` | Remove watermarks from videos |
|
|
93
|
+
| `replace-face-in-video-online-free` | Replace a face in a video |
|
|
94
|
+
| `remove-subtitles-from-video-online-free` | Remove subtitles from a video |
|
|
95
|
+
| `ai-text-remover-from-video` | Remove text overlays from a video |
|
|
96
|
+
| `logo-remover-from-video` | Remove logos from a video |
|
|
97
|
+
| `gemini-watermark-remover` | Remove watermarks using Gemini |
|
|
98
|
+
| `remove-text-from-video-online-free` | Remove text from a video |
|
|
99
|
+
| `video-upscaler-online-free` | Upscale video resolution |
|
|
100
|
+
| `video-resolution-enhancer-online-free` | Enhance video resolution |
|
|
101
|
+
| `improve-video-quality-online-free` | General video quality improvement |
|
|
102
|
+
| `free-online-video-quality-enhancer` | Free video quality enhancement |
|
|
103
|
+
| `free-4k-video-upscaler` | Upscale video to 4K |
|
|
104
|
+
|
|
105
|
+
### Creative & fun image tools
|
|
106
|
+
|
|
107
|
+
| Command | What it does |
|
|
108
|
+
|---|---|
|
|
109
|
+
| `face-forge` | Face swap / face replacement |
|
|
110
|
+
| `ai-face-merge` | Merge two faces together |
|
|
111
|
+
| `gender-swap` | Swap gender in a photo |
|
|
112
|
+
| `ai-aging` | Age a person in a photo |
|
|
113
|
+
| `ai-hairstyle-changer` | Change hairstyle |
|
|
114
|
+
| `ai-hair-color-changer` | Change hair color |
|
|
115
|
+
| `hair-color-try-on` | Try on a hair color |
|
|
116
|
+
| `buzz-cut-ai` | Apply a buzz cut |
|
|
117
|
+
| `bald-filter` | Apply a bald filter |
|
|
118
|
+
| `bangs-filter` | Add bangs |
|
|
119
|
+
| `braces-filter` | Add braces |
|
|
120
|
+
| `skin-color-changer` | Change skin tone |
|
|
121
|
+
| `ai-selfie` | Generate an AI selfie |
|
|
122
|
+
| `ai-photoshoot` | Generate a professional AI photoshoot |
|
|
123
|
+
| `ai-poster` | Generate an AI poster |
|
|
124
|
+
| `ai-poster-from-images` | Create a poster from reference images |
|
|
125
|
+
| `image-to-sketch` | Convert a photo to a sketch |
|
|
126
|
+
| `anime-image-converter` | Convert a photo to anime style |
|
|
127
|
+
| `ghibli-art-create` | Convert a photo to Ghibli art style |
|
|
128
|
+
| `chibi-maker` | Turn a photo into a chibi character |
|
|
129
|
+
| `2d-to-3d-image-converter` | Convert a 2D image to 3D |
|
|
130
|
+
| `ai-3d-rendering` | Generate a 3D rendering |
|
|
131
|
+
| `ps2-filter` | Apply a PS2-era filter |
|
|
132
|
+
| `wild-graffiti` | Apply a graffiti art style |
|
|
133
|
+
| `ai-spray-paint` | Apply a spray paint effect |
|
|
134
|
+
| `image-mixer` | Mix two images together |
|
|
135
|
+
| `ai-image-combiner` | Combine multiple images |
|
|
136
|
+
| `ai-collage-maker` | Create a collage from images |
|
|
137
|
+
| `remove-filter-from-photo` | Remove a filter from a photo |
|
|
138
|
+
| `square-face-icon-generator` | Generate a square face icon |
|
|
139
|
+
| `mugshot-creator` | Create a mugshot-style photo |
|
|
140
|
+
|
|
141
|
+
### Character & avatar generators
|
|
142
|
+
|
|
143
|
+
| Command | What it does |
|
|
144
|
+
|---|---|
|
|
145
|
+
| `celeb-ai` | Generate a celebrity-style photo |
|
|
146
|
+
| `ai-babe` | Generate a fashion model photo |
|
|
147
|
+
| `free-ai-girlfriend-generator` | Generate an AI companion photo |
|
|
148
|
+
| `baby-face-generator` | Generate a baby face from two parents |
|
|
149
|
+
| `ai-dog` | Generate an AI dog photo |
|
|
150
|
+
| `ai-group-photo-generator` | Generate a group photo |
|
|
151
|
+
| `ai-action-figure-generators` | Turn a photo into an action figure |
|
|
152
|
+
| `sonic-oc` | Generate a Sonic OC |
|
|
153
|
+
| `demon-slayer-oc-maker` | Generate a Demon Slayer OC |
|
|
154
|
+
| `sprunki-oc-maker` | Generate a Sprunki OC |
|
|
155
|
+
| `murder-drones-oc` | Generate a Murder Drones OC |
|
|
156
|
+
| `stardew-valley-portrait-maker` | Generate a Stardew Valley portrait |
|
|
157
|
+
| `random-animal-generator` | Generate a random animal image |
|
|
158
|
+
| `ai-elf` | Generate an elf character |
|
|
159
|
+
| `ai-werewolf` | Generate a werewolf character |
|
|
160
|
+
| `ai-zombie` | Generate a zombie character |
|
|
161
|
+
| `ai-christmas-photo` | Generate a Christmas-themed photo |
|
|
162
|
+
| `brat-generator` | Generate a brat-style photo |
|
|
163
|
+
| `futuristic-elegance` | Generate a futuristic elegance portrait |
|
|
164
|
+
| `pregnant-ai` | Generate a pregnancy photo |
|
|
165
|
+
| `fat-ai` | Apply a weight-change filter |
|
|
166
|
+
|
|
167
|
+
### Swimwear & fashion try-on
|
|
168
|
+
|
|
169
|
+
| Command | What it does |
|
|
170
|
+
|---|---|
|
|
171
|
+
| `bikini-try-on` | Virtual bikini try-on |
|
|
172
|
+
| `swimsuit-try-on-haul` | Swimsuit try-on haul |
|
|
173
|
+
| `personalized-swimsuit` | Generate a personalized swimsuit photo |
|
|
174
|
+
| `custom-bikini` | Generate a custom bikini photo |
|
|
175
|
+
| `ai-swimsuit-model` | Generate a swimsuit model photo |
|
|
176
|
+
| `ai-bikini-model` | Generate a bikini model photo |
|
|
177
|
+
| `ai-bikini-photo-editor` | Edit a bikini photo |
|
|
178
|
+
| `photo-to-bikini-ai` | Convert a photo to a bikini photo |
|
|
179
|
+
|
|
180
|
+
### Other tools
|
|
181
|
+
|
|
182
|
+
| Command | What it does |
|
|
183
|
+
|---|---|
|
|
184
|
+
| `ai-translate` | Translate text in an image |
|
|
185
|
+
| `ai-tattoo-generator` | Generate a tattoo design |
|
|
186
|
+
| `ai-flag-generator` | Generate a custom flag |
|
|
187
|
+
| `ai-landscape-design-free` | Generate a landscape design |
|
|
188
|
+
| `ai-room-planner` | Generate a room layout |
|
|
189
|
+
| `see-through-clothes-fitler` | See-through clothing filter |
|
|
190
|
+
| `clothing-magic-remover` | Remove clothing in a photo |
|
|
191
|
+
| `dress-remover-magic-eraser` | Remove a dress in a photo |
|
|
192
|
+
| `ai-xray-clothes` | X-ray clothing filter |
|
|
57
193
|
| `upload` | Upload a local image and get a reusable URL |
|
|
58
194
|
| `status` | Check the status of a run by execution ID |
|
|
59
195
|
| `info` | List available preset IDs (scenes, models, background colors) |
|
|
@@ -92,6 +228,32 @@ Output:
|
|
|
92
228
|
url: https://ai-global-image.weshop.com/...
|
|
93
229
|
```
|
|
94
230
|
|
|
231
|
+
## Example: AI video generation
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Kling — cinematic video with audio
|
|
235
|
+
weshop kling \
|
|
236
|
+
--image ./scene.png \
|
|
237
|
+
--prompt 'Camera slowly pans across a misty forest' \
|
|
238
|
+
--model Kling_3_0 \
|
|
239
|
+
--duration 8s \
|
|
240
|
+
--generate-audio true
|
|
241
|
+
|
|
242
|
+
# Seedance — ByteDance video model
|
|
243
|
+
weshop seedance \
|
|
244
|
+
--image ./photo.png \
|
|
245
|
+
--prompt 'Person walks in slow motion' \
|
|
246
|
+
--model Seedance_15_Pro \
|
|
247
|
+
--duration 8s \
|
|
248
|
+
--aspect-ratio 16:9
|
|
249
|
+
|
|
250
|
+
# Sora 2 — OpenAI video model
|
|
251
|
+
weshop sora-2 \
|
|
252
|
+
--image ./landscape.png \
|
|
253
|
+
--prompt 'Time-lapse of clouds moving' \
|
|
254
|
+
--duration 8s
|
|
255
|
+
```
|
|
256
|
+
|
|
95
257
|
## Example: use preset IDs for best results
|
|
96
258
|
|
|
97
259
|
For `aimodel` and `aiproduct`, using preset scene/model IDs gives the best quality. List them with `info`:
|
|
@@ -114,7 +276,7 @@ weshop aimodel \
|
|
|
114
276
|
Don't want to wait? Add `--no-wait` and poll later:
|
|
115
277
|
|
|
116
278
|
```bash
|
|
117
|
-
weshop
|
|
279
|
+
weshop kling --image ./scene.png --prompt 'Ocean waves' --no-wait
|
|
118
280
|
# [submitted]
|
|
119
281
|
# executionId: abc123
|
|
120
282
|
# [info]
|
|
@@ -122,7 +284,7 @@ weshop aipose --image ./model.png --prompt 'arms crossed' --batch 1 --no-wait
|
|
|
122
284
|
|
|
123
285
|
weshop status abc123
|
|
124
286
|
# [result]
|
|
125
|
-
# agent:
|
|
287
|
+
# agent: kling v1.0
|
|
126
288
|
# status: Success
|
|
127
289
|
# ...
|
|
128
290
|
```
|
package/dist/client.d.ts
CHANGED
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { getCachedUrl, setCachedUrl } from "./cache.js";
|
|
4
|
-
const BASE_URL = "https://openapi.weshop.ai/openapi";
|
|
4
|
+
const BASE_URL = process.env.WESHOP_BASE_URL || "https://openapi.weshop.ai/openapi";
|
|
5
5
|
// ── helpers ──────────────────────────────────────────────────────────
|
|
6
6
|
function getApiKey() {
|
|
7
7
|
const key = process.env.WESHOP_API_KEY;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,QAAQ,GAAG,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "Convert the uploaded 2d image into a 3d image based on the user instructions.";
|
|
5
|
+
export const twoDTo3dImageConverterCmd = new Command("2d-to-3d-image-converter")
|
|
6
|
+
.summary("AI 2D to 3D image converter — transform a flat 2D image into a 3D rendered version")
|
|
7
|
+
.description("Convert a 2D image into a 3D rendered version using AI.\n\n" +
|
|
8
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
9
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop 2d-to-3d-image-converter --image ./drawing.png\n" +
|
|
12
|
+
" weshop 2d-to-3d-image-converter --image ./sketch.png --prompt 'Convert to 3D with realistic lighting and depth'\n" +
|
|
13
|
+
" weshop 2d-to-3d-image-converter --image ./flat-art.png --batch 2")
|
|
14
|
+
.requiredOption("--image <path|url>", "Input 2D image — local file path or URL")
|
|
15
|
+
.option("--prompt <text>", "Custom 3D conversion instruction")
|
|
16
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
17
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
18
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
try {
|
|
21
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
22
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: [imageUrl] };
|
|
23
|
+
if (opts.batch != null)
|
|
24
|
+
params.batchCount = opts.batch;
|
|
25
|
+
const input = { originalImage: imageUrl };
|
|
26
|
+
if (opts.taskName)
|
|
27
|
+
input.taskName = opts.taskName;
|
|
28
|
+
const body = { agent: { name: "2d-to-3d-image-converter", version: "v1.0" }, input, params };
|
|
29
|
+
const { executionId } = await submitRun(body);
|
|
30
|
+
printSubmitted(executionId);
|
|
31
|
+
if (opts.wait !== false) {
|
|
32
|
+
printPollResult(await waitForCompletion(executionId));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log("[info]");
|
|
36
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
printError(err);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=2d-to-3d-image-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2d-to-3d-image-converter.js","sourceRoot":"","sources":["../../src/commands/2d-to-3d-image-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAAG,+EAA+E,CAAC;AAEvG,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC;KAC7E,OAAO,CAAC,oFAAoF,CAAC;KAC7F,WAAW,CACV,6DAA6D;IAC7D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,2DAA2D;IAC3D,qHAAqH;IACrH,oEAAoE,CACrE;KACA,cAAc,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/G,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "A screenshot of a 3D modeling software interface, showing the Blender viewport. At the center of the scene is a highly realistic 3D model of the main subject of this image in full and realistic rendering, with no visible topology or wireframe. The model is placed on a gray 3D grid ground with an infinite horizon. The software UI toolbars are visible along the side, a coordinate axis widget appears in the corner, the viewport is in solid shading mode, and the overall scene represents a 3D asset design workspace. 4k resolution and ratio.";
|
|
5
|
+
export const ai3dRenderingCmd = new Command("ai-3d-rendering")
|
|
6
|
+
.summary("AI 3D rendering — transform a photo into a Blender-style 3D model viewport screenshot")
|
|
7
|
+
.description("Transform any photo into a realistic 3D model displayed in a Blender viewport interface,\n" +
|
|
8
|
+
"complete with software UI, grid ground, and coordinate axis widget.\n\n" +
|
|
9
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
10
|
+
" Blender viewport screenshot with a realistic 3D model of the subject, gray grid ground,\n" +
|
|
11
|
+
" software UI toolbars, solid shading mode, 4K resolution.\n\n" +
|
|
12
|
+
"Examples:\n" +
|
|
13
|
+
" weshop ai-3d-rendering --image ./object.png\n" +
|
|
14
|
+
" weshop ai-3d-rendering --image ./car.png --prompt 'Blender 3D model of the car, wireframe mode'\n" +
|
|
15
|
+
" weshop ai-3d-rendering --image ./character.png --batch 2")
|
|
16
|
+
.requiredOption("--image <path|url>", "Input image — local file path or URL")
|
|
17
|
+
.option("--prompt <text>", "Custom 3D rendering instruction")
|
|
18
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
19
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
20
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
21
|
+
.action(async (opts) => {
|
|
22
|
+
try {
|
|
23
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
24
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: [imageUrl] };
|
|
25
|
+
if (opts.batch != null)
|
|
26
|
+
params.batchCount = opts.batch;
|
|
27
|
+
const input = { originalImage: imageUrl };
|
|
28
|
+
if (opts.taskName)
|
|
29
|
+
input.taskName = opts.taskName;
|
|
30
|
+
const body = { agent: { name: "ai-3d-rendering", version: "v1.0" }, input, params };
|
|
31
|
+
const { executionId } = await submitRun(body);
|
|
32
|
+
printSubmitted(executionId);
|
|
33
|
+
if (opts.wait !== false) {
|
|
34
|
+
printPollResult(await waitForCompletion(executionId));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log("[info]");
|
|
38
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
printError(err);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=ai-3d-rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-3d-rendering.js","sourceRoot":"","sources":["../../src/commands/ai-3d-rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,+hBAA+hB,CAAC;AAEliB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;KAC3D,OAAO,CAAC,uFAAuF,CAAC;KAChG,WAAW,CACV,4FAA4F;IAC5F,yEAAyE;IACzE,mDAAmD;IACnD,6FAA6F;IAC7F,gEAAgE;IAChE,aAAa;IACb,iDAAiD;IACjD,qGAAqG;IACrG,4DAA4D,CAC7D;KACA,cAAc,CAAC,oBAAoB,EAAE,sCAAsC,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;KAC5D,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/G,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "A commercially available figure of the character from the illustration is produced in 1/ scale, featuring a realistic style and environment. The figure is displayed on a computer desk with a round, clear acrylic base devoid of any text. The ZBrush modeling process of the figure is shown on the computer screen. Beside the computer screen, a BANDAl-style toy box printed with the original illustration is positioned";
|
|
5
|
+
export const aiActionFigureGeneratorsCmd = new Command("ai-action-figure-generators")
|
|
6
|
+
.summary("AI action figure generator — turn a photo or character into a collectible action figure display")
|
|
7
|
+
.description("Transform a photo or character illustration into a collectible action figure display\n" +
|
|
8
|
+
"with a BANDAI-style toy box and ZBrush modeling screen. Image is optional.\n\n" +
|
|
9
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
10
|
+
" 1/scale figure on a computer desk with acrylic base, ZBrush screen, BANDAI-style box.\n\n" +
|
|
11
|
+
"Examples:\n" +
|
|
12
|
+
" weshop ai-action-figure-generators --image ./character.png\n" +
|
|
13
|
+
" weshop ai-action-figure-generators --image ./person.png --prompt 'Action figure in superhero pose, Marvel style box'\n" +
|
|
14
|
+
" weshop ai-action-figure-generators --batch 2")
|
|
15
|
+
.option("--image <path|url>", "Reference character or person image — local file path or URL (optional)")
|
|
16
|
+
.option("--prompt <text>", "Custom action figure description")
|
|
17
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
18
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
try {
|
|
22
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
23
|
+
if (opts.batch != null)
|
|
24
|
+
params.batchCount = opts.batch;
|
|
25
|
+
const input = {};
|
|
26
|
+
if (opts.taskName)
|
|
27
|
+
input.taskName = opts.taskName;
|
|
28
|
+
if (opts.image) {
|
|
29
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
30
|
+
params.images = [imageUrl];
|
|
31
|
+
input.originalImage = imageUrl;
|
|
32
|
+
}
|
|
33
|
+
const body = { agent: { name: "ai-action-figure-generators", version: "v1.0" }, input, params };
|
|
34
|
+
const { executionId } = await submitRun(body);
|
|
35
|
+
printSubmitted(executionId);
|
|
36
|
+
if (opts.wait !== false) {
|
|
37
|
+
printPollResult(await waitForCompletion(executionId));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log("[info]");
|
|
41
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
printError(err);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=ai-action-figure-generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-action-figure-generators.js","sourceRoot":"","sources":["../../src/commands/ai-action-figure-generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,iaAAia,CAAC;AAEpa,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,OAAO,CAAC,6BAA6B,CAAC;KAClF,OAAO,CAAC,iGAAiG,CAAC;KAC1G,WAAW,CACV,wFAAwF;IACxF,gFAAgF;IAChF,mDAAmD;IACnD,6FAA6F;IAC7F,aAAa;IACb,gEAAgE;IAChE,0HAA0H;IAC1H,gDAAgD,CACjD;KACA,MAAM,CAAC,oBAAoB,EAAE,yEAAyE,CAAC;KACvG,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC5G,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "what will this person look like when he/she is 60";
|
|
5
|
+
export const aiAgingCmd = new Command("ai-aging")
|
|
6
|
+
.summary("AI age progression — transform a portrait to show how the person will look older")
|
|
7
|
+
.description("Apply AI age progression to a portrait photo. Shows how the person will look at an older age.\n\n" +
|
|
8
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
9
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop ai-aging --image ./person.png\n" +
|
|
12
|
+
" weshop ai-aging --image ./person.png --prompt 'What will this person look like at 80'\n" +
|
|
13
|
+
" weshop ai-aging --image ./person.png --batch 2")
|
|
14
|
+
.requiredOption("--image <path|url>", "Input portrait image — local file path or URL")
|
|
15
|
+
.option("--prompt <text>", "Custom aging instruction (default: age to 60)")
|
|
16
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
17
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
18
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
try {
|
|
21
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
22
|
+
const params = {
|
|
23
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
24
|
+
images: [imageUrl],
|
|
25
|
+
};
|
|
26
|
+
if (opts.batch != null)
|
|
27
|
+
params.batchCount = opts.batch;
|
|
28
|
+
const input = { originalImage: imageUrl };
|
|
29
|
+
if (opts.taskName)
|
|
30
|
+
input.taskName = opts.taskName;
|
|
31
|
+
const body = {
|
|
32
|
+
agent: { name: "ai-aging", version: "v1.0" },
|
|
33
|
+
input,
|
|
34
|
+
params,
|
|
35
|
+
};
|
|
36
|
+
const { executionId } = await submitRun(body);
|
|
37
|
+
printSubmitted(executionId);
|
|
38
|
+
if (opts.wait !== false) {
|
|
39
|
+
const data = await waitForCompletion(executionId);
|
|
40
|
+
printPollResult(data);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log("[info]");
|
|
44
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
printError(err);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=ai-aging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-aging.js","sourceRoot":"","sources":["../../src/commands/ai-aging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAAG,mDAAmD,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAC9C,OAAO,CAAC,kFAAkF,CAAC;KAC3F,WAAW,CACV,mGAAmG;IACnG,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,0CAA0C;IAC1C,2FAA2F;IAC3F,kDAAkD,CACnD;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;YAC9C,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;YAC5C,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
|
|
5
|
+
export const aiBabeCmd = new Command("ai-babe")
|
|
6
|
+
.summary("AI babe generator — generate photorealistic attractive images from a person photo")
|
|
7
|
+
.description("Generate photorealistic attractive images from a person photo. Prompt is required.\n\n" +
|
|
8
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
9
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop ai-babe --image ./person.png --prompt 'Bikini model on a yacht'\n" +
|
|
12
|
+
" weshop ai-babe --image ./person.png --prompt 'Glamorous evening gown, red carpet' --batch 2")
|
|
13
|
+
.requiredOption("--image <path|url>", "Input person photo — local file path or URL")
|
|
14
|
+
.requiredOption("--prompt <text>", "Describe the desired scene")
|
|
15
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
16
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
17
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
try {
|
|
20
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
21
|
+
const params = { textDescription: opts.prompt, images: [imageUrl] };
|
|
22
|
+
if (opts.batch != null)
|
|
23
|
+
params.batchCount = opts.batch;
|
|
24
|
+
const input = { originalImage: imageUrl };
|
|
25
|
+
if (opts.taskName)
|
|
26
|
+
input.taskName = opts.taskName;
|
|
27
|
+
const body = { agent: { name: "ai-babe", version: "v1.0" }, input, params };
|
|
28
|
+
const { executionId } = await submitRun(body);
|
|
29
|
+
printSubmitted(executionId);
|
|
30
|
+
if (opts.wait !== false) {
|
|
31
|
+
printPollResult(await waitForCompletion(executionId));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
console.log("[info]");
|
|
35
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
printError(err);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=ai-babe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-babe.js","sourceRoot":"","sources":["../../src/commands/ai-babe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,qIAAqI,CAAC;AAExI,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC5C,OAAO,CAAC,mFAAmF,CAAC;KAC5F,WAAW,CACV,wFAAwF;IACxF,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,4EAA4E;IAC5E,+FAA+F,CAChG;KACA,cAAc,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KACnF,cAAc,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
|
|
5
|
+
export const aiBikiniModelCmd = new Command("ai-bikini-model")
|
|
6
|
+
.summary("AI bikini model — transform a person photo into a bikini model image or video")
|
|
7
|
+
.description("Transform a portrait or full-body photo into a bikini model image or video.\n\n" +
|
|
8
|
+
"Generated type (--generated-type):\n" +
|
|
9
|
+
" video Generate a short video (default)\n" +
|
|
10
|
+
" image Generate a still image\n\n" +
|
|
11
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
12
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
13
|
+
"When --generated-type is video, results come back in video[N].url.\n" +
|
|
14
|
+
"When --generated-type is image, results come back in image[N].url.\n\n" +
|
|
15
|
+
"Examples:\n" +
|
|
16
|
+
" weshop ai-bikini-model --image ./person.png --prompt 'Bikini model on a beach'\n" +
|
|
17
|
+
" weshop ai-bikini-model --image ./person.png --generated-type image --batch 2\n" +
|
|
18
|
+
" weshop ai-bikini-model --image ./person.png --generated-type video --no-wait")
|
|
19
|
+
.requiredOption("--image <path|url>", "Input portrait or full-body photo — local file path or URL")
|
|
20
|
+
.requiredOption("--prompt <text>", "Describe the desired bikini model scene")
|
|
21
|
+
.option("--generated-type <type>", "Output type: video (default) or image")
|
|
22
|
+
.option("--batch <count>", "Number of outputs to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
23
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
24
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
try {
|
|
27
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
28
|
+
const params = {
|
|
29
|
+
textDescription: opts.prompt,
|
|
30
|
+
images: [imageUrl],
|
|
31
|
+
generatedType: opts.generatedType ?? "video",
|
|
32
|
+
};
|
|
33
|
+
if (opts.batch != null)
|
|
34
|
+
params.batchCount = opts.batch;
|
|
35
|
+
const input = { originalImage: imageUrl };
|
|
36
|
+
if (opts.taskName)
|
|
37
|
+
input.taskName = opts.taskName;
|
|
38
|
+
const body = { agent: { name: "ai-bikini-model", version: "v1.0" }, input, params };
|
|
39
|
+
const { executionId } = await submitRun(body);
|
|
40
|
+
printSubmitted(executionId);
|
|
41
|
+
if (opts.wait !== false) {
|
|
42
|
+
printPollResult(await waitForCompletion(executionId));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log("[info]");
|
|
46
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
printError(err);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=ai-bikini-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-bikini-model.js","sourceRoot":"","sources":["../../src/commands/ai-bikini-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,qIAAqI,CAAC;AAExI,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;KAC3D,OAAO,CAAC,+EAA+E,CAAC;KACxF,WAAW,CACV,iFAAiF;IACjF,sCAAsC;IACtC,8CAA8C;IAC9C,sCAAsC;IACtC,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,sEAAsE;IACtE,wEAAwE;IACxE,aAAa;IACb,oFAAoF;IACpF,kFAAkF;IAClF,gFAAgF,CACjF;KACA,cAAc,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAClG,cAAc,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KAC5E,MAAM,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM;YAC5B,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;SAC7C,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|