MeUtils 2025.6.18.16.41.23__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 (32) hide show
  1. {MeUtils-2025.6.18.16.41.23.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/METADATA +261 -261
  2. {MeUtils-2025.6.18.16.41.23.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/RECORD +29 -27
  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/{veo → ppio}/__init__.py +1 -1
  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/apis/veo/videos.py +0 -48
  29. {MeUtils-2025.6.18.16.41.23.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/LICENSE +0 -0
  30. {MeUtils-2025.6.18.16.41.23.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/WHEEL +0 -0
  31. {MeUtils-2025.6.18.16.41.23.dist-info → MeUtils-2025.6.20.18.7.13.dist-info}/entry_points.txt +0 -0
  32. {MeUtils-2025.6.18.16.41.23.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,15 +530,16 @@ 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
536
538
  meutils/apis/uptime_kuma/common.py,sha256=ZJFSEeoxD_Eb5eFL9K2xxajVJgTnTwgm7rm4fc0nv1I,1597
537
539
  meutils/apis/uptime_kuma/国产分组.py,sha256=OIiUUFfjWEEJHg5fr8Vf5xSBWkbXboQ4f3jUiaTtQSI,1681
538
- meutils/apis/veo/__init__.py,sha256=H8hxhes3ziAWuh9IfABmC8P24vlzWm8IegXj6xfjjhc,271
539
- meutils/apis/veo/videos.py,sha256=mxhS9fywFPbHnX9CNQKIub1tI4M2AlB3x3V4ipVuKvs,1134
540
540
  meutils/apis/videos/__init__.py,sha256=OCykr_XRIOH18Xh5hfBq5yMxbk8e9Myk4KuAtrtgAWw,272
541
541
  meutils/apis/videos/sora.py,sha256=G3wGlvTYl4YfG20L2HXPhmhZ4HwrlIFSU-KYM-TdALg,295
542
+ meutils/apis/videos/veo.py,sha256=DAjDVPCOq3uXADZmD_X0os8V8YNOiLIgmZbqp7NWN_g,1824
542
543
  meutils/apis/vidu/__init__.py,sha256=8nQN-RiZGJlZaZGVFbtHgK57_Ml5g_vFCiOImWwBm0I,242
543
544
  meutils/apis/vidu/vidu_video.py,sha256=rkt18PbQ26r_q82WT2ptE0eL2A0rX6tDsTPjmG-eQ9c,18266
544
545
  meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNHA,241
@@ -547,7 +548,7 @@ meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81o
547
548
  meutils/apis/volcengine_apis/__init__.py,sha256=gtu5ZNCc3up8bzgrCi10uwhsC04HpuCEEPXR_iVCNJE,244
548
549
  meutils/apis/volcengine_apis/images.py,sha256=F9LXXptesnASB_Al7rkEshb2S5r3PixZd8w0mif5468,5463
549
550
  meutils/apis/volcengine_apis/tasks.py,sha256=da2wYs2bqjYte_P2aFbSdKkLBaghuAj6vVKIlgdMg5A,4495
550
- meutils/apis/volcengine_apis/videos.py,sha256=S0KCkXSb360BJXmqW3IcVpSRH9s2Krxw0ImKRMRPQsY,7034
551
+ meutils/apis/volcengine_apis/videos.py,sha256=HYocA1TTflYt47aLpB7v9UZ3GNhvcomEdi_k9v4f_vQ,7065
551
552
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
552
553
  meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
553
554
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
@@ -591,12 +592,12 @@ meutils/cmds/subprocess_demo.py,sha256=oTeTIx8k6XwtOT6hZpmy9XNcRErzilqWcdoxcrVcH
591
592
  meutils/config_utils/__init__.py,sha256=GhgsStfGJDC8F_YgC6X5Jnj9HkgXJXxeYiJWTAkWKTo,271
592
593
  meutils/config_utils/manager.py,sha256=du-8e9Zdgnrn9e0b4GPR6FGtuQY7DLWNJqgkoU0TZ48,3147
593
594
  meutils/config_utils/lark_utils/__init__.py,sha256=Gf-5Y8uZiqY9jdbfiIboL92MQjOTOo0ZZ245PGxCbaY,297
594
- meutils/config_utils/lark_utils/common.py,sha256=wBeztamCzJ6SqFsf5tyTv_MU3pzl8j01NF2VZ2FKjZA,14445
595
+ meutils/config_utils/lark_utils/common.py,sha256=W2hRSn_hyXdxpUrs3tkTQZbItLdO0XSqqXD2-yOvhIA,15190
595
596
  meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfHOno5NxNAio,293
596
597
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
597
598
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
598
599
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
599
- meutils/data/VERSION,sha256=3_FEf2FjHEyGc5vYdNyNe7OobJ3NG2kMcw5NtP4dXvs,19
600
+ meutils/data/VERSION,sha256=EFj2RFf64nUw3Ya3XD-ZQiAy6Vj7O2LfbwDL80wwZOY,19
600
601
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
601
602
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
602
603
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -678,11 +679,12 @@ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs
678
679
  meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
679
680
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
680
681
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
681
- meutils/llm/check_utils.py,sha256=_Ity0z6lKOrKO7DoiF20HWA8jq_c8xwTHOdtDhvPz2o,8594
682
+ meutils/llm/check_utils.py,sha256=9ioKzj2NIZFMJiIS0zkUb_0eGNfKZf6ZXpyPt_6VTIo,8680
682
683
  meutils/llm/clients.py,sha256=qZa9WC85Ah4tdEd-EI_P_038mnJLq_z-smaJdwJp-EM,2956
683
684
  meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
684
685
  meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
685
686
  meutils/llm/models.py,sha256=dDdU_WzcQGdgaFOYtMJpDYmt5uKFKEz2pc0guqNVkSk,3175
687
+ meutils/llm/models_mapping.py,sha256=fWbIs7_R65nCicfgvwA1zw7d7BjnEDBZhoNA1TIxeIU,5523
686
688
  meutils/llm/utils.py,sha256=GuM5uu08-iIeE7g6GeJdIz62_5CiLShmA10dIKFGLPI,4823
687
689
  meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
688
690
  meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
@@ -826,7 +828,7 @@ meutils/schemas/dreamfaceapp_types.py,sha256=Wm0HqvuD7suR9zbyI3xslb8gbqA4KvrIRXC
826
828
  meutils/schemas/embedding.py,sha256=rJ-XQ6X8VmACOi53BOJtkjROrNcf1ZUhzxKkClM9J0M,867
827
829
  meutils/schemas/fal_types.py,sha256=a6glb5xlo0MEuKZrWtT7B8kLjwnLEhIVPbpnDWpBsJc,360
828
830
  meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU,270
829
- meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
831
+ meutils/schemas/hailuo_types.py,sha256=3nx2jgDmi2dpwEfJ6xRiZQ-9nhOOXQgTz1yyLz5d-ik,7722
830
832
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
831
833
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
832
834
  meutils/schemas/image_types.py,sha256=9EIpJCSzGKGQG3r5J3JBxgduwmTuuw5VAsVJ-Ab1sdo,16433
@@ -864,8 +866,8 @@ meutils/schemas/yuanbao_types.py,sha256=bI_CF9ybaJ1ux8NgP5gEi33k_K_vHmlyD09fxzhY
864
866
  meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVIU,272
865
867
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
866
868
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
867
- meutils/schemas/oneapi/_types.py,sha256=_QAl69kZ7tEU2UMmSSCNIVHg_0lc8bm5CKqNa0eDvBc,3091
868
- 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
869
871
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
870
872
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
871
873
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -890,7 +892,7 @@ meutils/serving/fastapi/utils.py,sha256=H5lQSU7-IfJ2w9FWbaJ34LCbQSaNTFSU7z1pG5wZ
890
892
  meutils/serving/fastapi/__demo/__init__.py,sha256=TxXjqy2ZxAkadPxqN92Xq3ixCUYkQ-4X6UxsReRpHhc,271
891
893
  meutils/serving/fastapi/__demo/异步任务.py,sha256=60_ruA4ljlTLIP5zxcejmm9WJ0SDuqpsO49SZK9vA_s,1444
892
894
  meutils/serving/fastapi/dependencies/__init__.py,sha256=TQcxvWqZdA2jZZX84NtAij-bhS7ihcMLx1-xsbSpV4g,384
893
- meutils/serving/fastapi/dependencies/auth.py,sha256=fGzhGSytpyQRUljl7Lnz_IL8TX5mXb9D0GeVu5vDw5I,2520
895
+ meutils/serving/fastapi/dependencies/auth.py,sha256=o6U-PB5laYhPGHWm_-AUVER2hV-K783K5DVfbfFWPm4,2538
894
896
  meutils/serving/fastapi/dependencies/headers.py,sha256=ddifDCJyELqfPwuUX12x-lH0KNylu2iidc7Mupcvl6k,922
895
897
  meutils/serving/fastapi/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
896
898
  meutils/serving/fastapi/exceptions/http_error.py,sha256=-cBBWNJH3qp1GMSaa9AlojJ18lBLFEk0KHoGUnmV3u4,2601
@@ -918,9 +920,9 @@ meutils/settings/__init__.py,sha256=jZc0NXPA9zIMcTAYypSQDxJqvXakyJ0ztK9ZMND2Q7U,
918
920
  meutils/settings/base.py,sha256=kb3QVS2eUFWyGgvegtSK4cqJFF76J1JctTSzCVqc1Mo,264
919
921
  meutils/settings/demo.py,sha256=Ht3t6LREQsKa5W2owNrOZNAoZfS-zItIFNwGhhPj-4k,484
920
922
  meutils/str_utils/Translator.py,sha256=tfvNQIeVCqmX9yW6jobeibDHG6X-XecSSAx9kJIFFyw,1258
921
- meutils/str_utils/__init__.py,sha256=7rVAWR0bbxVvuWFwyC0ZedpY1QVSmrrLwLIfPAfjWqM,10238
923
+ meutils/str_utils/__init__.py,sha256=M7lv7K22ixxJkwUEWLzfpcUt3bfJUpaEONSnvq9nZ2g,10906
922
924
  meutils/str_utils/json_utils.py,sha256=10QhpmzAWI0hERdQb5JDeNqphI5QWFTjeZJhiYkuI4c,2827
923
- meutils/str_utils/regular_expression.py,sha256=HqEcPNyUHBBo7oJlwOFNpiFiO5NCXB8hD41nI1826fU,6161
925
+ meutils/str_utils/regular_expression.py,sha256=sgD0Tgn7IFUT6hAQ4IJxB-YJpJL5df8LywvgBZQF88c,6393
924
926
  meutils/str_utils/__translater/__init__.py,sha256=mtDbKL_Qdkeq5VPVO1M4ejf9H8PzKM5h7iepqkBG8N0,277
925
927
  meutils/str_utils/__translater/tencent.py,sha256=1E_56l6-A49Yuz2ZrMKxt-QJfcf0xDYN2X0dg58Dytk,1408
926
928
  meutils/str_utils/__translater/translater.py,sha256=A_9NLVvkjzPd9omIcJGhux21D-gcCxemyrZ7o6uGx_Q,1238
@@ -994,9 +996,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
994
996
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
995
997
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
996
998
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
997
- MeUtils-2025.6.18.16.41.23.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
998
- MeUtils-2025.6.18.16.41.23.dist-info/METADATA,sha256=EKYJez4U_HPd4eIE1HWqxo4Z5blwwrOI7_Zi-Pwvs3o,32834
999
- MeUtils-2025.6.18.16.41.23.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
1000
- MeUtils-2025.6.18.16.41.23.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
1001
- MeUtils-2025.6.18.16.41.23.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
1002
- MeUtils-2025.6.18.16.41.23.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
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  # @Project : AI. @by PyCharm
4
4
  # @File : __init__.py
5
- # @Time : 2025/6/18 16:34
5
+ # @Time : 2025/6/20 11:31
6
6
  # @Author : betterme
7
7
  # @WeChat : meutils
8
8
  # @Software : PyCharm
@@ -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