MeUtils 2025.6.13.10.18.19__py3-none-any.whl → 2025.6.13.20.54.5__py3-none-any.whl

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.
@@ -358,7 +358,7 @@ meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,20
358
358
  meutils/apis/chatglm/__init__.py,sha256=uFuc9qY-ZjGqbsfcdGZkcEkhjATojWpzk2WXTTujc70,271
359
359
  meutils/apis/chatglm/chat.py,sha256=VARWXh3A2PnoScBgvfgAJC2C8OfVy9vWs3Q-qKg6F8Q,4253
360
360
  meutils/apis/chatglm/glm_video.py,sha256=9LA9pyeIcDDHXGhJbZSJfjxrLeNC3SIuCKJwDIXRKR8,14015
361
- meutils/apis/chatglm/glm_video_api.py,sha256=fr4hizU-jEjCdXvd8VpYY0XthEJfLQCcyBYwyd9bQq0,3898
361
+ meutils/apis/chatglm/glm_video_api.py,sha256=Wa1uBHIOwPWoAz90RMDeo-nMOvQzdQast1ZMBDTKq4Y,3964
362
362
  meutils/apis/chatglm/images.py,sha256=k2EtOpksgAfJb2MD6kLOKKem713kamTIinRmgr8_3n0,1974
363
363
  meutils/apis/chatglm/temp.py,sha256=zYe6JGUHVfb77T_TdNsdmpTs2D9OyqDTUEkblDAIoYY,17811
364
364
  meutils/apis/chatglm/x.py,sha256=lI86Cd6SN4noCN5HM9gRugcVmjHDtxDTV4m-7Bj61N0,24312
@@ -371,7 +371,7 @@ meutils/apis/dreamfaceapp/videos.py,sha256=xtz4GYRTdVE-D7xxFpSaH5Kl5ewXDx9Ogvtkf
371
371
  meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
372
372
  meutils/apis/fal/chat.py,sha256=yReABuCWfXOEt7tZax03XIX5KBlfBo2DlEOp2EpiGOM,2641
373
373
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
374
- meutils/apis/fal/images.py,sha256=TKMlgIHVsMbI6tLvM24JILkyFU5RWzWVIlAk2CiqYfo,12499
374
+ meutils/apis/fal/images.py,sha256=x64Gh53sJkmnaNeQzwE1swQLnyalQDfcgk8ccc7-GOM,12775
375
375
  meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
376
376
  meutils/apis/fal/kling_videos.py,sha256=kL4SRpZafRSCRODtiNqeXauxfamHNdcBTE65BrG1rVA,2554
377
377
  meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
@@ -493,7 +493,7 @@ meutils/apis/replicateai/raw.py,sha256=v_Hztoa8uplkkUSDrnxlhc4qizW3-4tyra685Qnwx
493
493
  meutils/apis/runwayml/__init__.py,sha256=90oL_3o8YkFPYm4R4PCxd3m9hgnHpOCLr0u-X4BDg-w,244
494
494
  meutils/apis/runwayml/gen.py,sha256=JrfegC4pI2r7DprDLGMi5px0K1C1pSgopnz0lcJU5RY,5194
495
495
  meutils/apis/search/__init__.py,sha256=1lg0ogEBgtwTi3XvkL5hMfSd14A6YNLO7M9itEJmaYI,244
496
- meutils/apis/search/_web_search.py,sha256=h_rj0jKDbP1ZPvMPPHMhAnfVnjmW6I4XqEddrjYeq5U,2842
496
+ meutils/apis/search/_web_search.py,sha256=Mr-0KIY9WYacHwgKfKT7b9estIqgOAWqi95Ws-FbX3g,2842
497
497
  meutils/apis/search/ark_web_search.py,sha256=i6lrw-AinuH22Gds89TTmrvfJKYMFzBAOc-_1uEAPZI,2013
498
498
  meutils/apis/search/baichuan.py,sha256=OUD0TH7KzqSxtuRJgjJPWO8XRQIoUwW5RX7lWMo7BXw,268
499
499
  meutils/apis/search/metaso.py,sha256=4Ui-8MEwk6iymXth2xKnzluGm71B7k8EFa6uEet69G8,8713
@@ -543,7 +543,7 @@ meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81o
543
543
  meutils/apis/volcengine_apis/__init__.py,sha256=gtu5ZNCc3up8bzgrCi10uwhsC04HpuCEEPXR_iVCNJE,244
544
544
  meutils/apis/volcengine_apis/images.py,sha256=F9LXXptesnASB_Al7rkEshb2S5r3PixZd8w0mif5468,5463
545
545
  meutils/apis/volcengine_apis/tasks.py,sha256=da2wYs2bqjYte_P2aFbSdKkLBaghuAj6vVKIlgdMg5A,4495
546
- meutils/apis/volcengine_apis/videos.py,sha256=GEgO_f1Dw7UYrSr6sdswRj3c-o71w-KrIhG1KLqSZQQ,5029
546
+ meutils/apis/volcengine_apis/videos.py,sha256=Y_iHacAsmhhryJVN5KEfW4dEu6Jb1sWvUXRpUcfijZY,6995
547
547
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
548
548
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
549
549
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -587,12 +587,12 @@ meutils/cmds/subprocess_demo.py,sha256=oTeTIx8k6XwtOT6hZpmy9XNcRErzilqWcdoxcrVcH
587
587
  meutils/config_utils/__init__.py,sha256=GhgsStfGJDC8F_YgC6X5Jnj9HkgXJXxeYiJWTAkWKTo,271
588
588
  meutils/config_utils/manager.py,sha256=du-8e9Zdgnrn9e0b4GPR6FGtuQY7DLWNJqgkoU0TZ48,3147
589
589
  meutils/config_utils/lark_utils/__init__.py,sha256=Gf-5Y8uZiqY9jdbfiIboL92MQjOTOo0ZZ245PGxCbaY,297
590
- meutils/config_utils/lark_utils/common.py,sha256=6ZOwVJLPdWHN-kLv3z4yLgpyiAhWEOVTTYycVGisFfE,14408
590
+ meutils/config_utils/lark_utils/common.py,sha256=wBeztamCzJ6SqFsf5tyTv_MU3pzl8j01NF2VZ2FKjZA,14445
591
591
  meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfHOno5NxNAio,293
592
592
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
593
593
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
594
594
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
595
- meutils/data/VERSION,sha256=JNH9zQA88tzrEzSLodfqEcVuhfnTNU01lc-l6IRPwUo,19
595
+ meutils/data/VERSION,sha256=0dH_i6pOi26OK-cY5Pnx9eReRsj1wA0_0yy_GNgF0qw,19
596
596
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
597
597
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
598
598
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -674,7 +674,7 @@ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs
674
674
  meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
675
675
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
676
676
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
677
- meutils/llm/check_utils.py,sha256=-6cOZDci4WMwwnp5YloSGSXcaI9SU45X-BXgExI9Ltc,8109
677
+ meutils/llm/check_utils.py,sha256=jp6AxgUZ1uej3XMZmRuD9jitkNsHHQ1qnolbsXIPVZk,8585
678
678
  meutils/llm/clients.py,sha256=qZa9WC85Ah4tdEd-EI_P_038mnJLq_z-smaJdwJp-EM,2956
679
679
  meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
680
680
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
@@ -685,7 +685,7 @@ meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf
685
685
  meutils/llm/completions/chat_gemini.py,sha256=0x9HQxuDAHoWJ79JoaEKKWVNy4PRyd-Et-j8V93NqkY,4395
686
686
  meutils/llm/completions/chat_plus.py,sha256=RPYQqx4vc57gevcz0gUS7QPvGm0M12ktAspMKJtoeuk,7727
687
687
  meutils/llm/completions/chat_spark.py,sha256=xsKe3xkOwF5Hs7pkuJSDmeUgwy7xPOJhjuvM_w4BpmI,11412
688
- meutils/llm/completions/chat_videos.py,sha256=P3Yz34dkNlxCxzOuKHJ9pHIA4UXK3Y5RXPzVnQjb9rc,2915
688
+ meutils/llm/completions/chat_videos.py,sha256=UR67oB6yrlDinT_Ij13VQDbdZLFsC4FeEuRCoTjiVQ0,2917
689
689
  meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
690
690
  meutils/llm/completions/deep2x.py,sha256=Fo5cC1jXOFFXOZeRGk9IpCZVCQc8vgOizuYFuPaWujA,3746
691
691
  meutils/llm/completions/delilegal.py,sha256=mr53ps7I33SC8Fjy4rma-xoNF-mLgwdZfHgdSOyLtQY,5131
@@ -716,8 +716,8 @@ meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8m
716
716
  meutils/llm/openai_polling/chat.py,sha256=PT7Xb621RIa7SSwdlOCq5OMgk7nSyN7cBaBW4qQwpvg,8180
717
717
  meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
718
718
  meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
719
- meutils/llm/openai_utils/adapters.py,sha256=qZ0mzjHB9o6m6PwytCy1Ukr3GQZ7qqAjzbsAzryXp6k,2307
720
- meutils/llm/openai_utils/common.py,sha256=67HF4OHNRHfquerdgaHASdLFnHipwVpwUFnAhQQcaX0,10465
719
+ meutils/llm/openai_utils/adapters.py,sha256=-6e-gpSYVPUouP9o8leAdOOCNuk-dtndUhzMOyvQpUM,3425
720
+ meutils/llm/openai_utils/common.py,sha256=H24wag3LD2RqKV_sXD4OBa4VtmWh8JNUo5h5xvHVmAk,10557
721
721
  meutils/llm/openai_utils/tool_outputs.py,sha256=6mNkm4btgy0uzF98gdmcah1bYmoflXdLz2Sqm0KC_LQ,1224
722
722
  meutils/llm/output_parsers/__init__.py,sha256=EGKvgUD47ReyV5Z9RXDCrdDLgfKMHdoayzsXVmBuQxw,3474
723
723
  meutils/llm/prompts/__init__.py,sha256=VlEEViFoUSRS0EF1rHJXHh9Ik9FpvAiR1luKjHOsUc4,8580
@@ -729,7 +729,7 @@ meutils/logging/handlers.py,sha256=ngnVVN7wcFQZsSTnc-1nP5ZRCp-jbO1Qt7mjNfum_-8,7
729
729
  meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,2937
730
730
  meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
731
731
  meutils/math_utils/__init__.py,sha256=vg71MyiPyDCeFDwi42MLSfAFQl43a3uNLIgerY0eDRA,284
732
- meutils/math_utils/common.py,sha256=8MpWwgYLdvrpouTd9YJzcAwH-KNq58J4mY87dvd7e3Q,1086
732
+ meutils/math_utils/common.py,sha256=fiNTFB2MWFXq536T6AFYAD6Y67lXz4nDpoVd2qQdjBw,1128
733
733
  meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
734
734
  meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
735
735
  meutils/notice/feishu.py,sha256=ydQuZgzmL3j5u0ySkLKShRemM4UYYOKa-vIsnezKWEU,4626
@@ -825,7 +825,7 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
825
825
  meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
826
826
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
827
827
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
828
- meutils/schemas/image_types.py,sha256=OEd2cPUokvp-um3n1NGGLwJhsPn9YH9rnvQHVuLooDA,16252
828
+ meutils/schemas/image_types.py,sha256=pYlsfwmJQ8wOS6TcV0lOGPaKPakcygOZlkOS0zlDc9k,16350
829
829
  meutils/schemas/jimeng_types.py,sha256=z0mAICgNE0Yaq09_puzgMfHOP-QKWiZqqMlFbLVHtmY,1995
830
830
  meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
831
831
  meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
@@ -860,8 +860,8 @@ meutils/schemas/yuanbao_types.py,sha256=bI_CF9ybaJ1ux8NgP5gEi33k_K_vHmlyD09fxzhY
860
860
  meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVIU,272
861
861
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
862
862
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
863
- meutils/schemas/oneapi/_types.py,sha256=dptYhHym-Wyd4JuPhbeGBXmVLX8jhaya2gKlAcPpwAM,2987
864
- meutils/schemas/oneapi/common.py,sha256=0RFlX0yKc1uQ1pRa1vZwzLx2ywWXDYReKpo6waxN3kw,41461
863
+ meutils/schemas/oneapi/_types.py,sha256=_QAl69kZ7tEU2UMmSSCNIVHg_0lc8bm5CKqNa0eDvBc,3091
864
+ meutils/schemas/oneapi/common.py,sha256=DptA_rZhSjMMeAd0WnrPq6IDCsKTRqEqKmoflz6Gv4w,42165
865
865
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
866
866
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
867
867
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -915,7 +915,7 @@ meutils/settings/base.py,sha256=kb3QVS2eUFWyGgvegtSK4cqJFF76J1JctTSzCVqc1Mo,264
915
915
  meutils/settings/demo.py,sha256=Ht3t6LREQsKa5W2owNrOZNAoZfS-zItIFNwGhhPj-4k,484
916
916
  meutils/str_utils/Translator.py,sha256=tfvNQIeVCqmX9yW6jobeibDHG6X-XecSSAx9kJIFFyw,1258
917
917
  meutils/str_utils/__init__.py,sha256=7rVAWR0bbxVvuWFwyC0ZedpY1QVSmrrLwLIfPAfjWqM,10238
918
- meutils/str_utils/json_utils.py,sha256=H65v9vZtXVuYyRCQAfyQ4KZzAecwjvjBH6qTy0hCDE4,4033
918
+ meutils/str_utils/json_utils.py,sha256=10QhpmzAWI0hERdQb5JDeNqphI5QWFTjeZJhiYkuI4c,2827
919
919
  meutils/str_utils/regular_expression.py,sha256=HqEcPNyUHBBo7oJlwOFNpiFiO5NCXB8hD41nI1826fU,6161
920
920
  meutils/str_utils/__translater/__init__.py,sha256=mtDbKL_Qdkeq5VPVO1M4ejf9H8PzKM5h7iepqkBG8N0,277
921
921
  meutils/str_utils/__translater/tencent.py,sha256=1E_56l6-A49Yuz2ZrMKxt-QJfcf0xDYN2X0dg58Dytk,1408
@@ -990,9 +990,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
990
990
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
991
991
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
992
992
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
993
- MeUtils-2025.6.13.10.18.19.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
994
- MeUtils-2025.6.13.10.18.19.dist-info/METADATA,sha256=sRxHPUBepYlRFRYnlGDtVubhURWaV8rmVs-zCi7PBbE,32834
995
- MeUtils-2025.6.13.10.18.19.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
996
- MeUtils-2025.6.13.10.18.19.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
997
- MeUtils-2025.6.13.10.18.19.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
998
- MeUtils-2025.6.13.10.18.19.dist-info/RECORD,,
993
+ MeUtils-2025.6.13.20.54.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
994
+ MeUtils-2025.6.13.20.54.5.dist-info/METADATA,sha256=PMyIpnC-2n84f6UqMoQ1XwnVskZMRD85jTGJJW8LCzs,32833
995
+ MeUtils-2025.6.13.20.54.5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
996
+ MeUtils-2025.6.13.20.54.5.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
997
+ MeUtils-2025.6.13.20.54.5.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
998
+ MeUtils-2025.6.13.20.54.5.dist-info/RECORD,,
@@ -102,15 +102,16 @@ async def generate(request: ImageRequest, n: int = 30): # 兼容dalle3
102
102
 
103
103
  # VideoResult
104
104
  if __name__ == '__main__':
105
- api_key = "e21bd630f681c4d90b390cd609720483.WSFVgA3Kk1wNCX0mN"
105
+ api_key = "88b82799f3234a5aad130b0f74c7eb85.tBMTRh0h1IqbvMaw"
106
106
  # api_key = "7d10426c06afa81e8d7401d97781249c.DbqlSsicRtaUdKXI" # 新号
107
+ # api_key = "e21bd630f681c4d90b390cd609720483.WSFVgA3Kk1wNCX0mN"
107
108
 
108
109
  request = VideoRequest(
109
110
  model='cogvideox-flash',
110
111
  # model='cogvideox'
111
112
 
112
113
  )
113
- # r = arun(create_task(request, api_key=api_key))
114
+ r = arun(create_task(request, api_key=api_key))
114
115
  pass
115
116
 
116
117
  request = ImageRequest(prompt="https://oss.ffire.cc/files/kling_watermark.png 让这个女人笑起来")
@@ -57,7 +57,7 @@ async def generate(request: ImageRequest, api_key: Optional[str] = None):
57
57
  token = api_key or await get_next_token_for_polling(feishu_url=FEISHU_URL, from_redis=True, check_token=check)
58
58
 
59
59
  arguments = request.model_dump(exclude_none=True)
60
- width, height = request.size.split("x")
60
+ width, height = (request.size or "1024x1024").split("x")
61
61
  if request.model.startswith("fal-ai/recraft"): # https://fal.ai/models/fal-ai/recraft-v3/api#queue-submit
62
62
  arguments = {
63
63
  **arguments,
@@ -157,7 +157,7 @@ async def generate(request: ImageRequest, api_key: Optional[str] = None):
157
157
 
158
158
  aspect_ratios = {'21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'}
159
159
 
160
- if aspect_ratio := request.prompt2aspect_ratio(aspect_ratios): # 提示词优先级最高
160
+ if aspect_ratio := request.prompt2aspect_ratio(aspect_ratios): # 提示词优先级最高
161
161
  arguments["aspect_ratio"] = aspect_ratio
162
162
 
163
163
  elif request.aspect_ratio in aspect_ratios:
@@ -250,6 +250,20 @@ if __name__ == '__main__':
250
250
  prompt = '把小鸭子放在女人的T恤上面。\nhttps://s3.ffire.cc/cdn/20250530/tEzZKkhp3tKbNzva6mgC2T\nhttps://s3.ffire.cc/cdn/20250530/AwHJpuJuNg5w3sVbH4PZdv'
251
251
  request = ImageRequest(prompt=prompt, model=model)
252
252
 
253
+ data = {
254
+ "model": "fal-ai/flux-pro/kontext",
255
+ "prompt": "https://s3.ffire.cc/files/3_4.webp 老虎换个姿势",
256
+ "size": 'auto'
257
+ }
258
+
259
+
260
+ request = ImageRequest(**data)
261
+
262
+ print(request)
263
+
264
+ arun(generate(request))
265
+
266
+
253
267
  # request = ImageRequest(prompt='https://oss.ffire.cc/files/kling_watermark.png The woman smiled', model=model)
254
268
  #
255
269
  # request = ImageRequest(prompt="https://oss.ffire.cc/files/kling_watermark.png 让这个女人哭起来", model=model)
@@ -264,9 +278,9 @@ if __name__ == '__main__':
264
278
 
265
279
  # arun(AsyncClient(key=token).key)
266
280
 
267
- FEISHU_URL = "https://xchatllm.feishu.cn/sheets/QB6Psj8zrhB4JStEW0acI4iInNg?sheet=ef2e81"
268
-
269
- tokens = arun(get_series(FEISHU_URL))
281
+ # FEISHU_URL = "https://xchatllm.feishu.cn/sheets/QB6Psj8zrhB4JStEW0acI4iInNg?sheet=ef2e81"
282
+ #
283
+ # tokens = arun(get_series(FEISHU_URL))
270
284
  # tokens = ["578e143c-702d-46a1-8c02-d451bc3e155b:bb531a95f79c6026e7bc7ab676163c71"]
271
285
  # tokens = """
272
286
  # 30e9fe5c-75d0-4bdd-b11d-ff17dbe4bba5:3de8535e2fa4d9347e599a845cf3e7b8
@@ -37,7 +37,7 @@ class Completions(object):
37
37
  # search_completion = await zhipuai_client.chat.completions.create(**data)
38
38
  # logger.debug(search_completion.model_dump_json(indent=4))
39
39
  #
40
- # if results := json_path(search_completion, '$..[keywords,query,search_result]'):
40
+ # if results := json_path(search_completion, '$..[keywords,query,search_result]'):
41
41
  # data = dict(zip(["keywords", "query", "search_result"], results))
42
42
  # if search_result2md:
43
43
  # global df
@@ -9,13 +9,14 @@
9
9
  # @Description :
10
10
 
11
11
  from meutils.pipe import *
12
+ from meutils.io.files_utils import to_url
12
13
  from meutils.decorators.retry import retrying
13
14
  from meutils.llm.clients import AsyncClient
14
15
  from meutils.schemas.openai_types import CompletionRequest
15
16
  from meutils.notice.feishu import send_message_for_volc as send_message
16
17
 
17
18
  from meutils.db.redis_db import redis_aclient
18
- from meutils.llm.check_utils import check_token_for_volc
19
+ from meutils.llm.check_utils import check_token_for_volc as check
19
20
  from meutils.config_utils.lark_utils import get_next_token_for_polling, get_series
20
21
 
21
22
  from fastapi import APIRouter, File, UploadFile, Query, Form, Depends, Request, HTTPException, status, BackgroundTasks
@@ -27,7 +28,7 @@ FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?shee
27
28
  async def get_valid_token():
28
29
  tokens = await get_series(FEISHU_URL)
29
30
  for token in tokens:
30
- if await check_token_for_volc(token):
31
+ if await check(token):
31
32
  logger.debug(f"有效 {token}")
32
33
 
33
34
  return token
@@ -38,26 +39,46 @@ async def get_valid_token():
38
39
  send_message(_, n=3)
39
40
 
40
41
 
42
+ # check_image_and_video = partial(check, purpose='video and image')
43
+
44
+
41
45
  @retrying(max_retries=5)
42
46
  async def create_task(request: CompletionRequest, api_key: Optional[str] = None):
43
- api_key = api_key or await get_next_token_for_polling(feishu_url=FEISHU_URL, from_redis=True, check_token=check)
47
+ # api_key = "e32b1693-147e-40db-a83a-82f85cfa6360" # 欠费
48
+ api_key = api_key or await get_next_token_for_polling(feishu_url=FEISHU_URL, check_token=check)
49
+
50
+ logger.debug(f"api_key: {api_key}")
44
51
 
45
52
  payload = {
46
- "model": "doubao-seedance-1-0-pro-250528",
47
- "content": [
53
+ "model": request.model,
54
+ }
55
+
56
+ if hasattr(request, 'content'):
57
+ payload["content"] = request.content
58
+
59
+ elif image_urls := request.last_urls.get("image_url"):
60
+ payload["content"] = [
48
61
  {
49
62
  "type": "text",
50
- "text": "无人机以极快速度穿越复杂障碍或自然奇观,带来沉浸式飞行体验 --resolution 1080p --duration 5 --camerafixed false"
63
+ "text": request.last_user_content
51
64
  },
52
65
  {
53
66
  "type": "image_url",
54
67
  "image_url": {
55
- "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_i2v.png"
68
+ "url": image_urls[-1]
69
+ # "url": await to_url(image_urls[-1], filename=".png")
70
+
56
71
  }
57
- }
58
- ]
59
- }
60
- payload = request.model_dump(exclude_none=True)
72
+ }]
73
+ else:
74
+ payload["content"] = [
75
+ {
76
+ "type": "text",
77
+ "text": request.last_user_content
78
+ }]
79
+
80
+ logger.debug(payload)
81
+
61
82
  client = AsyncClient(base_url="https://ark.cn-beijing.volces.com/api/v3", api_key=api_key)
62
83
 
63
84
  response = await client.post(
@@ -74,7 +95,7 @@ async def create_task(request: CompletionRequest, api_key: Optional[str] = None)
74
95
 
75
96
  async def get_task(task_id: str):
76
97
  token = await redis_aclient.get(task_id) # 绑定对应的 token
77
- token = token and token.decode()
98
+ api_key = token and token.decode()
78
99
  if not token:
79
100
  raise HTTPException(status_code=404, detail="TaskID not found")
80
101
 
@@ -92,22 +113,16 @@ async def get_task(task_id: str):
92
113
  if __name__ == "__main__":
93
114
  # api_key = "07139a08-e360-44e2-ba31-07f379bf99ed" # {'id': 'cgt-20250611164343-w2bzq'} todo 过期调用get
94
115
 
95
- api_key = "b4c77fc4-b0a1-43e9-b151-9cea13fcc04d" # 欠费
116
+ api_key = "c2449725-f758-42af-8f2c-e05b68dd06ad" # 欠费
117
+
118
+ api_key = None
96
119
 
97
120
  request = CompletionRequest(
98
121
  model="doubao-seedance-1-0-pro-250528",
99
- content=[
100
- {
101
- "type": "text",
102
- "text": "无人机以极快速度穿越复杂障碍或自然奇观,带来沉浸式飞行体验 --resolution 1080p --duration 5 --camerafixed false"
103
- },
104
-
105
- {
106
- "type": "image_url",
107
- "image_url": {
108
- "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seepro_i2v.png"
109
- }
110
- }
122
+ # model="doubao-seaweed-241128",
123
+ messages=[
124
+ {"role": "user",
125
+ "content": "无人机以极快速度穿越复杂障碍或自然奇观,带来沉浸式飞行体验 --resolution 1080p --duration 5 --camerafixed false"}
111
126
  ]
112
127
  )
113
128
  # r = arun(create_task(request, api_key))
@@ -122,12 +137,18 @@ if __name__ == "__main__":
122
137
  arun(get_valid_token())
123
138
 
124
139
  """
140
+ {'id': 'cgt-20250613160030-2dvd7',
141
+ 'model': 'doubao-seedance-1-0-pro-250528',
142
+ 'status': 'running',
143
+ 'created_at': 1749801631,
144
+ 'updated_at': 1749801631}
145
+
125
146
  openai.NotFoundError: Error code: 404 - {'error': {'code': 'ModelNotOpen', 'message': 'Your account 2107813928 has not activated the model doubao-seedance-1-0-pro. Please activate the model service in the Ark Console. Request id: 021749718307793fc1441381f8ed755824bb9d58a45ee6cb04068', 'param': '', 'type': 'NotFound'}}
126
147
 
127
148
 
128
149
  curl -X POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks \
129
150
  -H "Content-Type: application/json" \
130
- -H "Authorization: Bearer 29ce2c44-981d-4b7b-b0f5-f8a39586fd06" \
151
+ -H "Authorization: Bearer 21289782-f54f-481b-857e-ba1c8b94927b" \
131
152
  -d '{
132
153
  "model": "doubao-seaweed-241128",
133
154
  "content": [
@@ -138,9 +159,47 @@ curl -X POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks
138
159
  {
139
160
  "type": "image_url",
140
161
  "image_url": {
141
- "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/i2v_foxrgirl.png"
162
+ "url": "https://s3.ffire.cc/cdn/20250613/vS2jaDCmA8crncXMR4fB7z_.png"
142
163
  }
143
164
  }
144
165
  ]
145
166
  }'
167
+
168
+ curl -X POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks \
169
+ -H "Content-Type: application/json" \
170
+ -H "Authorization: Bearer 05702f67-53ba-438a-a22e-6e6a690b5843" \
171
+ -d '{
172
+ "model": "doubao-seedance-1-0-pro-250528",
173
+ "content": [
174
+ {
175
+ "type": "text",
176
+ "text": "女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动 --resolution 480p --duration 5"
177
+ },
178
+ {
179
+ "type": "image_url",
180
+ "image_url": {
181
+ "url": "https://s3.ffire.cc/cdn/20250613/vS2jaDCmA8crncXMR4fB7z_.png"
182
+ }
183
+ }
184
+ ]
185
+ }'
186
+
187
+ curl -X POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks \
188
+ -H "Content-Type: application/json" \
189
+ -H "Authorization: Bearer e32b1693-147e-40db-a83a-82f85cfa6360" \
190
+ -d '{
191
+ "model": "doubao-seaweed-241128",
192
+ "content": "a dog"
193
+ }'
194
+
195
+
196
+ {'id': 'cgt-20250613160030-2dvd7',
197
+ 'model': 'doubao-seedance-1-0-pro-250528',
198
+ 'status': 'succeeded',
199
+ 'content': {'video_url': 'https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-pro/02174980163157800000000000000000000ffffac182c17b26890.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzQyNGE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250613%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20250613T080120Z&X-Tos-Expires=86400&X-Tos-Signature=5e0928f738f49b93f54923549de4c65940c5007d5e86cb5ebadc756cca3aa03e&X-Tos-SignedHeaders=host'},
200
+ 'usage': {'completion_tokens': 246840, 'total_tokens': 246840},
201
+ 'created_at': 1749801631,
202
+ 'updated_at': 1749801680}
203
+
204
+
146
205
  """
@@ -257,7 +257,9 @@ async def get_next_token_for_polling(
257
257
  check_token: Optional[Callable] = None,
258
258
  max_size: Optional[int] = 10,
259
259
  from_redis: Optional[bool] = False,
260
- min_points: float = 0
260
+ min_points: float = 0,
261
+
262
+ ttl: Optional[int] = None,
261
263
  ):
262
264
  if from_redis:
263
265
  return await get_next_token(feishu_url, check_token, ttl=7 * 24 * 3600, min_points=min_points)
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2025.06.13.10.18.19
1
+ 2025.06.13.20.54.05
@@ -192,18 +192,28 @@ async def check_token_for_sophnet(api_key, threshold: float = 1):
192
192
 
193
193
  #
194
194
  @retrying()
195
- async def check_token_for_volc(api_key, threshold: float = 1):
195
+ async def check_token_for_volc(api_key, threshold: float = 1, purpose: Optional[str] = None):
196
196
  if not isinstance(api_key, str):
197
197
  return await check_tokens(api_key, check_token_for_volc)
198
198
 
199
199
  try:
200
- client = AsyncOpenAI(base_url=os.getenv("VOLC_BASE_URL"), api_key=api_key)
201
-
202
- data = await client.chat.completions.create(
203
- model="deepseek-v3-250324",
204
- messages=[{"role": "user", "content": "hi"}],
205
- max_tokens=1
206
- )
200
+ base_url = os.getenv("VOLC_BASE_URL") or "https://ark.cn-beijing.volces.com/api/v3"
201
+ client = AsyncOpenAI(base_url, api_key=api_key)
202
+
203
+ if purpose:
204
+ response = client.images.generate(
205
+ model="doubao-seedream-3-0-t2i-250415",
206
+ prompt="鱼眼镜头,一只猫咪的头部,画面呈现出猫咪的五官因为拍摄方式扭曲的效果。",
207
+ size="1024x1024",
208
+ response_format="url"
209
+ )
210
+ else:
211
+
212
+ response = await client.chat.completions.create(
213
+ model="deepseek-v3-250324",
214
+ messages=[{"role": "user", "content": "hi"}],
215
+ max_tokens=1
216
+ )
207
217
  return True
208
218
  except TimeoutException as e:
209
219
  raise
@@ -52,6 +52,8 @@ class Completions(object):
52
52
  await asyncio.sleep(3)
53
53
  response = await glm_video_api.get_task(taskid, system_fingerprint)
54
54
 
55
+
56
+
55
57
  logger.debug(response)
56
58
  if response.task_status == "SUCCESS" or response.video_result:
57
59
  yield ")🎉🎉🎉\n\n"
@@ -6,19 +6,23 @@
6
6
  # @Author : betterme
7
7
  # @WeChat : meutils
8
8
  # @Software : PyCharm
9
- # @Description :
9
+ # @Description :
10
+ import json
10
11
 
11
12
  from meutils.pipe import *
12
13
  from meutils.io.files_utils import to_url, to_url_fal
14
+ from meutils.str_utils.json_utils import json_path
13
15
  from meutils.schemas.openai_types import CompletionRequest
14
16
  from meutils.schemas.image_types import ImageRequest
15
17
  from meutils.llm.openai_utils import chat_completion, chat_completion_chunk, create_chat_completion_chunk
16
18
 
19
+
17
20
  async def stream_to_nostream(
18
21
  request: CompletionRequest,
19
22
  ):
20
23
  pass
21
24
 
25
+
22
26
  async def chat_for_image(
23
27
  generate: Callable,
24
28
  request: CompletionRequest,
@@ -61,6 +65,44 @@ async def chat_for_image(
61
65
  return chunks
62
66
 
63
67
 
68
+ async def chat_for_video(
69
+ get_task: Callable, # response
70
+ taskid: str,
71
+ ):
72
+ """异步任务"""
73
+
74
+ async def gen():
75
+
76
+ # 获取任务
77
+ for i in f"""> VideoTask(id={taskid})\n""":
78
+ await asyncio.sleep(0.03)
79
+ yield i
80
+
81
+ yield f"[🤫 任务进度]("
82
+ for i in range(60):
83
+ await asyncio.sleep(3)
84
+ response = await get_task(taskid) # 包含 "status"
85
+
86
+ logger.debug(response)
87
+ if response.get("status", "").lower().startswith(("succ", "fail")):
88
+
89
+ yield ")🎉🎉🎉\n\n"
90
+
91
+ yield f"""```json\n{json.dumps(response, indent=4, ensure_ascii=False)}\n```"""
92
+
93
+ if urls := json_path(response, expr='$..[url,image_url,video_url]'): # 所有url
94
+ for i, url in enumerate(urls, 1):
95
+ yield f"\n\n[下载链接{i}]({url})\n\n"
96
+
97
+ break
98
+
99
+ else:
100
+ yield "🚀"
101
+
102
+ chunks = create_chat_completion_chunk(gen())
103
+ return chunks
104
+
105
+
64
106
  if __name__ == '__main__':
65
107
  request = CompletionRequest(
66
108
  model="deepseek-r1-Distill-Qwen-1.5B",
@@ -69,4 +111,4 @@ if __name__ == '__main__':
69
111
  ],
70
112
  stream=False,
71
113
  )
72
- arun(chat_for_image(None, request))
114
+ arun(chat_for_image(None, request))
@@ -178,6 +178,7 @@ async def ppu_flow(
178
178
  else: # 不计费
179
179
  yield
180
180
 
181
+
181
182
  # 按量计费
182
183
  def create_chat_completion(
183
184
  completion: Union[str, Iterable[str]],
@@ -255,6 +256,10 @@ def get_payment_times(request: Union[BaseModel, dict], duration: float = 5):
255
256
  # 时长
256
257
  N += request.get("duration", 0) // duration
257
258
 
259
+ # 命令行参数 --duration 5
260
+ if "--duration 10" in str(request):
261
+ N += 1
262
+
258
263
  return N
259
264
 
260
265
 
@@ -48,3 +48,4 @@ def size2aspect_ratio(size):
48
48
  if __name__ == '__main__':
49
49
  print(size2aspect_ratio("1920x1080"))
50
50
  print(size2aspect_ratio("1920:1080"))
51
+ print(size2aspect_ratio("1024x1024"))
@@ -99,7 +99,7 @@ class ImageRequest(BaseModel): # openai
99
99
  style: Union[str, Literal["vivid", "natural"]] = None
100
100
 
101
101
  # 测试默认值 Optional[Literal["256x256", "512x512", "1024x1024", "1792x1024", "1024x1792"]]
102
- size: Optional[str] = '1024x1024'
102
+ size: Optional[str] = '1024x1024' # null auto
103
103
 
104
104
  response_format: Optional[Literal["oss_url", "url", "b64_json"]] = "url"
105
105
 
@@ -124,6 +124,9 @@ class ImageRequest(BaseModel): # openai
124
124
  if self.aspect_ratio: # 适配比例
125
125
  self.size = ASPECT_RATIOS.get(self.aspect_ratio, '1024x1024')
126
126
 
127
+ elif self.size == 'auto':
128
+ self.size = self.aspect_ratio = None
129
+
127
130
  elif self.size: # 适配尺寸
128
131
  self.aspect_ratio = size2aspect_ratio(self.size)
129
132
 
@@ -615,4 +618,4 @@ if __name__ == '__main__':
615
618
 
616
619
  r = ImageRequest(**data)
617
620
 
618
- print(ImagesResponse())
621
+ print(ImagesResponse())
@@ -89,10 +89,10 @@ class ChannelInfo(BaseModel):
89
89
  super().__init__(**data)
90
90
  self.name = self.name or self.base_url or "NAME"
91
91
  self.tag = self.tag or self.base_url or "TAG"
92
+ self.group = self.group or self.base_url or "GROUP"
92
93
 
93
- if self.base_url:
94
- self.type = 8
95
-
94
+ self.setting= self.setting or ""
95
+ self.param_override = self.param_override or ""
96
96
  if isinstance(self.model_mapping, dict):
97
97
  self.model_mapping = json.dumps(self.model_mapping)
98
98
 
@@ -73,6 +73,22 @@ MODEL_PRICE = {
73
73
  "api-volcengine-high_aes_general_v30l_zt2i": 0.05,
74
74
  "api-volcengine-byteedit_v2.0": 0.05,
75
75
 
76
+ "doubao-seedance-1-0-pro-250528": 1,
77
+ "api-doubao-seedance-1-0-pro-250528": 1,
78
+ "api-doubao-seedance-1-0-pro-250528-480p": 1,
79
+ "api-doubao-seedance-1-0-pro-250528-720p": 2,
80
+ "api-doubao-seedance-1-0-pro-250528-1080p": 3,
81
+
82
+ "api-doubao-seedance-1-0-lite-t2v-250428": 1 / 2,
83
+ "api-doubao-seedance-1-0-lite-t2v-250428-480p": 1 / 2,
84
+ "api-doubao-seedance-1-0-lite-t2v-250428-720p": 2 / 2,
85
+ "api-doubao-seedance-1-0-lite-t2v-250428-1080p": 3 / 2,
86
+
87
+ "api-doubao-seedance-1-0-lite-i2v-250428": 1 / 2,
88
+ "api-doubao-seedance-1-0-lite-i2v-250428-480p": 1 / 2,
89
+ "api-doubao-seedance-1-0-lite-i2v-250428-720p": 2 / 2,
90
+ "api-doubao-seedance-1-0-lite-i2v-250428-1080p": 3 / 2,
91
+
76
92
  # videos
77
93
  "api-videos-wan-ai/wan2.1-t2v-14b": 1.2,
78
94
  "api-videos-wan-ai/wan2.1-t2v-14b-turbo": 1.2,