MeUtils 2025.6.18.16.30.56__py3-none-any.whl → 2025.6.20.18.7.13__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.
Files changed (31) hide show
  1. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/METADATA +262 -262
  2. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/RECORD +29 -25
  3. examples/_openaisdk/openai_doubao.py +7 -7
  4. examples/_openaisdk/openai_modelscope.py +1 -0
  5. examples/_openaisdk/openai_ppinfra.py +7 -2
  6. meutils/apis/hailuoai/videos.py +9 -1
  7. meutils/apis/oneapi/channel.py +57 -6
  8. meutils/apis/ppio/__init__.py +11 -0
  9. meutils/apis/ppio/videos.py +142 -0
  10. meutils/apis/proxy/kdlapi.py +18 -14
  11. meutils/apis/transparent_transmission/__init__.py +10 -0
  12. meutils/apis/transparent_transmission/tasks.py +28 -0
  13. meutils/apis/utils.py +4 -4
  14. meutils/apis/videos/veo.py +68 -0
  15. meutils/apis/volcengine_apis/videos.py +5 -2
  16. meutils/config_utils/lark_utils/common.py +19 -3
  17. meutils/data/VERSION +1 -1
  18. meutils/llm/check_utils.py +2 -1
  19. meutils/llm/models_mapping.py +76 -0
  20. meutils/schemas/hailuo_types.py +13 -4
  21. meutils/schemas/oneapi/_types.py +19 -7
  22. meutils/schemas/oneapi/common.py +13 -6
  23. meutils/serving/fastapi/dependencies/auth.py +2 -1
  24. meutils/str_utils/__init__.py +21 -0
  25. meutils/str_utils/regular_expression.py +8 -1
  26. examples/pyinstxtractor.py +0 -340
  27. meutils/apis/kuaidi.py +0 -32
  28. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/LICENSE +0 -0
  29. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/WHEEL +0 -0
  30. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/entry_points.txt +0 -0
  31. {MeUtils-2025.6.18.16.30.56.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/top_level.txt +0 -0
@@ -37,7 +37,6 @@ examples/parse_cmd.py,sha256=VgCWQmajhkZ_x7AIYTxfoHJZHJy7tWpL1ODf3ls0ClQ,1988
37
37
  examples/parse_cmd_re.py,sha256=0xgl8k8tdIZcH8stbvyT6Fjdi3HjO5Aq6fOp9iCEv1s,1346
38
38
  examples/partialmethod_demo.py,sha256=otLq0-3C2q24eKWPTlDTDMXnJgIxLm7wqzTS3E4tjjU,598
39
39
  examples/pydantic_demo.py,sha256=3i2RxkqDVtS4CVEmfYDKzXera2NqgFPt7HmGZWzevhI,742
40
- examples/pyinstxtractor.py,sha256=zLNoIMtTFJuDs_RCnb47BofuvoMxoPXm0KNvHiNZXmY,12667
41
40
  examples/qps.py,sha256=2LUlb-3jyEPXc-9H14rEnz1K2H539lLL6Yh7APqp8yI,1045
42
41
  examples/redis队列.py,sha256=A1djOzk_k_iEN-o5h_i3xdVJSCGnuDcokO_ExlC3nMI,507
43
42
  examples/redis队列_add.py,sha256=-SKdAaBHfa4QvNjqI50ExBwvf7OktjETtvjC9Xjonr8,647
@@ -109,7 +108,7 @@ examples/_openaisdk/openai_chatfire_usa.py,sha256=kS7QlZYTUAJ0lfgTnh3wK-NIW9lfC8
109
108
  examples/_openaisdk/openai_dashscope.py,sha256=m9SjQpaNgYwr4Qd3XusWbJBGp5ZTtpuB40QopejxPKQ,1029
110
109
  examples/_openaisdk/openai_deepinfra.py,sha256=innI4BT15dZEqheqDHG4lHDczY1QC7t2Whcavi1pcz0,1195
111
110
  examples/_openaisdk/openai_deepseek.py,sha256=0IbHh2F6eVDs-i8gP8x8wj6s9R6CzOGN7QrCp1EuB5k,2086
112
- examples/_openaisdk/openai_doubao.py,sha256=3-rTeG0yPnkxrc2Gg_Iv4PcJLWbAwb2X79EfjxEMfS8,1750
111
+ examples/_openaisdk/openai_doubao.py,sha256=5L7NaDyedxEhvUTWsScX8edL3_WErNxxUIAW_FuLDHs,1754
113
112
  examples/_openaisdk/openai_embeddings.py,sha256=IRMAWSQxgnWiOON5YXb9AFraZgI-5tsplOXQrw6Lgx4,1232
114
113
  examples/_openaisdk/openai_ep.py,sha256=cAaeyC8Lstk1MB36c4h7X9n7EnEnY7rr2Tugo_diT3M,726
115
114
  examples/_openaisdk/openai_ffire.py,sha256=R9fEznBvsz3KtPiwKXC3qol7lZ46T_7jzn7wGkXM2to,720
@@ -125,11 +124,11 @@ examples/_openaisdk/openai_kimi.py,sha256=Y0ohLt2GVBrUzR286mDTJL7kPdLWVKjw36XSBE
125
124
  examples/_openaisdk/openai_lingyi.py,sha256=l2GcNxhwfLv7MfMF-cdRWGGvX-dRaZyb8IRlXLPACMw,1834
126
125
  examples/_openaisdk/openai_local.py,sha256=w-MedYgmRiO5eoMfbTQsB5J8ILFPfla0m6vP7qbQAxY,1889
127
126
  examples/_openaisdk/openai_luchentech.py,sha256=Jy0JxpL1u3pXcmslViPvrbwSysVBV-Dz8wSKqv6QtxY,1960
128
- examples/_openaisdk/openai_modelscope.py,sha256=wY7wLSP2Bh8-vhsa0SGSsd8my2uoOC6_1276g3fQ4EE,3423
127
+ examples/_openaisdk/openai_modelscope.py,sha256=PCuhZi3G1_-7Dyad9a0BZQU-NKe-8EecveQ3EVJA-GE,3424
129
128
  examples/_openaisdk/openai_moderations.py,sha256=WoIyXDEn4dfVPwqFc54HSz0-7wLPu7pd4ZisZcyLOWM,1369
130
129
  examples/_openaisdk/openai_moon.py,sha256=7-gILGwZArZ1VHVb-jtIXEqWJMv65SaMmBSKJ90fx_w,1889
131
130
  examples/_openaisdk/openai_oi.py,sha256=8KJ62QgpAZdGWAoYN6AC9M9TrD8JQf7ZO_NAgXZywTo,1414
132
- examples/_openaisdk/openai_ppinfra.py,sha256=po8GkzjQzSTouMBJq1cCxbhCjJ-Ksdgx26bqsYQxfk0,1642
131
+ examples/_openaisdk/openai_ppinfra.py,sha256=qLqr1YtVstMBUYzjf4rCXMv0ccE4y1KqVCn61525EsY,1756
133
132
  examples/_openaisdk/openai_ppu.py,sha256=cpr__WVlOrm2w1WjRV7v0rux4oiJkaqBnUZImR6MaEs,1010
134
133
  examples/_openaisdk/openai_qwen.py,sha256=KurTjBr_bN0aFZcMnWeGtEu0bbagYvOfhdYe-popsKE,2268
135
134
  examples/_openaisdk/openai_search.py,sha256=HKRTU6y9j_nUfZgrJt2eZ84d7TVT39WN-dcA_BFkVb4,937
@@ -338,13 +337,12 @@ meutils/apis/ali_apis.py,sha256=da69FKwBiEEDIoxmWP4M09rpuOjggwt2NWepbX3H7bs,1905
338
337
  meutils/apis/common.py,sha256=XALPn5LyqVhIWGa_utq6mDSiU6Pbl6xnffqHUekiLzw,4036
339
338
  meutils/apis/firecrawl.py,sha256=Kibq6JevgM5o__x1UTjtBhYXmvKlYxEhzMi0Zz0fNeE,1152
340
339
  meutils/apis/jina.py,sha256=hWSPrQIAlsKk1gHz_BAp5MFKu5XI84bUUCUYn9Sg7dI,4927
341
- meutils/apis/kuaidi.py,sha256=4KrtOkbGlsLpyvbY80UMSo03iFqFiBHnE0CiqAWWQ4Y,998
342
340
  meutils/apis/llm_qa.py,sha256=XM1VMkOTb4xKzgVk56dPC1e8lg7SbnfobBVgfLXiX9A,1207
343
341
  meutils/apis/niutrans.py,sha256=tWUyGH5SReLBQyVuB7kZvoFB35dsN6gXN-anbiHc_B4,2298
344
342
  meutils/apis/search_music.py,sha256=HBLtdterztrccnLAPZrWBlrYSx4WCRflCqz-V30fOA8,972
345
343
  meutils/apis/textin.py,sha256=3L23RqYiR7bl6rymQ2YugDO-K1ItPX2sd0wyCrLST90,4897
346
344
  meutils/apis/ts.py,sha256=Q13EOS9Q-Y2-KwOG_cFMVmGj9RUmDtxk5A3E27dxbN0,1511
347
- meutils/apis/utils.py,sha256=XbwnwNBVtRaNP2zZI-PG18w12LpJU_V3HF-98tADppI,2057
345
+ meutils/apis/utils.py,sha256=YOGDE4GnU4RNVaS-KuCzw7HnSKM_zzZkyuZhvi3BVx0,2064
348
346
  meutils/apis/web_search.py,sha256=6gS3leIB2iyeLtqhB0IbpL_mKzDgArRTqnR7odTWT3E,1035
349
347
  meutils/apis/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
350
348
  meutils/apis/aitools/__init__.py,sha256=USdDfW2JZyUVY8ko54Dwpl801O766bvO_3F1lM4b8Gc,271
@@ -398,7 +396,7 @@ meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-
398
396
  meutils/apis/hailuoai/images.py,sha256=2SLRKnzz2jdHHVwDzLdJetXZpvn9Mkzjrr_1gJPTIFI,19848
399
397
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
400
398
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
401
- meutils/apis/hailuoai/videos.py,sha256=GdnVcpliHJBi-fLKTfToPDF0IwmVn_knrSO21_me73I,23447
399
+ meutils/apis/hailuoai/videos.py,sha256=-uovg12L-3yVebNblzyjlRDTelekBUmxL-CUx4LKUWs,23987
402
400
  meutils/apis/hailuoai/yy.py,sha256=uBwtpMhCE4lQyDqEsua4eupGAU0A2N0UJN20pE1tOUo,8962
403
401
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
404
402
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
@@ -472,7 +470,7 @@ meutils/apis/monica/llm.py,sha256=gYyBPOTvmoNFaa1KmW3OlSsRKeN7C97EyPUa264nJ08,26
472
470
  meutils/apis/napkin/__init__.py,sha256=EWwpRJEbN46d6Dk9PHAZvsYmqD_EOK0jjKQL1kYtcKs,271
473
471
  meutils/apis/napkin/icons.py,sha256=_L8EaSeQ6ChT5w7q3jnj_AcRhKvNiBg3-qUKo9JQ12o,2217
474
472
  meutils/apis/oneapi/__init__.py,sha256=wg_kqNkFqOkP70vnOHvAeKREps57Rqliu5yKC0gsgLk,284
475
- meutils/apis/oneapi/channel.py,sha256=R4ni_vZQtWM465ng7x7ItUXwzoUEF79g4EuwSOauXc8,12232
473
+ meutils/apis/oneapi/channel.py,sha256=ri682XvJUznZT2AeH7GTZOUI7wM2rt3mHNMXVr1s8Fs,13867
476
474
  meutils/apis/oneapi/common.py,sha256=AIs8ro-1qui3FG42msBY6dL_zt9QJ0jS63qtp-XTlY4,3617
477
475
  meutils/apis/oneapi/demo.py,sha256=i9iBK2OftTvOZdPcCo2nxu8zs0fSKIZbzD8DRKQNla8,1851
478
476
  meutils/apis/oneapi/log.py,sha256=gNFFXXcG2Xp5ttO7Q7qR6n6GQUheuU8SOCjJPXZudLY,1447
@@ -483,10 +481,12 @@ meutils/apis/oneapi/user.py,sha256=YD-NZnDmlkDwwIz96NtLUD-ixAaXcbk184OVq8sd1lA,4
483
481
  meutils/apis/oneapi/utils.py,sha256=kuXwRQee3lSgJH7ffGP3Is4BhaUVylKJviG8FVN0F-I,1660
484
482
  meutils/apis/pixverse/__init__.py,sha256=WiboEUfJ_3Hs2WI3OymEspx8_ZSTgMglxTJd97Qk7qo,271
485
483
  meutils/apis/pixverse/pixverse.py,sha256=dvnyYVUXCEY_cLnmX9lvq9TesvplCMCuJmmP7ShchQk,5534
484
+ meutils/apis/ppio/__init__.py,sha256=ZCz9kagqxmWkpvDqDS8pkjGYVPpuBonPLfkTF9GuBgI,271
485
+ meutils/apis/ppio/videos.py,sha256=liteWv6dZm_-JcOfBT84zTFg17XEpOaie-hRLIMlF-M,4574
486
486
  meutils/apis/proxy/__init__.py,sha256=by7_6GT3xeDjAWLLqbw8uvGaZ3RdprEW-zJ2DFLOdwA,271
487
487
  meutils/apis/proxy/demo.py,sha256=-huvtmltbKXa6cS77k61ts-Kjd5ccSAgXzNrotIvIKA,1642
488
488
  meutils/apis/proxy/ips.py,sha256=3McLniROteSBqAtcMH8xKbUBfhVc4ZyGuRwMvgEryKg,5023
489
- meutils/apis/proxy/kdlapi.py,sha256=Z0aSzn3fjBgrtCU8JOU_-pQL_JmV8TXQhp9VDO4M4E4,1916
489
+ meutils/apis/proxy/kdlapi.py,sha256=VsLgOmgZJme1Xy7tMX1GW-LF5_PCAh3Jf6nOKi7DvfU,1907
490
490
  meutils/apis/remini/__init__.py,sha256=8TbAnbI_bDfH8g0Y9EHXHBum7C0rZt9MzgAAz_MbAeI,271
491
491
  meutils/apis/remini/remini.py,sha256=bJjvtqrCNlAu7No4gYGjoWAM0ch6dCsofYSy2jPZrXg,4239
492
492
  meutils/apis/replicateai/__init__.py,sha256=PK7e7-xhn5aj5WOyGHLzpsHQvpeM5uTOiMylvj40ZmU,272
@@ -530,6 +530,8 @@ meutils/apis/together/__init__.py,sha256=OCJxyaTTrYFjcaM-ck2ZoQrB30LAWWjnTVT__ij
530
530
  meutils/apis/together/images.py,sha256=rlVb7SyWf4cFQxukgq0Pw6QiF_6DHzCDvyfRzWybfpM,2662
531
531
  meutils/apis/translator/__init__.py,sha256=Oa3pNJ160X0SJrntABBnt-Pxh2rM38KvT20KInt3pRM,244
532
532
  meutils/apis/translator/deeplx.py,sha256=riTHXuuBtN0TUnr81GVJs-VPDo8vaDhxymYqsXR4fdM,2361
533
+ meutils/apis/transparent_transmission/__init__.py,sha256=u1WQdey1OhdsbK9_IMPWNmtRErUuWgetlsiqBJkscdE,263
534
+ meutils/apis/transparent_transmission/tasks.py,sha256=tSgjdESnLVn2gRuxDy1ltMMTebVUAvJeLIXFToI7AUU,631
533
535
  meutils/apis/tripo3d/__init__.py,sha256=KkEX1hWjdWSfwbw_iNuon2G9U1LbKKlKWsKbnyWYO5I,272
534
536
  meutils/apis/tripo3d/images.py,sha256=xThp3AXVBc6Qb7pcyqCsQWx-4gwTp9YkEA0GzFAv3yE,4943
535
537
  meutils/apis/uptime_kuma/__init__.py,sha256=w_fYxFgQDOXOfCPe0JMsgSl6zrGuYx9w4thySfAsbAE,272
@@ -537,6 +539,7 @@ meutils/apis/uptime_kuma/common.py,sha256=ZJFSEeoxD_Eb5eFL9K2xxajVJgTnTwgm7rm4fc
537
539
  meutils/apis/uptime_kuma/国产分组.py,sha256=OIiUUFfjWEEJHg5fr8Vf5xSBWkbXboQ4f3jUiaTtQSI,1681
538
540
  meutils/apis/videos/__init__.py,sha256=OCykr_XRIOH18Xh5hfBq5yMxbk8e9Myk4KuAtrtgAWw,272
539
541
  meutils/apis/videos/sora.py,sha256=G3wGlvTYl4YfG20L2HXPhmhZ4HwrlIFSU-KYM-TdALg,295
542
+ meutils/apis/videos/veo.py,sha256=DAjDVPCOq3uXADZmD_X0os8V8YNOiLIgmZbqp7NWN_g,1824
540
543
  meutils/apis/vidu/__init__.py,sha256=8nQN-RiZGJlZaZGVFbtHgK57_Ml5g_vFCiOImWwBm0I,242
541
544
  meutils/apis/vidu/vidu_video.py,sha256=rkt18PbQ26r_q82WT2ptE0eL2A0rX6tDsTPjmG-eQ9c,18266
542
545
  meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNHA,241
@@ -545,7 +548,7 @@ meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81o
545
548
  meutils/apis/volcengine_apis/__init__.py,sha256=gtu5ZNCc3up8bzgrCi10uwhsC04HpuCEEPXR_iVCNJE,244
546
549
  meutils/apis/volcengine_apis/images.py,sha256=F9LXXptesnASB_Al7rkEshb2S5r3PixZd8w0mif5468,5463
547
550
  meutils/apis/volcengine_apis/tasks.py,sha256=da2wYs2bqjYte_P2aFbSdKkLBaghuAj6vVKIlgdMg5A,4495
548
- meutils/apis/volcengine_apis/videos.py,sha256=S0KCkXSb360BJXmqW3IcVpSRH9s2Krxw0ImKRMRPQsY,7034
551
+ meutils/apis/volcengine_apis/videos.py,sha256=HYocA1TTflYt47aLpB7v9UZ3GNhvcomEdi_k9v4f_vQ,7065
549
552
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
550
553
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
551
554
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -589,12 +592,12 @@ meutils/cmds/subprocess_demo.py,sha256=oTeTIx8k6XwtOT6hZpmy9XNcRErzilqWcdoxcrVcH
589
592
  meutils/config_utils/__init__.py,sha256=GhgsStfGJDC8F_YgC6X5Jnj9HkgXJXxeYiJWTAkWKTo,271
590
593
  meutils/config_utils/manager.py,sha256=du-8e9Zdgnrn9e0b4GPR6FGtuQY7DLWNJqgkoU0TZ48,3147
591
594
  meutils/config_utils/lark_utils/__init__.py,sha256=Gf-5Y8uZiqY9jdbfiIboL92MQjOTOo0ZZ245PGxCbaY,297
592
- meutils/config_utils/lark_utils/common.py,sha256=wBeztamCzJ6SqFsf5tyTv_MU3pzl8j01NF2VZ2FKjZA,14445
595
+ meutils/config_utils/lark_utils/common.py,sha256=W2hRSn_hyXdxpUrs3tkTQZbItLdO0XSqqXD2-yOvhIA,15190
593
596
  meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfHOno5NxNAio,293
594
597
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
595
598
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
596
599
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
597
- meutils/data/VERSION,sha256=MnadeRs6Rp5h7pjksioZELerRAU_FjFtzIKL1hKPyOk,19
600
+ meutils/data/VERSION,sha256=EFj2RFf64nUw3Ya3XD-ZQiAy6Vj7O2LfbwDL80wwZOY,19
598
601
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
599
602
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
600
603
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -676,11 +679,12 @@ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs
676
679
  meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
677
680
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
678
681
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
679
- meutils/llm/check_utils.py,sha256=_Ity0z6lKOrKO7DoiF20HWA8jq_c8xwTHOdtDhvPz2o,8594
682
+ meutils/llm/check_utils.py,sha256=9ioKzj2NIZFMJiIS0zkUb_0eGNfKZf6ZXpyPt_6VTIo,8680
680
683
  meutils/llm/clients.py,sha256=qZa9WC85Ah4tdEd-EI_P_038mnJLq_z-smaJdwJp-EM,2956
681
684
  meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
682
685
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
683
686
  meutils/llm/models.py,sha256=dDdU_WzcQGdgaFOYtMJpDYmt5uKFKEz2pc0guqNVkSk,3175
687
+ meutils/llm/models_mapping.py,sha256=fWbIs7_R65nCicfgvwA1zw7d7BjnEDBZhoNA1TIxeIU,5523
684
688
  meutils/llm/utils.py,sha256=GuM5uu08-iIeE7g6GeJdIz62_5CiLShmA10dIKFGLPI,4823
685
689
  meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
686
690
  meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
@@ -824,7 +828,7 @@ meutils/schemas/dreamfaceapp_types.py,sha256=Wm0HqvuD7suR9zbyI3xslb8gbqA4KvrIRXC
824
828
  meutils/schemas/embedding.py,sha256=rJ-XQ6X8VmACOi53BOJtkjROrNcf1ZUhzxKkClM9J0M,867
825
829
  meutils/schemas/fal_types.py,sha256=a6glb5xlo0MEuKZrWtT7B8kLjwnLEhIVPbpnDWpBsJc,360
826
830
  meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU,270
827
- meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
831
+ meutils/schemas/hailuo_types.py,sha256=3nx2jgDmi2dpwEfJ6xRiZQ-9nhOOXQgTz1yyLz5d-ik,7722
828
832
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
829
833
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
830
834
  meutils/schemas/image_types.py,sha256=9EIpJCSzGKGQG3r5J3JBxgduwmTuuw5VAsVJ-Ab1sdo,16433
@@ -862,8 +866,8 @@ meutils/schemas/yuanbao_types.py,sha256=bI_CF9ybaJ1ux8NgP5gEi33k_K_vHmlyD09fxzhY
862
866
  meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVIU,272
863
867
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
864
868
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
865
- meutils/schemas/oneapi/_types.py,sha256=_QAl69kZ7tEU2UMmSSCNIVHg_0lc8bm5CKqNa0eDvBc,3091
866
- meutils/schemas/oneapi/common.py,sha256=ehLJr9iDsl0Y1tuGUan6W-T2CDEF22J-zi1PoksqXEU,42353
869
+ meutils/schemas/oneapi/_types.py,sha256=tht6Gn4TOrMwZs211_r_iWUUhTghJy76A4LHHgBR7c8,3400
870
+ meutils/schemas/oneapi/common.py,sha256=wwAYA9FqMtJu7SlgPZx1mvE1HZuvbb7Wc9U0vuyVlOM,42541
867
871
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
868
872
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
869
873
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -888,7 +892,7 @@ meutils/serving/fastapi/utils.py,sha256=H5lQSU7-IfJ2w9FWbaJ34LCbQSaNTFSU7z1pG5wZ
888
892
  meutils/serving/fastapi/__demo/__init__.py,sha256=TxXjqy2ZxAkadPxqN92Xq3ixCUYkQ-4X6UxsReRpHhc,271
889
893
  meutils/serving/fastapi/__demo/异步任务.py,sha256=60_ruA4ljlTLIP5zxcejmm9WJ0SDuqpsO49SZK9vA_s,1444
890
894
  meutils/serving/fastapi/dependencies/__init__.py,sha256=TQcxvWqZdA2jZZX84NtAij-bhS7ihcMLx1-xsbSpV4g,384
891
- meutils/serving/fastapi/dependencies/auth.py,sha256=fGzhGSytpyQRUljl7Lnz_IL8TX5mXb9D0GeVu5vDw5I,2520
895
+ meutils/serving/fastapi/dependencies/auth.py,sha256=o6U-PB5laYhPGHWm_-AUVER2hV-K783K5DVfbfFWPm4,2538
892
896
  meutils/serving/fastapi/dependencies/headers.py,sha256=ddifDCJyELqfPwuUX12x-lH0KNylu2iidc7Mupcvl6k,922
893
897
  meutils/serving/fastapi/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
894
898
  meutils/serving/fastapi/exceptions/http_error.py,sha256=-cBBWNJH3qp1GMSaa9AlojJ18lBLFEk0KHoGUnmV3u4,2601
@@ -916,9 +920,9 @@ meutils/settings/__init__.py,sha256=jZc0NXPA9zIMcTAYypSQDxJqvXakyJ0ztK9ZMND2Q7U,
916
920
  meutils/settings/base.py,sha256=kb3QVS2eUFWyGgvegtSK4cqJFF76J1JctTSzCVqc1Mo,264
917
921
  meutils/settings/demo.py,sha256=Ht3t6LREQsKa5W2owNrOZNAoZfS-zItIFNwGhhPj-4k,484
918
922
  meutils/str_utils/Translator.py,sha256=tfvNQIeVCqmX9yW6jobeibDHG6X-XecSSAx9kJIFFyw,1258
919
- meutils/str_utils/__init__.py,sha256=7rVAWR0bbxVvuWFwyC0ZedpY1QVSmrrLwLIfPAfjWqM,10238
923
+ meutils/str_utils/__init__.py,sha256=M7lv7K22ixxJkwUEWLzfpcUt3bfJUpaEONSnvq9nZ2g,10906
920
924
  meutils/str_utils/json_utils.py,sha256=10QhpmzAWI0hERdQb5JDeNqphI5QWFTjeZJhiYkuI4c,2827
921
- meutils/str_utils/regular_expression.py,sha256=HqEcPNyUHBBo7oJlwOFNpiFiO5NCXB8hD41nI1826fU,6161
925
+ meutils/str_utils/regular_expression.py,sha256=sgD0Tgn7IFUT6hAQ4IJxB-YJpJL5df8LywvgBZQF88c,6393
922
926
  meutils/str_utils/__translater/__init__.py,sha256=mtDbKL_Qdkeq5VPVO1M4ejf9H8PzKM5h7iepqkBG8N0,277
923
927
  meutils/str_utils/__translater/tencent.py,sha256=1E_56l6-A49Yuz2ZrMKxt-QJfcf0xDYN2X0dg58Dytk,1408
924
928
  meutils/str_utils/__translater/translater.py,sha256=A_9NLVvkjzPd9omIcJGhux21D-gcCxemyrZ7o6uGx_Q,1238
@@ -992,9 +996,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
992
996
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
993
997
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
994
998
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
995
- MeUtils-2025.6.18.16.30.56.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
996
- MeUtils-2025.6.18.16.30.56.dist-info/METADATA,sha256=hKah27vOywIM7x_vMz61XVRXloTXbNDWhLDMTtqDS2g,32834
997
- MeUtils-2025.6.18.16.30.56.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
998
- MeUtils-2025.6.18.16.30.56.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
999
- MeUtils-2025.6.18.16.30.56.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
1000
- MeUtils-2025.6.18.16.30.56.dist-info/RECORD,,
999
+ MeUtils-2025.6.20.18.7.13.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
1000
+ MeUtils-2025.6.20.18.7.13.dist-info/METADATA,sha256=7hDv13KWicpRtmzooXWjN_03s2qVNkqnGxyK8v5we3M,32833
1001
+ MeUtils-2025.6.20.18.7.13.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
1002
+ MeUtils-2025.6.20.18.7.13.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
1003
+ MeUtils-2025.6.20.18.7.13.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
1004
+ MeUtils-2025.6.20.18.7.13.dist-info/RECORD,,
@@ -19,8 +19,8 @@ client = OpenAI(
19
19
  # api_key="sk-acnBrFLJo3E732FfHN0kf0tcHyjfAiCEomyjKr56AUtPIWso",
20
20
  # api_key="31c64288-e87d-4020-9d24-0ae6f4abaa7a",
21
21
  # base_url="https://ark.cn-beijing.volces.com/api/v3", # /chat/completions
22
- base_url="http://38.147.104.170:3007/v1",
23
- api_key="sk-FzHBMMb6tfTDOnv1ZLnxqiuZbmthHu5Vs5nDi94iWFWb5Ie7"
22
+ base_url="https://api.ffire.cc/v1",
23
+ api_key="sk-5lkoeVerPmupyCnCLi1PNpuhbZ31NreEfUMwoZbdyrPPDqcD"
24
24
 
25
25
  # api_key=os.getenv("OPENAI_API_KEY") +'-3587'
26
26
 
@@ -48,11 +48,11 @@ try:
48
48
  stream_options={"include_usage": True},
49
49
  max_tokens=1,
50
50
 
51
- extra_body={
52
- "thinking": {
53
- "type": "disabled"
54
- }
55
- }
51
+ # extra_body={
52
+ # "thinking": {
53
+ # "type": "disabled"
54
+ # }
55
+ # }
56
56
  )
57
57
  except APIStatusError as e:
58
58
  print(e.status_code)
@@ -72,3 +72,4 @@ if __name__ == '__main__':
72
72
  for i in tqdm(range(1)):
73
73
  # break
74
74
  main()
75
+
@@ -15,11 +15,16 @@ from openai import OpenAI, APIStatusError
15
15
 
16
16
 
17
17
  client = OpenAI(
18
- api_key="sk_LLktDFVC7GNqcGgVoxO1rA70_YHCM_2vaQz2dfwy9tY",
18
+ api_key="sk_-k7BdwRII1GbBEy-1plcgH8aPRfzzXV56HaCBVe2Zqk",
19
19
 
20
20
  base_url="https://api.ppinfra.com/v3/openai"
21
21
  )
22
22
 
23
+ # print(client.models.list().data)
24
+ models = [m.id for m in client.models.list().data]
25
+
26
+ print(','.join(models))
27
+
23
28
 
24
29
  try:
25
30
  completion = client.chat.completions.create(
@@ -37,7 +42,7 @@ try:
37
42
  temperature=None,
38
43
  # stream=True,
39
44
  max_tokens=10,
40
- extra_body={"separate_reasoning": True}
45
+ # extra_body={"separate_reasoning": True}
41
46
  )
42
47
  except APIStatusError as e:
43
48
  print(e.status_code)
@@ -28,6 +28,7 @@ from meutils.llm.check_utils import check_tokens
28
28
  from meutils.config_utils.lark_utils import get_next_token_for_polling
29
29
  from meutils.decorators.retry import retrying
30
30
  from meutils.notice.feishu import send_message as _send_message, VIDEOS
31
+ from meutils.apis.ppio import videos as ppio_videos
31
32
 
32
33
  from meutils.apis.hailuoai.yy import get_yy
33
34
 
@@ -213,6 +214,9 @@ async def get_request_policy(token):
213
214
 
214
215
  @retrying(predicate=lambda r: r.base_resp.status_code in {1000061, 1500009}) # 限流
215
216
  async def create_task(request: VideoRequest, token: Optional[str] = None):
217
+ if request.model.lower() == "minimax-hailuo-02": # 走派欧
218
+ return await ppio_videos.create_task(request, token)
219
+
216
220
  refresh_token = token or await get_next_token_for_polling(FEISHU_URL, from_redis=True, check_token=check_token)
217
221
  # refresh_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDA0NzA4NzgsInVzZXIiOnsiaWQiOiIzMjg2MDg4ODkzNTA4MTU3NDQiLCJuYW1lIjoiUm9idXN0IEdlcnRydWRlIiwiYXZhdGFyIjoiaHR0cHM6Ly9jZG4uaGFpbHVvYWkudmlkZW8vbW9zcy9wcm9kLzIwMjQtMTItMjgtMTYvdXNlci91c2VyX2F2YXRhci8xNzM1Mzc1OTI0OTkyMTcxMDY3LWF2YXRhcl8zMjg2MDg4ODkzNTA4MTU3NDQiLCJkZXZpY2VJRCI6IjMwMjgzMzc1OTUxMjc2NDQxNyIsImlzQW5vbnltb3VzIjpmYWxzZX19.dLNBSHjqnKutGl3ralS2g8A-RodHjOdos11vdpbkPwc"
218
222
 
@@ -355,6 +359,9 @@ async def create_task(request: VideoRequest, token: Optional[str] = None):
355
359
 
356
360
  # 307134660730421250
357
361
  async def get_task(task_id: str, token: str):
362
+ if token.startswith("sk_"):
363
+ return await ppio_videos.get_task(task_id)
364
+
358
365
  BASE_URL = get_base_url(token)
359
366
 
360
367
  logger.debug(BASE_URL)
@@ -462,6 +469,7 @@ if __name__ == '__main__': # 304752356930580482
462
469
  # arun(get_task(task_id="307177115102699528", token=token))
463
470
 
464
471
  token = None
472
+ token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTM2ODcxNjksInVzZXIiOnsiaWQiOiIzOTEzNTgxNTc5OTY5MjA4MzUiLCJuYW1lIjoienBiZSB4bnp3IiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMDI4MzM3NTk1MTI3NjQ0MTciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.v6IcCd74UiMLepoqq_fpSTbABUAxXnb9seyCk9SAOec"
465
473
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDQ3MDMwNzIsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMDI4MzM3NTk1MTI3NjQ0MTciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.Mjb64ZjkKyV9pj-_bXyLczU6kU729VLaKbYj9NmrK-4"
466
474
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3Mzg4MTQsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLmhhaWx1b2FpLmNvbS9wcm9kL3VzZXJfYXZhdGFyLzE3MDYyNjc3MTEyODI3NzA4NzItMTczMTk0NTcwNjY4OTY1ODk2b3ZlcnNpemUucG5nIiwiZGV2aWNlSUQiOiIyNDM3MTMyNTI1NDU5ODY1NjIiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.o0SoZMSTWkXNHxJjt3Ggby5MJWSfd-rnK_I95T_WMP8"
467
475
  # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
@@ -471,7 +479,7 @@ if __name__ == '__main__': # 304752356930580482
471
479
 
472
480
  # prompt="smile", # 307145017365086216
473
481
  prompt="动起来", # 307145017365086216
474
- # first_frame_image="https://oss.ffire.cc/files/kling_watermark.png" # 307173162217783304
482
+ first_frame_image="https://oss.ffire.cc/files/kling_watermark.png" # 307173162217783304
475
483
  )
476
484
 
477
485
  r = arun(create_task(request, token=token))
@@ -74,14 +74,63 @@ async def edit_channel(models, token: Optional[str] = None):
74
74
  logger.debug(bjson(response.json()))
75
75
 
76
76
 
77
+ async def exist_channel(
78
+ request: ChannelInfo,
79
+
80
+ base_url: Optional[str] = None,
81
+ api_key: Optional[str] = None,
82
+ ):
83
+ if request.id is None:
84
+ return False
85
+ base_url = base_url or "https://api.chatfire.cn"
86
+ api_key = api_key or os.getenv("CHATFIRE_ONEAPI_TOKEN")
87
+
88
+ headers = {
89
+ 'authorization': f'Bearer {api_key}',
90
+ 'new-api-user': '1',
91
+ 'rix-api-user': '1',
92
+ }
93
+ async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=100) as client:
94
+ response = await client.get("/api/channel/", params={"channel_id": request.id})
95
+ response.raise_for_status()
96
+ logger.debug(response.json())
97
+
98
+ if items := response.json()['data']['items']:
99
+ return items[0]
100
+ else:
101
+ return False
102
+
103
+
77
104
  async def create_or_update_channel(
78
105
  request: ChannelInfo,
79
106
 
80
107
  base_url: Optional[str] = None,
81
108
  api_key: Optional[str] = None,
82
109
  ):
83
- method = "put" if request.id else "post"
84
- base_url = base_url or "https://api.chatfire.cn"
110
+ if request.id and isinstance(request.id, str): # 批量更新
111
+ ids = []
112
+ if "," in request.id:
113
+ ids = map(int, request.id.split(","))
114
+ elif ':' in request.id:
115
+ start, end = map(int, request.id.split(":"))
116
+ ids = range(start, end)
117
+
118
+ request_list = []
119
+ for i, k in zip(ids, request.key.split()): # api_key不为空
120
+ _request = request.copy()
121
+ _request.id = i
122
+ _request.key = k
123
+ request_list.append(_request)
124
+
125
+ tasks = [create_or_update_channel(r, base_url, api_key) for r in request_list]
126
+ return await asyncio.gather(*tasks)
127
+
128
+ base_url = base_url or "https://api.chatfire.cn"
129
+
130
+ method = "post"
131
+ if await exist_channel(request, base_url, api_key):
132
+ logger.debug(f"渠道已存在,跳过创建:{request.id}")
133
+ method = "put"
85
134
 
86
135
  # 新创建的优先级低,保证旧key刷的时间更长
87
136
  request.priority = request.priority or int(1000 - (time.time() - time.time() // 1000 * 1000))
@@ -93,7 +142,7 @@ async def create_or_update_channel(
93
142
  'rix-api-user': '1',
94
143
  }
95
144
  payload = request.model_dump(exclude_none=True)
96
- async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=60) as client:
145
+ async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=100) as client:
97
146
  response = await client.request(method, "/api/channel/", json=payload)
98
147
  response.raise_for_status()
99
148
  logger.debug(response.json())
@@ -187,11 +236,13 @@ if __name__ == '__main__':
187
236
  # arun(create_or_update_channel(tokens, base_url))
188
237
  # arun(create_or_update_channel(tokens))
189
238
  # # arun(delete_channel(range(10000, 20000)))
190
- key= "KEY"
239
+ key = "KEY"
191
240
  request = ChannelInfo(name='', key=key)
192
- request = ChannelInfo(key=key)
241
+ request = ChannelInfo(id=10010, key=key)
242
+
243
+ # arun(create_or_update_channel(request))
193
244
 
194
- arun(create_or_update_channel(request))
245
+ arun(exist_channel(request))
195
246
 
196
247
  """
197
248
  API_KEY=6c255307-7b4d-4be8-984b-5440a3e867eb
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2025/6/20 11:31
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : videos
5
+ # @Time : 2025/6/20 11:31
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.db.redis_db import redis_aclient
13
+ from meutils.apis.utils import make_request
14
+ from meutils.schemas.hailuo_types import VideoRequest, VideoResponse
15
+
16
+ from fastapi import APIRouter, File, UploadFile, Query, Form, Depends, Request, HTTPException, status, BackgroundTasks
17
+
18
+ base_url = "https://api.ppinfra.com/v3"
19
+
20
+
21
+ # minimax-hailuo-02-6s-768p minimax-hailuo-02-6s-768p minimax-hailuo-02-6s-1080p
22
+ async def create_task(request: VideoRequest, api_key: Optional[str] = None):
23
+ api_key = api_key or "sk_fh6OykfJHgO_Hx2TWBRe2SJMC6quHvCN7g--fO5FfcQ"
24
+
25
+ payload = {
26
+
27
+ "prompt": request.prompt,
28
+ "image_url": request.first_frame_image,
29
+
30
+ "duration": request.duration,
31
+ "resolution": request.resolution.upper(),
32
+ "enable_prompt_expansion": request.prompt_optimizer
33
+ }
34
+ response = await make_request(
35
+ base_url=base_url,
36
+ api_key=api_key,
37
+
38
+ path="/async/minimax-hailuo-02",
39
+ payload=payload,
40
+ )
41
+
42
+ # return response # {'task_id': 'f97d3f93-bb29-47d9-9327-77e70982bd43'}
43
+
44
+ video_response = VideoResponse(
45
+ task_id=response['task_id'],
46
+ base_resp={
47
+ "status_code": 0,
48
+ "status_msg": "Processing"
49
+ }
50
+ )
51
+
52
+ await redis_aclient.set(video_response.task_id, api_key, ex=7 * 24 * 3600) # todo 装饰器
53
+ return video_response
54
+
55
+
56
+ async def get_task(task_id: str):
57
+ token = await redis_aclient.get(task_id) # 绑定对应的 token
58
+ token = token and token.decode()
59
+
60
+ logger.debug(f"token: {token}")
61
+ if not token:
62
+ raise HTTPException(status_code=404, detail="TaskID not found")
63
+
64
+ response = await make_request(
65
+ base_url=base_url,
66
+ api_key=token,
67
+
68
+ path=f"/async/task-result?task_id={task_id}",
69
+
70
+ method='GET'
71
+ )
72
+ logger.debug(bjson(response))
73
+ """
74
+ {
75
+ "audios": [],
76
+ "extra": {},
77
+ "images": [],
78
+ "task": {
79
+ "eta": 0,
80
+ "progress_percent": 0,
81
+ "reason": "",
82
+ "status": "TASK_STATUS_SUCCEED",
83
+ "task_id": "f97d3f93-bb29-47d9-9327-77e70982bd43",
84
+ "task_type": "MINIMAX_HAILUO_02_6S_768P"
85
+ },
86
+ "videos": [
87
+ {
88
+ "nsfw_detection_result": null,
89
+ "video_type": "mp4",
90
+ "video_url": "https://faas-minimax-video-1312767721.cos.ap-shanghai.myqcloud.com/prod/281961854701760-ceb3b321-0ed3-43a3-9bb8-ca579a8abd4f.mp4?q-sign-algorithm=sha1&q-ak=AKIDHOHvKVnrgHkyxhCTyOdeSjoiRxGPSJ0V&q-sign-time=1750392487%3B1750396087&q-key-time=1750392487%3B1750396087&q-header-list=host&q-url-param-list=&q-signature=202c563db2ab6385a7ebe3e4650ee01ed3376e06",
91
+ "video_url_ttl": "0"
92
+ }
93
+ ]
94
+ }
95
+ """
96
+ video_response = VideoResponse(
97
+ task_id=task_id,
98
+ status="Processing",
99
+ base_resp={
100
+ "status_code": 0,
101
+ "status_msg": "Processing"
102
+ }
103
+ )
104
+ if response['task']['status'] == 'TASK_STATUS_SUCCEED':
105
+ video_response.status = "Success"
106
+ video_response.base_resp.status_msg = "Success"
107
+ video_response.videos = response['videos']
108
+
109
+
110
+ elif any(i in response['task']['status'].lower() for i in {"fail", 'error'}):
111
+ video_response.status = "Failed"
112
+ video_response.base_resp.status_code = 1027
113
+ video_response.base_resp.status_msg = "Failed"
114
+
115
+ return video_response # {'task_id': 'f97d3f93-bb29-47d9-9327-77e70982bd43'}
116
+
117
+
118
+ if __name__ == '__main__':
119
+ api_key = os.getenv('PPIO_API_KEY')
120
+
121
+ payload = {
122
+ "image_url": "https://static.ppinfra.com/docs/assets/minimax-hailuo-video-02-input-image.jpg",
123
+ "prompt": "戴着太阳镜的毛茸茸的熊猫在日出时的雪山顶上跳舞,左移运镜",
124
+ "duration": 6,
125
+ "resolution": "768P",
126
+ "enable_prompt_expansion": True
127
+ }
128
+
129
+ request = VideoRequest(
130
+ prompt="戴着太阳镜的毛茸茸的熊猫在日出时的雪山顶上跳舞,左移运镜",
131
+ first_frame_image="https://static.ppinfra.com/docs/assets/minimax-hailuo-video-02-input-image.jpg",
132
+ duration=6,
133
+ resolution="768P",
134
+ )
135
+
136
+ # r = arun(create_task(request, api_key=api_key))
137
+
138
+ # arun(get_task("d8b048d0-5c54-42ef-a691-3feab31693fe"))
139
+
140
+ # print(request.model_dump_json(exclude_none=True))
141
+
142
+ arun(get_task("44d7dabc-68ef-49af-afce-f00c39edd2d9"))
@@ -5,17 +5,17 @@ from meutils.pipe import *
5
5
  from meutils.caches import rcache
6
6
  from meutils.decorators.retry import retrying
7
7
 
8
- username = "d1999983904" # 包月
8
+ username = "d1982743732" # 包月
9
9
  password = "1h29rymg"
10
10
 
11
11
 
12
- @rcache(ttl=60 - 50)
12
+ @rcache(ttl=120)
13
13
  @retrying()
14
14
  async def get_proxy_list():
15
- secret_id = os.getenv("KDLAPI_SECRET_ID") or "owklc8tk3ypo00ohu80o"
16
- signature = os.getenv("KDLAPI_SIGNATURE") or "8gqqy7w64g7uunseaz9tcae7h8saa24p"
15
+ secret_id = os.getenv("KDLAPI_SECRET_ID")
16
+ signature = os.getenv("KDLAPI_SIGNATURE")
17
17
  url = f"https://dps.kdlapi.com/api/getdps/?secret_id={secret_id}&signature={signature}&num=1&pt=1&format=json&sep=1"
18
- async with httpx.AsyncClient() as client:
18
+ async with httpx.AsyncClient(timeout=30) as client:
19
19
  response = await client.get(url)
20
20
  response.raise_for_status()
21
21
  proxy_list = response.json().get('data').get('proxy_list')
@@ -32,25 +32,27 @@ if __name__ == '__main__':
32
32
  # arun(get_proxy_list())
33
33
 
34
34
  page_url = "https://icanhazip.com/" # 要访问的目标网页
35
- # page_url = "https://httpbin.org/ip"
36
35
 
37
36
 
37
+ # page_url = "https://httpbin.org/ip"
38
+
38
39
  async def fetch(url):
39
- # proxy = await get_one_proxy()
40
- proxy = "http://154.9.253.9:38443"
41
- # proxy="https://tinyproxy.chatfire.cn"
42
- # proxy="https://pp.chatfire.cn"
43
- proxy="http://110.42.51.201:38443"
44
- proxy="http://110.42.51.223:38443"
45
- proxy = "http://110.42.51.223:38443"
40
+ proxy = await get_one_proxy()
41
+ # proxy = "http://154.9.253.9:38443"
42
+ # # proxy="https://tinyproxy.chatfire.cn"
43
+ # # proxy="https://pp.chatfire.cn"
44
+ # proxy = "http://110.42.51.201:38443"
45
+ # proxy = "http://110.42.51.223:38443"
46
+ # proxy = "http://110.42.51.223:38443"
46
47
 
47
48
  # proxy=None
48
- proxy="https://npjdodcrxljt.ap-northeast-1.clawcloudrun.com"
49
+ # proxy = "https://npjdodcrxljt.ap-northeast-1.clawcloudrun.com"
49
50
 
50
51
  async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
51
52
  resp = await client.get(url)
52
53
  logger.debug((f"status_code: {resp.status_code}, content: {resp.text}"))
53
54
 
55
+
54
56
  def run():
55
57
  loop = asyncio.get_event_loop()
56
58
  # 异步发出5次请求
@@ -59,3 +61,5 @@ if __name__ == '__main__':
59
61
 
60
62
 
61
63
  run()
64
+
65
+ # arun(get_one_proxy())
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : transparent_transmission
5
+ # @Time : 2025/6/18 16:45
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description : 透传
10
+
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : tasks
5
+ # @Time : 2025/6/18 16:51
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+
12
+ from meutils.pipe import *
13
+ from meutils.llm.clients import AsyncOpenAI
14
+
15
+
16
+ # dynamic_router
17
+ # async def create_task(
18
+ # request: dict,
19
+ # api_key: Optional[str] = None
20
+ # ):
21
+ # payload = request
22
+ # client = AsyncOpenAI(base_url=base_url, api_key=api_key)
23
+ # response = client.post(
24
+ # ,
25
+ # body=payload,
26
+ # cast_to=dict,
27
+ # )
28
+ # return response