MeUtils 2025.5.7.18.34.50__py3-none-any.whl → 2025.5.8.13.7.42__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.
@@ -1,5 +1,6 @@
1
1
  apps/__init__.py,sha256=6TwkuFgKafDZrNMtD3xe5liiNkNRB34mFBXxICbdPsw,271
2
2
  apps/spider.py,sha256=Qvfd8LEfqvtE8Z8fY7hgJfOUtBassJhCToGiCARtM4Y,1139
3
+ apps/x.py,sha256=lxUp8uWHa2e3WtBNQHPwIKysbWdFmFjgToiRU-lT6Ok,1282
3
4
  apps/xfPPT_demo.py,sha256=-W5LbSrt2GBZ3ojq6P24nivdiOfI8vwolw-O7yOyUKY,10306
4
5
  examples/__init__.py,sha256=qcNIwrjAAGqLJP3F0YcEJftLpBSQoBMfnmDlNXsBSNI,250
5
6
  examples/args_demo.py,sha256=fPI_h8V2fxEpHin9WfJn6cRzitbbP5Pv6fVfFJkfUAg,1331
@@ -361,7 +362,7 @@ meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,
361
362
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
362
363
  meutils/apis/fal/images.py,sha256=0diKFpsiO_ZZTL8LnNMN5wV2urfhIEIqIMe_HdrdiLs,8707
363
364
  meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
364
- meutils/apis/fal/kling_videos.py,sha256=PXRT1rsCSb1QlpmFcGIKYxgRkVmEfMuW7m3iJi1Wk60,2385
365
+ meutils/apis/fal/kling_videos.py,sha256=kL4SRpZafRSCRODtiNqeXauxfamHNdcBTE65BrG1rVA,2554
365
366
  meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
366
367
  meutils/apis/fal/videos.py,sha256=napknQKM2-cU3fKlqXD2BApOVyyIMGxC-2IimR0LBYw,3529
367
368
  meutils/apis/gitee/__init__.py,sha256=rmAktsUvEtk7_F28P5C65wuu00nmrbu5bOw6PiCRTS0,271
@@ -380,10 +381,11 @@ meutils/apis/google/upload.py,sha256=8stvopyIs03ywY6fyGHAtow1TarpMKjsb1V9x9GMgSI
380
381
  meutils/apis/hailuoai/__init__.py,sha256=2g9okuB6pxPh1hDiAE9HZo37baqIO9cX-67RpyfBj1k,272
381
382
  meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc,1483
382
383
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
384
+ meutils/apis/hailuoai/images.py,sha256=NVTXunBra0k5mm5r4uQqZ8mr2n8-e8tCwZuU_24q680,20640
383
385
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
384
386
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
385
- meutils/apis/hailuoai/videos.py,sha256=IVDbH6IB8e_TT_8Lk_wPwl8M8lqEnQYxr5TsHmXCBRI,21197
386
- meutils/apis/hailuoai/yy.py,sha256=du4CmLx5ebAI5FXe8NzQsmwpdA1_Kdxm7hgo5k9Zf-A,9016
387
+ meutils/apis/hailuoai/videos.py,sha256=UxG1DQuRhOehaWxN7V--tgxHtyTmaYuR2PCLLAmRhrM,22409
388
+ meutils/apis/hailuoai/yy.py,sha256=uBwtpMhCE4lQyDqEsua4eupGAU0A2N0UJN20pE1tOUo,8962
387
389
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
388
390
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
389
391
  meutils/apis/hf/gradio.py,sha256=tz4oiY0PHLT48aQocV0wBeuz53mLo8Pz_bQBg43pHpA,839
@@ -398,9 +400,9 @@ meutils/apis/hunyuan/image_tools.py,sha256=SYovMKvv0QCPAYnIPqpDfXyVSOvyEuFlNNCA1
398
400
  meutils/apis/images/__init__.py,sha256=hs7HUJZvw_3DAtoapPnbZsEb4ng1p0a6fJGFFWwUcUk,272
399
401
  meutils/apis/images/deepinfra.py,sha256=lMqfU0LIXEzHiAS31dCcoTnPIE6tpoDJhq61H0TVJPg,3219
400
402
  meutils/apis/images/demo.py,sha256=Cjk-EKMKbp44czykW_44qR0TzElX8nNCALqXBBw5sJA,4405
401
- meutils/apis/images/edits.py,sha256=4DDBkr-n_5F6N1bLkSS2puznyPv1cROFhohZc7wVSpY,10155
403
+ meutils/apis/images/edits.py,sha256=tdtFKVaMti4zOAh9WQ_VWrKyuJyomZ3-Fwh1DK7EJAM,10189
402
404
  meutils/apis/images/eidt.py,sha256=s8IBbCjwwoogIUf-d2O7nkawUmly9n19nvLYPaLEeg4,1217
403
- meutils/apis/images/recraft.py,sha256=t6BQJEL5WQgD5tMclHu8rgKjgaj_R6iYfpDn6eJl0VM,72410
405
+ meutils/apis/images/recraft.py,sha256=mDlwUOR6xHUn2Pum7a8VMZZfPCy85lP_ncaQka3fHec,72513
404
406
  meutils/apis/images/flux/__init__.py,sha256=W_PZabQm6EmtJYmzEiEpL_WCXTAW0AiJ-t_n5UTrE8c,271
405
407
  meutils/apis/images/flux/fluxpro.py,sha256=NFl9t9C3R3jsNJpez4o9tOz3r-fjRXj-vKMxCSTRDTU,4022
406
408
  meutils/apis/images/flux/mystic.py,sha256=cUkqaMAbd3dSBCvFEoNBBoEoWCGzvBJWPEkEq1Q8xzw,3616
@@ -421,7 +423,7 @@ meutils/apis/jimeng/doubao.py,sha256=5OdnBpmZQOCLIb6lnN8YrL7J7E0XF47q0UF-z6asSuI
421
423
  meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
422
424
  meutils/apis/jimeng/files.py,sha256=AlsAlQGufGm84TldUBLFZpZQGD6INN5xIwHql9ocPj4,11310
423
425
  meutils/apis/jimeng/images.py,sha256=KZFxD7kp8QdIqNK71sE8disShnQpUzvOv79FK8mZOZs,13814
424
- meutils/apis/jimeng/videos.py,sha256=oSntgqp0efv_69Qj_-GR8zD94hIMqUh-Hubk0nyKRGw,5377
426
+ meutils/apis/jimeng/videos.py,sha256=nMW4k1i-B6N5OjQv5ovyOhs2B_a0Hvz6cw-oedzNu6A,5439
425
427
  meutils/apis/jimeng/videos_videos.py,sha256=A6oWLKcrb6YMIumqUMQS3KVP9bhOEKLUOIlAUlbREmE,12259
426
428
  meutils/apis/jina/__init__.py,sha256=WnZ4LOv-bzC1brd5FZHOHmgq4c0UaFbnksEj2_LzXxQ,292
427
429
  meutils/apis/jina/common.py,sha256=dwSJboUcZtvBTKRcvAUcgMD933VfYCUBDdtxbw1ioiE,1099
@@ -444,7 +446,7 @@ meutils/apis/monica/llm.py,sha256=gYyBPOTvmoNFaa1KmW3OlSsRKeN7C97EyPUa264nJ08,26
444
446
  meutils/apis/napkin/__init__.py,sha256=EWwpRJEbN46d6Dk9PHAZvsYmqD_EOK0jjKQL1kYtcKs,271
445
447
  meutils/apis/napkin/icons.py,sha256=_L8EaSeQ6ChT5w7q3jnj_AcRhKvNiBg3-qUKo9JQ12o,2217
446
448
  meutils/apis/oneapi/__init__.py,sha256=wg_kqNkFqOkP70vnOHvAeKREps57Rqliu5yKC0gsgLk,284
447
- meutils/apis/oneapi/channel.py,sha256=tx4-_U18JU1U4-FIAwaKu9m_oOtPRU-8hPiqYlDZ2CU,11277
449
+ meutils/apis/oneapi/channel.py,sha256=fDNxgh2vLrKFEisxe0aZ_z6Kl67BWiX9-VvXDRui3qY,11271
448
450
  meutils/apis/oneapi/common.py,sha256=AIs8ro-1qui3FG42msBY6dL_zt9QJ0jS63qtp-XTlY4,3617
449
451
  meutils/apis/oneapi/demo.py,sha256=i9iBK2OftTvOZdPcCo2nxu8zs0fSKIZbzD8DRKQNla8,1851
450
452
  meutils/apis/oneapi/log.py,sha256=gNFFXXcG2Xp5ttO7Q7qR6n6GQUheuU8SOCjJPXZudLY,1447
@@ -565,7 +567,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
565
567
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
566
568
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
567
569
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
568
- meutils/data/VERSION,sha256=sQ4C7ud4BsuuVZOqwlpLPp-17QT-WEg7ZWEVYmodcJQ,19
570
+ meutils/data/VERSION,sha256=ExDN0gvKj81a8SIcGzgE6-xEWAg_JPn-iQf6RzwxCiE,19
569
571
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
570
572
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
571
573
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -643,8 +645,8 @@ meutils/io/parsers/fileparser/filetype/types/font.py,sha256=nP5Ey-EcKMU4phGYtIlQ
643
645
  meutils/io/parsers/fileparser/filetype/types/image.py,sha256=r8pINANPJZbCEmZKn8F74fFffk4INtDin_GtQtQImZs,9130
644
646
  meutils/io/parsers/fileparser/filetype/types/isobmff.py,sha256=zLXCbTET6wp_9yq8jE3bhBRTaCdSAKma5ElyHVGd2Sk,958
645
647
  meutils/io/parsers/fileparser/filetype/types/video.py,sha256=DfkFd5ofnEK25r_n71LxjX3nAAgO8xJ7Op_lL9uEbNc,5371
646
- meutils/jwt_utils/__init__.py,sha256=hU1CYBK90Q9QKVrf1s6VFKZwWjHioHa6bO2AuDn7_eo,272
647
- meutils/jwt_utils/common.py,sha256=MlWDLtxiF-WeRl3oyK94KIa6BKFIXVeJtaQUnpa9ayo,814
648
+ meutils/jwt_utils/__init__.py,sha256=zs4pIDk4sQ82o7meMwt64_tv2WBMRTaXX9doe0ilvvs,298
649
+ meutils/jwt_utils/common.py,sha256=u2PPQJ9S-83y8f3Sb5L2OCRP7o-xV56EAmlzMZ8Je0Q,2352
648
650
  meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
649
651
  meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
650
652
  meutils/llm/check_utils.py,sha256=xrP7om1vG7kbZ0G0Dtxm8Mm6RGDRwcVUIliVCPrtng4,6223
@@ -657,7 +659,7 @@ meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
657
659
  meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
658
660
  meutils/llm/completions/chat_gemini.py,sha256=0x9HQxuDAHoWJ79JoaEKKWVNy4PRyd-Et-j8V93NqkY,4395
659
661
  meutils/llm/completions/chat_plus.py,sha256=RPYQqx4vc57gevcz0gUS7QPvGm0M12ktAspMKJtoeuk,7727
660
- meutils/llm/completions/chat_spark.py,sha256=G2mK_iQViGFHJTFjuW7CPBPm7bz64HXkyTWQE-k3m_Q,10777
662
+ meutils/llm/completions/chat_spark.py,sha256=VYEy4mItsKxEA-tXxrdi8vRptU1aIsKmif9JdTjxv10,10818
661
663
  meutils/llm/completions/chat_videos.py,sha256=P3Yz34dkNlxCxzOuKHJ9pHIA4UXK3Y5RXPzVnQjb9rc,2915
662
664
  meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
663
665
  meutils/llm/completions/deep2x.py,sha256=Fo5cC1jXOFFXOZeRGk9IpCZVCQc8vgOizuYFuPaWujA,3746
@@ -792,7 +794,7 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
792
794
  meutils/schemas/hailuo_types.py,sha256=lZ3Q07QNgxJvrX8JJvalxUsro4gGLOMQDusSEwV4EO0,7429
793
795
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
794
796
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
795
- meutils/schemas/image_types.py,sha256=uTi-mpt3cbKoeDw5hjRW-nOrPKVPVQMOGHLEstJw8hs,13859
797
+ meutils/schemas/image_types.py,sha256=oZqmKkN22-AWxliCHuYKHT6FEnZm2f-9eChq8Zgf7mU,13873
796
798
  meutils/schemas/jimeng_types.py,sha256=Uiqbtd4scpDHDTuXQaS8_6em8PrSnuQb_JkCQuBYkOM,1944
797
799
  meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
798
800
  meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
@@ -828,7 +830,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
828
830
  meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
829
831
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
830
832
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
831
- meutils/schemas/oneapi/common.py,sha256=AtXuVugPN-1T3MjAH_dP6rjZB6gnt2l8EScdAM6ebXY,38070
833
+ meutils/schemas/oneapi/common.py,sha256=GVW3bYwnwmLqtI_uZDzbzpj_wsZXXkcZ5O_322LE5YI,38206
832
834
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
833
835
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
834
836
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -957,9 +959,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
957
959
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
958
960
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
959
961
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
960
- MeUtils-2025.5.7.18.34.50.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
961
- MeUtils-2025.5.7.18.34.50.dist-info/METADATA,sha256=wwDNNDEhbrm0WXAGaFQhmtCAVmHzlFeKLuLVZ-DuBzA,32833
962
- MeUtils-2025.5.7.18.34.50.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
963
- MeUtils-2025.5.7.18.34.50.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
964
- MeUtils-2025.5.7.18.34.50.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
965
- MeUtils-2025.5.7.18.34.50.dist-info/RECORD,,
962
+ MeUtils-2025.5.8.13.7.42.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
963
+ MeUtils-2025.5.8.13.7.42.dist-info/METADATA,sha256=j8T00Anjp8oM4pP2T00seVYrOblW3bO4fbpofo2MgC4,32832
964
+ MeUtils-2025.5.8.13.7.42.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
965
+ MeUtils-2025.5.8.13.7.42.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
966
+ MeUtils-2025.5.8.13.7.42.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
967
+ MeUtils-2025.5.8.13.7.42.dist-info/RECORD,,
apps/x.py ADDED
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : x
5
+ # @Time : 2025/5/8 11:18
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+
13
+
14
+
15
+
16
+ def jwt_token_decode(jwt_token):
17
+ # 提取 payload 部分
18
+ payload_part = jwt_token.split('.')[1]
19
+
20
+ # 对 payload 进行 Base64 解码
21
+ try:
22
+ # 尝试标准 Base64 解码
23
+ decoded_payload = base64.b64decode(payload_part + '==', validate=True).decode('utf-8')
24
+ except base64.binascii.Error:
25
+ # 尝试 URL 安全的 Base64 解码
26
+ decoded_payload = base64.urlsafe_b64decode(payload_part + '==').decode('utf-8')
27
+
28
+ # 解析 JSON 字符串
29
+ payload = json.loads(decoded_payload)
30
+
31
+ return payload
32
+
33
+
34
+ if __name__ == '__main__':
35
+ jwt_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3Mzg4MTQsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLmhhaWx1b2FpLmNvbS9wcm9kL3VzZXJfYXZhdGFyLzE3MDYyNjc3MTEyODI3NzA4NzItMTczMTk0NTcwNjY4OTY1ODk2b3ZlcnNpemUucG5nIiwiZGV2aWNlSUQiOiIyNDM3MTMyNTI1NDU5ODY1NjIiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.o0SoZMSTWkXNHxJjt3Ggby5MJWSfd-rnK_I95T_WMP8"
36
+ print(jwt_token_decode(jwt_token))
@@ -21,9 +21,12 @@ from fal_client import AsyncClient
21
21
 
22
22
 
23
23
  # 平台/模型/版本
24
- def model_mapper(model: str):
25
- return f"fal-ai/{model.removeprefix('fal-ai/')}"
26
-
24
+ models_mapping ={
25
+ "kling-video/v2/master/image-to-video": "latentsync",
26
+ "kling-video/v2/master/text-to-video": "latentsync",
27
+ "kling-video/lipsync/audio-to-video": "latentsync", # todo
28
+ "kling-video/lipsync/text-to-video": "latentsync",
29
+ }
27
30
 
28
31
  async def create_task(request: VideoRequest, token: Optional[str] = None):
29
32
  """https://fal.ai/models/fal-ai/latentsync/api#queue-submit
@@ -0,0 +1,464 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : videos
5
+ # @Time : 2024/10/21 20:17
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description : https://platform.minimaxi.com/document/video_generation?key=66d1439376e52fcee2853049
10
+ # https://useapi.net/docs/start-here/setup-minimax
11
+ # token 过期时间一个月: 看下free hailuo
12
+ # https://jwt.io/
13
+
14
+ # todo: check token
15
+
16
+ import oss2
17
+
18
+ from meutils.pipe import *
19
+ from meutils.hash_utils import md5
20
+ from meutils.io.files_utils import to_bytes
21
+ from meutils.jwt_utils import decode_jwt_token
22
+ from meutils.str_utils.json_utils import json_path
23
+
24
+ from meutils.schemas.image_types import ImageRequest, ImagesResponse
25
+
26
+ from meutils.schemas.hailuo_types import BASE_URL, FEISHU_URL
27
+ # from meutils.schemas.hailuo_types import BASE_URL_ABROAD as BASE_URL, FEISHU_URL_ABROAD as FEISHU_URL
28
+ from meutils.schemas.hailuo_types import BASE_URL_ABROAD
29
+ from meutils.schemas.hailuo_types import VideoRequest, VideoResponse
30
+ from meutils.llm.check_utils import check_tokens
31
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
32
+ from meutils.decorators.retry import retrying
33
+ from meutils.notice.feishu import send_message as _send_message, VIDEOS
34
+
35
+ from meutils.apis.hailuoai.yy import get_yy
36
+
37
+ send_message = partial(
38
+ _send_message,
39
+ title=__name__,
40
+ url=VIDEOS
41
+ )
42
+
43
+ MODEL_MAPPING = {
44
+ # video-01 video-01 video-01-live2d S2V-01
45
+
46
+ "t2v-01": "23000", # 23010
47
+ "t2v-01-director": "23010",
48
+
49
+ "i2v-01": "23001",
50
+ "i2v-01-live": "23011",
51
+ "video-01-live2d": "23011",
52
+ "s2v-01": "23021",
53
+ }
54
+
55
+
56
+ def get_base_url(token):
57
+ data = decode_jwt_token(token)
58
+ if "小螺帽" not in str(data):
59
+ logger.debug(data)
60
+
61
+ return BASE_URL_ABROAD
62
+ else:
63
+ return BASE_URL
64
+
65
+
66
+ # minimax_video-01,minimax_video-01-live2d,,minimax_t2v-01,minimax_i2v-01,minimax_i2v-01-live,minimax_s2v-01
67
+
68
+
69
+ async def upload(file: bytes, token: str):
70
+ data = await get_request_policy(token)
71
+
72
+ access_key_id = data["accessKeyId"]
73
+ access_key_secret = data["accessKeySecret"]
74
+ security_token = data["securityToken"]
75
+ bucket_name = data["bucketName"]
76
+ endpoint = data["endpoint"]
77
+ dir = data["dir"]
78
+
79
+ # 创建OSS客户端 with timer():
80
+ # arun(hailuo_upload(file))
81
+ auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
82
+ bucket = oss2.Bucket(auth, endpoint, bucket_name)
83
+
84
+ # file
85
+ size = len(file)
86
+
87
+ # 要上传的文件路径和文件名
88
+ mimeType = "png"
89
+ filename = f"{uuid.uuid4()}.{mimeType}"
90
+ object_name = f"{dir}/{filename}" # png写死
91
+ bucket.put_object(object_name, file)
92
+
93
+ params = {}
94
+ payload = {
95
+ "originFileName": "_.png",
96
+ # "originFileName": "503af3b5-9c3b-4bdc-a6d4-256debce3dd5_00001_.png",
97
+
98
+ "filename": filename,
99
+ # "fileName": "db884a7c-99a4-40f5-929e-db8769dbf64a.png",
100
+
101
+ "dir": dir,
102
+ "endpoint": "oss-cn-wulanchabu.aliyuncs.com",
103
+ "bucketName": "minimax-public-cdn",
104
+ "size": f"{size}",
105
+ "mimeType": mimeType,
106
+ "fileMd5": md5(file),
107
+ "fileScene": 10
108
+ }
109
+ headers = {
110
+ 'token': token
111
+ }
112
+ logger.debug(headers)
113
+
114
+ BASE_URL = get_base_url(token)
115
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=120) as client:
116
+ response = await client.post("/v1/api/files/policy_callback", params=params, json=payload)
117
+ response.raise_for_status()
118
+ data = response.json()
119
+ logger.debug(bjson(data))
120
+ return data
121
+
122
+ # {'data': {'fileID': '307139766909288449',
123
+ # 'ossPath': 'https://cdn.hailuoai.com/prod/2024-10-28-10/user/multi_chat_file/c9d8fc64-d9bf-42c0-8779-f39973579fca.png?image_process=resize,fw_320/format,webp'},
124
+ # 'statusInfo': {'code': 0,
125
+ # 'debugInfo': '',
126
+ # 'httpCode': 0,
127
+ # 'message': '成功',
128
+ # 'requestID': '33a42a75-15e5-4d4e-b425-eeefc4d3f374',
129
+ # 'serverAlert': 0,
130
+ # 'serviceTime': 1730083971}}
131
+
132
+
133
+ @alru_cache(ttl=1 * 24 * 60 * 60)
134
+ @retrying()
135
+ async def get_access_token(token: str):
136
+ BASE_URL = get_base_url(token)
137
+ logger.debug(BASE_URL)
138
+
139
+ logger.debug(f"get_access_token:{token}")
140
+
141
+ params = {
142
+ 'device_platform': 'web',
143
+ 'app_id': '3001',
144
+ 'version_code': '22201',
145
+ 'uuid': '8c059369-00bf-4777-a426-d9c9b7984ee6',
146
+ 'device_id': '243713252545986562',
147
+ 'os_name': 'Mac',
148
+ 'browser_name': 'chrome',
149
+ 'device_memory': '8',
150
+ 'cpu_core_num': '10',
151
+ 'browser_language': 'zh-CN',
152
+ 'browser_platform': 'MacIntel',
153
+ 'screen_width': '1920',
154
+ 'screen_height': '1080',
155
+ 'unix': f'{int(time.time())}000'
156
+ }
157
+ payload = {}
158
+ headers = {
159
+ 'Content-Type': 'application/json',
160
+ 'token': token,
161
+ 'yy': get_yy(payload, params=params, url="/v1/api/user/renewal")
162
+ }
163
+
164
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
165
+ response = await client.post("/v1/api/user/renewal", params=params, content=json.dumps(payload))
166
+ response.raise_for_status()
167
+ logger.debug(response.json())
168
+ return response.json()['data']['token']
169
+
170
+
171
+ @alru_cache(ttl=1 * 60)
172
+ async def get_request_policy(token):
173
+ """
174
+ {
175
+ "data": {
176
+ "accessKeyId": "STS.NUVNbdQfqTNixCxUTAhdeJToq",
177
+ "accessKeySecret": "DRBsh8Qm8VnXXxTwFMX5KkXVoqbbsPj4ewEfgTLysGvM",
178
+ "securityToken": "CAISiwN1q6Ft5B2yfSjIr5bjBdjQvLlQ44yCemXJsVQUZOtJpZHEkzz2IHhMf3VpAusWsPw1n2tT6/sdlrBoS4JMREPJN5EhtsQLrl75PdKY4Jzltedb0EIf6JFQUUyV5tTbRsmkZj+0GJ70GUem+wZ3xbzlD2vAO3WuLZyOj7N+c90TRXPWRDFaBdBQVH0AzcgBLinpKOqKOBzniXayaU1zoVhYiHhj0a2l3tbmvHi4tlDhzfIPrIncO4Wta9IWXK1ySNCoxud7BOCjmCdb8EpN77wkzv4GqzLGuNCYCkkU+wiMN+vft9ZjKkg7RNBjSvMa8aWlzKYn57OCyt2v8XsXY7EJCRa4bZu73c7JFNmuMtsEbrvhMxzPqIvXbsKp6lh/MSxDblgRIId8dWURExUpTSrBIaOh6M4Bo5NbzHzuOsgSpnkVpz2AlbLiT9M/1aieRiRTcymwO/ayjeq6CeAF3mM8Mm0qPRouTM2+Zo5YD3N1opjTpiapdUYLox8awbuQLp25tMiF6FiLDvouuRqAAQJZHVcOeb5qnR6mkzw5hwzSOXoMXVFzDE2aB7dvRYFD9HiG6T66hE4Xlfpph9H7xWrpaBf5vqHQXp4gyuqVOgFIjdPECwisXlyAKQWMak7bGToh3cetCux3pjq74sP/KAjzSzDkwciJBbn8vZzNKKR/ozxqve925vtPPPWGPowwIAA=",
179
+ "expiration": "2024-10-22T02:55:14Z",
180
+ "dir": "cdn-yingshi-ai-com/prod/2024-10-22-09/user/multi_chat_file",
181
+ "endpoint": "oss-cn-wulanchabu.aliyuncs.com",
182
+ "bucketName": "minimax-public-cdn",
183
+ "serverTime": "2024-10-22T02:10:07Z"
184
+ }
185
+ }
186
+ """
187
+ token = await get_access_token(token)
188
+
189
+ headers = {
190
+ 'token': token,
191
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
192
+ }
193
+
194
+ logger.debug(headers)
195
+
196
+ BASE_URL = get_base_url(token)
197
+
198
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
199
+ response = await client.get("/v1/api/files/request_policy")
200
+ response.raise_for_status()
201
+ return response.json()['data']
202
+ # return {'accessKeyId': 'STS.NTjAXdazuDwvBugixueiNTwvW',
203
+ # 'accessKeySecret': '4Uj1cuUQt2Xxnr21Yv41CUfGjnH8wBM3SB2Hn9sNrdDS',
204
+ # 'bucketName': 'hailuo-video',
205
+ # 'dir': 'moss/prod/2024-11-08-18/user/multi_chat_file',
206
+ # 'endpoint': 'oss-us-east-1.aliyuncs.com',
207
+ # 'expiration': '2024-11-08T11:38:31Z',
208
+ # 'securityToken': 'CAISjwN1q6Ft5B2yfSjIr5ffCuLQjKVU87WdQFPWjXggaeZiu7LdtTz2IHhMe3lrB+kZsvo0lGFR5vcelrBoS4JMREPJNpMvv8UGq1LxMtKZ45PtseRZ0Fx+t9xLUUyV5tTbRsmkZsW/E67fejKpvyt3xqSAK1fGdle5MJqPpId6Z9AMJGeRZiZHA9EkUGkHr9QBZ0PMKdGnMBPhngi1C1Fz6C59kn9H4L6j2bfMiHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EEAsiz2SVLuR9R7/U03u4W+T7GusyaRkdQ7xiBdKj2ioAzcFQhP/JmRfUe86Ghy6JC17aNx9Sn+XFkJvpIVinTfoekzfbfFfmhXtRDLu6jZCSWjInQaseu41J9MSNHLnNDY9tkMWNrTBs3UXTaI66j5VePfAavRq+VN3TYejPRcjQClPr9xDjnK93xuU5wsa8t6v7tUjA8KaFMoG7n3kGenWkdc5K/Z6udEt4wZ+3GM2OsuFNOQI8ZwZ+aRbfi3op7DyGXmSCG59Z1DPwagAF6Ybpx1FU5RRhp1G6yFZrwSz1uWkDL+5K5SYiq9g758m0ElogR5mgmkISgo2qy8/2br2XEA4eyRt5iIHSVX+lLrE2DIv4Cd65nZSQWX8G+av0D5qxCmspJEz3+VL4kdSxT42GuFpu9jhUtWLAX4K/5laoNyKR5LJHtZR3/pteBSCAA',
209
+ # 'serverTime': '2024-11-08T10:38:31Z'}
210
+
211
+
212
+ @retrying(predicate=lambda r: r.base_resp.status_code in {1000061, 1500009}) # 限流
213
+ async def create_task(request: ImageRequest, token: Optional[str] = None):
214
+ BASE_URL = get_base_url(token)
215
+
216
+ refresh_token = token or await get_next_token_for_polling(FEISHU_URL, from_redis=True, check_token=check_token)
217
+ # refresh_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDA0NzA4NzgsInVzZXIiOnsiaWQiOiIzMjg2MDg4ODkzNTA4MTU3NDQiLCJuYW1lIjoiUm9idXN0IEdlcnRydWRlIiwiYXZhdGFyIjoiaHR0cHM6Ly9jZG4uaGFpbHVvYWkudmlkZW8vbW9zcy9wcm9kLzIwMjQtMTItMjgtMTYvdXNlci91c2VyX2F2YXRhci8xNzM1Mzc1OTI0OTkyMTcxMDY3LWF2YXRhcl8zMjg2MDg4ODkzNTA4MTU3NDQiLCJkZXZpY2VJRCI6IjMwMjgzMzc1OTUxMjc2NDQxNyIsImlzQW5vbnltb3VzIjpmYWxzZX19.dLNBSHjqnKutGl3ralS2g8A-RodHjOdos11vdpbkPwc"
218
+
219
+ # token = await get_access_token(refresh_token) ##########
220
+
221
+ payload = {
222
+ "desc": request.prompt,
223
+ "useOriginPrompt": False,
224
+ "fileList": [],
225
+ "modelID": request.model.removeprefix("hailuo-"), # hailuo- "image-01"
226
+ "quantity": f"{request.n}",
227
+ "aspectRatio": request.aspect_ratio or "1:1",
228
+ }
229
+
230
+ if request.prompt.startswith("http"):
231
+ url = request.prompt.split(maxsplit=1)[0]
232
+
233
+ data = await upload(await to_bytes(url), token=refresh_token)
234
+
235
+ file_data = {
236
+ "id": data['data']['fileID'],
237
+ "name": "_.png",
238
+ "type": "png",
239
+ "url": data['data']['ossPath'],
240
+
241
+ # "characterID": "334024935389642756"
242
+
243
+ }
244
+
245
+ payload["fileList"].append(file_data)
246
+ payload['desc'] = request.prompt.replace(url, " ")
247
+
248
+ logger.debug(bjson(payload))
249
+
250
+ params = {
251
+ 'device_platform': 'web',
252
+ 'app_id': '3001',
253
+ 'version_code': '22202',
254
+ 'biz_id': '0',
255
+ 'uuid': '8c059369-00bf-4777-a426-d9c9b7984ee6',
256
+ 'device_id': '243713252545986562',
257
+ 'os_name': 'Mac',
258
+ 'browser_name': 'chrome',
259
+ 'device_memory': '8',
260
+ 'cpu_core_num': '10',
261
+ 'browser_language': 'zh-CN',
262
+ 'browser_platform': 'MacIntel',
263
+ 'screen_width': '1920',
264
+ 'screen_height': '1080',
265
+ 'unix': f'{int(time.time())}000'
266
+ }
267
+
268
+ path = "/v1/api/multimodal/generate/image"
269
+ headers = {
270
+ 'Content-Type': 'application/json',
271
+ 'token': token,
272
+ 'yy': get_yy(payload, params, url=path),
273
+ }
274
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
275
+ response = await client.post(path, params=params, content=json.dumps(payload))
276
+ response.raise_for_status()
277
+
278
+ data = response.json()
279
+
280
+ logger.debug(bjson(data))
281
+
282
+ task_id = (data.get('data') or {}).get('id', '')
283
+ response = VideoResponse(
284
+ task_id=f"hailuoai-{task_id}",
285
+ base_resp=data.get('statusInfo', {}),
286
+ system_fingerprint=refresh_token
287
+ )
288
+ if response.base_resp.status_code != 0: # 451
289
+ from fastapi import HTTPException, status
290
+ raise HTTPException(status_code=status.HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS,
291
+ detail=response.base_resp)
292
+
293
+ return response
294
+ # {
295
+ # "statusInfo": {
296
+ # "code": 1000061,
297
+ # "httpCode": 0,
298
+ # "message": "上一个视频任务未完成,请稍后再试",
299
+ # "serviceTime": 1729512914,
300
+ # "requestID": "82bc8c60-4dc3-4ad0-b5b6-b1836e0c88ab",
301
+ # "debugInfo": "",
302
+ # "serverAlert": 0
303
+ # }
304
+ # }
305
+
306
+ # {
307
+ # "data": {
308
+ # "id": "304746220940677121"
309
+ # },
310
+ # "statusInfo": {
311
+ # "code": 0,
312
+ # "httpCode": 0,
313
+ # "message": "成功",
314
+ # "serviceTime": 1729513305,
315
+ # "requestID": "caaf2364-d2ed-45df-b79a-827810a5d58c",
316
+ # "debugInfo": "",
317
+ # "serverAlert": 0
318
+ # }
319
+ # }
320
+
321
+
322
+ # 307134660730421250
323
+ async def get_task(task_id: str, token: str):
324
+ BASE_URL = get_base_url(token)
325
+
326
+ task_id = task_id.rsplit('-', 1)[-1]
327
+
328
+ params = {
329
+ 'device_platform': 'web',
330
+ 'app_id': '3001',
331
+ 'version_code': '22202',
332
+ 'biz_id': '0',
333
+ 'uuid': '8c059369-00bf-4777-a426-d9c9b7984ee6',
334
+ 'device_id': '243713252545986562',
335
+ 'os_name': 'Mac',
336
+ 'browser_name': 'chrome',
337
+ 'device_memory': '8',
338
+ 'cpu_core_num': '10',
339
+ 'browser_language': 'zh-CN',
340
+ 'browser_platform': 'MacIntel',
341
+ 'screen_width': '1920',
342
+ 'screen_height': '1080',
343
+ 'unix': f'{int(time.time())}000',
344
+ }
345
+
346
+ payload = {
347
+ "batchInfoList": [{"batchID": task_id, "batchType": 1}]
348
+ }
349
+
350
+ path = "/v4/api/multimodal/video/processing"
351
+ # path = "/api/multimodal/video/processing"
352
+
353
+ headers = {
354
+ 'Content-Type': 'application/json',
355
+ 'token': token,
356
+ 'yy': get_yy(payload, params, url=path),
357
+ }
358
+
359
+ logger.debug(headers['yy'])
360
+
361
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
362
+ response = await client.post("/v4/api/multimodal/video/processing", params=params, content=json.dumps(payload))
363
+ response.raise_for_status()
364
+ data = response.json()
365
+
366
+ logger.debug(bjson(data))
367
+
368
+ urls = json_path(data, "$..downloadURL") or []
369
+
370
+ return urls
371
+
372
+
373
+ @alru_cache(ttl=3600)
374
+ async def check_token(token, threshold: int = 30, **kwargs):
375
+ BASE_URL = get_base_url(token)
376
+
377
+ if not isinstance(token, str):
378
+ return await check_tokens(token, check_token)
379
+
380
+ try:
381
+ token = await get_access_token(token)
382
+ headers = {
383
+ "token": token
384
+ }
385
+ params = {}
386
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
387
+ response = await client.get("/v1/api/user/equity", params=params)
388
+ response.raise_for_status()
389
+ data = response.json()
390
+
391
+ logger.debug(bjson(data))
392
+
393
+ return "Unlimited" in str(data) or "高级会员" in str(data) # Unlimited
394
+ except Exception as e:
395
+ logger.error(e)
396
+ logger.debug(token)
397
+ return False
398
+
399
+
400
+ if __name__ == '__main__': # 304752356930580482
401
+ vip = True
402
+ # vip = False
403
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzI5NzAyMjIsInVzZXIiOnsiaWQiOiIyNDM3MTMyNTI3OTc2NDA3MDgiLCJuYW1lIjoi5bCP6J665bi9NzA4IiwiYXZhdGFyIjoiaHR0cHM6Ly9jZG4ueWluZ3NoaS1haS5jb20vcHJvZC91c2VyX2F2YXRhci8xNzA2MjY3MzY0MTY0NDA0MDc3LTE3MzE5NDU3MDY2ODk2NTg5Nm92ZXJzaXplLnBuZyIsImRldmljZUlEIjoiMjQzNzEzMjUyNTQ1OTg2NTYyIiwiaXNBbm9ueW1vdXMiOnRydWV9fQ.X3KW00hAhSMk1c7DrXWYR27BROHNbfSiHD7Y-aweA6o"
404
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM1NjMzNTIsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLnlpbmdzaGktYWkuY29tL3Byb2QvdXNlcl9hdmF0YXIvMTcwNjI2NzcxMTI4Mjc3MDg3Mi0xNzMxOTQ1NzA2Njg5NjU4OTZvdmVyc2l6ZS5wbmciLCJkZXZpY2VJRCI6IjMwNzIzNzc4MjU1NjE0NzcxMyIsImlzQW5vbnltb3VzIjpmYWxzZX19.MzZA9tW0YG2WFRWSkdD6bpEQt_0I-uIrxPJjxisKRNk"
405
+ # 海外
406
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM4MDQwOTksInVzZXIiOnsiaWQiOiIzMDc5OTkyOTg5MDAwNzA0MDUiLCJuYW1lIjoiRGF2aWQgUGhpbGxpcHMiLCJhdmF0YXIiOiIiLCJkZXZpY2VJRCI6IiJ9fQ.wmmDC7XBmmlQvcPM5TpdGVQDQDIkMpF9nkYBSB7UBWw"
407
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM1NjQ5NDYsInVzZXIiOnsiaWQiOiIzMDQ3NjQzOTU5NDEwOTMzNzYiLCJuYW1lIjoiTWFyaWEiLCJhdmF0YXIiOiIiLCJkZXZpY2VJRCI6IiJ9fQ.QYLSWMj85hB43blHcrfSNBYJ2v_gFmQO9DmIYC5sVuQ"
408
+
409
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM1NDgxMzUsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jSWdTU0NoczFENHNUajFTVGs3UHNUbTd5NTNKRFg5OW84QnhwWmNWNjU2MEFKYlJnPXM5Ni1jIiwiZGV2aWNlSUQiOiIifX0.b8lAlOd961nVrJunpW9tRAEETe6VwlEXvf7y2faNCeY"
410
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM0MDY1MzUsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jSWdTU0NoczFENHNUajFTVGs3UHNUbTd5NTNKRFg5OW84QnhwWmNWNjU2MEFKYlJnPXM5Ni1jIiwiZGV2aWNlSUQiOiIifX0.mcozMacSciz0MORdleOMS_uhrixhIlpQmFmUwvn81I4"
411
+ # arun(get_access_token(token, vip=vip))
412
+ # arun(get_request_policy(token, vip=vip))
413
+ # arun(get_access_token(vip=False))
414
+
415
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM4MDQwOTksInVzZXIiOnsiaWQiOiIzMDc5OTkyOTg5MDAwNzA0MDUiLCJuYW1lIjoiRGF2aWQgUGhpbGxpcHMiLCJhdmF0YXIiOiIiLCJkZXZpY2VJRCI6IiJ9fQ.wmmDC7XBmmlQvcPM5TpdGVQDQDIkMpF9nkYBSB7UBWw"
416
+
417
+ # p = "/Users/betterme/PycharmProjects/AI/MeUtils/meutils/data/cowboy-hat-face.webp"
418
+ # arun(upload(Path(p).read_bytes(), token=token, vip=vip))
419
+ # arun(upload(Path(p).read_bytes(), vip=False))
420
+ # access_token = arun(get_access_token())
421
+ # arun(upload(Path("img.png").read_bytes(), token=access_token))
422
+ # arun(upload(Path("img.png").read_bytes(), token=access_token))
423
+
424
+ # arun(get_task(task_id="307137575113703427", token=token)) # 307173162217783304
425
+ # arun(get_task(task_id="307148849188945924", token=token))
426
+
427
+ # arun(get_task(task_id="307267574751313927", token=token))
428
+
429
+ # arun(get_task(task_id="307177115102699528", token=token))
430
+
431
+ token = None
432
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDQ3MDMwNzIsInVzZXIiOnsiaWQiOiIzMDI4MzM4Njc3NzE5NDkwNTgiLCJuYW1lIjoibWUgYmV0dGVyIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMDI4MzM3NTk1MTI3NjQ0MTciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.Mjb64ZjkKyV9pj-_bXyLczU6kU729VLaKbYj9NmrK-4"
433
+ token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3Mzg4MTQsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLmhhaWx1b2FpLmNvbS9wcm9kL3VzZXJfYXZhdGFyLzE3MDYyNjc3MTEyODI3NzA4NzItMTczMTk0NTcwNjY4OTY1ODk2b3ZlcnNpemUucG5nIiwiZGV2aWNlSUQiOiIyNDM3MTMyNTI1NDU5ODY1NjIiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.o0SoZMSTWkXNHxJjt3Ggby5MJWSfd-rnK_I95T_WMP8"
434
+ request = ImageRequest(
435
+ model="hailuo-image-01",
436
+
437
+ # prompt="a cat", # 307145017365086216
438
+ prompt="https://oss.ffire.cc/files/kling_watermark.png 哭起来",
439
+ # first_frame_image="https://oss.ffire.cc/files/kling_watermark.png" # 307173162217783304
440
+ )
441
+
442
+ r = arun(create_task(request, token=token))
443
+ # arun(get_task(task_id=r.task_id, token=r.system_fingerprint))
444
+
445
+ # arun(get_access_token(token))
446
+ #
447
+ #
448
+ # data = {
449
+ # "model": "video-01",
450
+ # "prompt": "画面中两个人非常缓慢地拥抱在一起",
451
+ # "prompt_optimizer": True,
452
+ # # "first_frame_image": "https://hg-face-domestic-hz.oss-cn-hangzhou.aliyuncs.com/avatarapp/ai-cache/54883340-954c-11ef-8920-db8e7bfa3fdf.jpeg"
453
+ # }
454
+ # request = VideoRequest(**data)
455
+ # r = arun(create_task(request, vip=vip))
456
+ # arun(get_task(task_id=r.task_id, token=r.system_fingerprint))
457
+
458
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3Mzg0Njk5MTUsInVzZXIiOnsiaWQiOiIzMjY0MzI4MjI3OTYxMzY0NTYiLCJuYW1lIjoiRGVib3JhaCBNaWxsZXIiLCJhdmF0YXIiOiIiLCJkZXZpY2VJRCI6IjMxMzMxNTk1MzEwMDQxMDg4NyIsImlzQW5vbnltb3VzIjpmYWxzZX19.ZnpAgRPwtc4JZ2B0PbEfgMU_I4_YRtifzNRVHa5g90U"
459
+
460
+ # arun(get_task("hailuoai-307495165395488768", token=token))
461
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUwMTc3ODAsInVzZXIiOnsiaWQiOiIzMTEyOTUzMTkzMjc1NzYwNjQiLCJuYW1lIjoiVUdIUiBKVkJYIiwiYXZhdGFyIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jS3RuR2NjdGZsWV9fR2tiQ1MzdnhzSXdWSEFUX0ZmMFdyb3RvMnN4bFdWZW1KMm53PXM5Ni1jIiwiZGV2aWNlSUQiOiIzMTMzMTU5NTMxMDA0MTA4ODciLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.cyZifq4FQl46P5_acTNT04qu2GVDDeSBbwjw3J1vWPo"
462
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUwMzQ1MjcsInVzZXIiOnsiaWQiOiIzMTMzODk5MjA0NjA5MzkyNjgiLCJuYW1lIjoiY2l4ZiB4YmNnIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMTM0MDgyMjg0NTEwOTg2MjYiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.eOtAUe3MmarOGNk64j0bfaLNBZ4yxkqwIi1tUhOFD5c"
463
+ # token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
464
+ # arun(check_token(token))