MeUtils 2025.6.6.18.22.44__py3-none-any.whl → 2025.6.9.9.17.14__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.
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/METADATA +261 -261
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/RECORD +25 -16
- meutils/apis/fal/images.py +11 -4
- meutils/apis/hailuoai/videos.py +3 -2
- meutils/apis/jimeng/common.py +1 -1
- meutils/apis/jimeng/images.py +0 -1
- meutils/apis/jimeng_global/__init__.py +10 -0
- meutils/apis/jimeng_global/audio.py +192 -0
- meutils/apis/jimeng_global/common.py +218 -0
- meutils/apis/jimeng_global/doubao_images.py +70 -0
- meutils/apis/jimeng_global/doubao_utils.py +175 -0
- meutils/apis/jimeng_global/files.py +368 -0
- meutils/apis/jimeng_global/images.py +744 -0
- meutils/apis/jimeng_global/videos.py +187 -0
- meutils/apis/jimeng_global/videos_videos.py +334 -0
- meutils/data/VERSION +1 -1
- meutils/schemas/image_types.py +3 -1
- meutils/schemas/jimeng_types.py +1 -0
- meutils/schemas/oneapi/common.py +4 -2
- meutils/str_utils/__init__.py +43 -6
- meutils/str_utils/regular_expression.py +1 -0
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/LICENSE +0 -0
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/WHEEL +0 -0
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/entry_points.txt +0 -0
- {MeUtils-2025.6.6.18.22.44.dist-info → MeUtils-2025.6.9.9.17.14.dist-info}/top_level.txt +0 -0
@@ -370,7 +370,7 @@ meutils/apis/dreamfaceapp/videos.py,sha256=xtz4GYRTdVE-D7xxFpSaH5Kl5ewXDx9Ogvtkf
|
|
370
370
|
meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
|
371
371
|
meutils/apis/fal/chat.py,sha256=yReABuCWfXOEt7tZax03XIX5KBlfBo2DlEOp2EpiGOM,2641
|
372
372
|
meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
|
373
|
-
meutils/apis/fal/images.py,sha256=
|
373
|
+
meutils/apis/fal/images.py,sha256=eFpG1kjn5vxpwk_M-bOI2teUjTz7VLj6akraExFJm3k,12265
|
374
374
|
meutils/apis/fal/images_.py,sha256=C-C1TTQtMJ6RRcd-4FeYPn0R5IpPRPUFmBbrTVs_ypA,1446
|
375
375
|
meutils/apis/fal/kling_videos.py,sha256=kL4SRpZafRSCRODtiNqeXauxfamHNdcBTE65BrG1rVA,2554
|
376
376
|
meutils/apis/fal/pd.py,sha256=oPrMK_FJqohl2Kf0U0it8SqgvIlSEYFcSX8sfVkD8bU,311
|
@@ -395,7 +395,7 @@ meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-
|
|
395
395
|
meutils/apis/hailuoai/images.py,sha256=2SLRKnzz2jdHHVwDzLdJetXZpvn9Mkzjrr_1gJPTIFI,19848
|
396
396
|
meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
|
397
397
|
meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
|
398
|
-
meutils/apis/hailuoai/videos.py,sha256=
|
398
|
+
meutils/apis/hailuoai/videos.py,sha256=9wRIWdV8ToggYK0rjA2HR8eRm7aCTOdRvwL81PBKEtc,23260
|
399
399
|
meutils/apis/hailuoai/yy.py,sha256=uBwtpMhCE4lQyDqEsua4eupGAU0A2N0UJN20pE1tOUo,8962
|
400
400
|
meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
|
401
401
|
meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
|
@@ -431,13 +431,22 @@ meutils/apis/jiema/__init__.py,sha256=YBybggoDRYCNYcwJOypxR7MzfTjIhqO7BkGlTt7NDo
|
|
431
431
|
meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
|
432
432
|
meutils/apis/jimeng/__init__.py,sha256=ENdwkppOOekt9Qzy_50TyA7lzNEqo0TpZcF7d2rYBhc,245
|
433
433
|
meutils/apis/jimeng/audio.py,sha256=i-SHYXMl5mRfFksu2dedDjH2CppXclho3jYx-6FqImg,6627
|
434
|
-
meutils/apis/jimeng/common.py,sha256=
|
434
|
+
meutils/apis/jimeng/common.py,sha256=LFuhgY-KKE661Kf5oY0xAA1LhNu6ErGJ6SflSJPVHkE,7546
|
435
435
|
meutils/apis/jimeng/doubao_images.py,sha256=Aeq1hve2PiO3baP50Augsu0u2YFlC7r_X5jgnDqv6y4,2082
|
436
436
|
meutils/apis/jimeng/doubao_utils.py,sha256=d9KDNkqKN4oxaJRAeGNMouRvzHEhIRXzN3T_HjtTXdM,6025
|
437
437
|
meutils/apis/jimeng/files.py,sha256=AlsAlQGufGm84TldUBLFZpZQGD6INN5xIwHql9ocPj4,11310
|
438
|
-
meutils/apis/jimeng/images.py,sha256=
|
438
|
+
meutils/apis/jimeng/images.py,sha256=AO1Qvm-zpIU5hJegnf_zseIYE1C58wzfyje6Db5TzOk,23001
|
439
439
|
meutils/apis/jimeng/videos.py,sha256=MRDXz96BYEuS4vVCHeXaoNE6nfpq0B6UCf1_dafCE-8,6127
|
440
440
|
meutils/apis/jimeng/videos_videos.py,sha256=A6oWLKcrb6YMIumqUMQS3KVP9bhOEKLUOIlAUlbREmE,12259
|
441
|
+
meutils/apis/jimeng_global/__init__.py,sha256=ENdwkppOOekt9Qzy_50TyA7lzNEqo0TpZcF7d2rYBhc,245
|
442
|
+
meutils/apis/jimeng_global/audio.py,sha256=i-SHYXMl5mRfFksu2dedDjH2CppXclho3jYx-6FqImg,6627
|
443
|
+
meutils/apis/jimeng_global/common.py,sha256=PgHDD3UcXrTcctve67n0gdHVJYObhjWyALIkh2gj3Nc,7565
|
444
|
+
meutils/apis/jimeng_global/doubao_images.py,sha256=Aeq1hve2PiO3baP50Augsu0u2YFlC7r_X5jgnDqv6y4,2082
|
445
|
+
meutils/apis/jimeng_global/doubao_utils.py,sha256=d9KDNkqKN4oxaJRAeGNMouRvzHEhIRXzN3T_HjtTXdM,6025
|
446
|
+
meutils/apis/jimeng_global/files.py,sha256=AlsAlQGufGm84TldUBLFZpZQGD6INN5xIwHql9ocPj4,11310
|
447
|
+
meutils/apis/jimeng_global/images.py,sha256=Vjnpxb4l_vE_FbMsouUFN3TpCLlABqGczNrq4729LjQ,26804
|
448
|
+
meutils/apis/jimeng_global/videos.py,sha256=MRDXz96BYEuS4vVCHeXaoNE6nfpq0B6UCf1_dafCE-8,6127
|
449
|
+
meutils/apis/jimeng_global/videos_videos.py,sha256=A6oWLKcrb6YMIumqUMQS3KVP9bhOEKLUOIlAUlbREmE,12259
|
441
450
|
meutils/apis/jina/__init__.py,sha256=WnZ4LOv-bzC1brd5FZHOHmgq4c0UaFbnksEj2_LzXxQ,292
|
442
451
|
meutils/apis/jina/common.py,sha256=dwSJboUcZtvBTKRcvAUcgMD933VfYCUBDdtxbw1ioiE,1099
|
443
452
|
meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
|
@@ -580,7 +589,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
|
|
580
589
|
meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
|
581
590
|
meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
|
582
591
|
meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
|
583
|
-
meutils/data/VERSION,sha256=
|
592
|
+
meutils/data/VERSION,sha256=Gl0iXFz3wvWeWjqvFSbV2uVXKaomwD3fSou71Hj6j_s,19
|
584
593
|
meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
585
594
|
meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
586
595
|
meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
|
@@ -811,8 +820,8 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
|
|
811
820
|
meutils/schemas/hailuo_types.py,sha256=ubG6qIU506tq51UsURuwlPhtPNa49xHSoBzBtW7jg_0,7431
|
812
821
|
meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
|
813
822
|
meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
|
814
|
-
meutils/schemas/image_types.py,sha256=
|
815
|
-
meutils/schemas/jimeng_types.py,sha256=
|
823
|
+
meutils/schemas/image_types.py,sha256=yOoY2cQJNkZCZBPg5Zzi03eS49YuO4XGtzECk-5Do24,15721
|
824
|
+
meutils/schemas/jimeng_types.py,sha256=z0mAICgNE0Yaq09_puzgMfHOP-QKWiZqqMlFbLVHtmY,1995
|
816
825
|
meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
|
817
826
|
meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
|
818
827
|
meutils/schemas/kling_types.py,sha256=brWaREBtQeZGUuwgOW2p-vIm2WWInYkq8UfrLInT-Ik,6959
|
@@ -847,7 +856,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
|
|
847
856
|
meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
|
848
857
|
meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
|
849
858
|
meutils/schemas/oneapi/_types.py,sha256=IdXSLPQl73AKtCC5jFI2w5O7WFuQcQJlN_pr8xiMKz0,2648
|
850
|
-
meutils/schemas/oneapi/common.py,sha256=
|
859
|
+
meutils/schemas/oneapi/common.py,sha256=CPx0TZZTOHs0zk25VPZw6ELIqb7qG2S2WMAGVP7M7Wo,40544
|
851
860
|
meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
|
852
861
|
meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
|
853
862
|
meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
|
@@ -900,9 +909,9 @@ meutils/settings/__init__.py,sha256=jZc0NXPA9zIMcTAYypSQDxJqvXakyJ0ztK9ZMND2Q7U,
|
|
900
909
|
meutils/settings/base.py,sha256=kb3QVS2eUFWyGgvegtSK4cqJFF76J1JctTSzCVqc1Mo,264
|
901
910
|
meutils/settings/demo.py,sha256=Ht3t6LREQsKa5W2owNrOZNAoZfS-zItIFNwGhhPj-4k,484
|
902
911
|
meutils/str_utils/Translator.py,sha256=tfvNQIeVCqmX9yW6jobeibDHG6X-XecSSAx9kJIFFyw,1258
|
903
|
-
meutils/str_utils/__init__.py,sha256=
|
912
|
+
meutils/str_utils/__init__.py,sha256=JACx26dCKC4qgQbo-nf7CANQD7lkBcUgpY7QhoVeR6g,9325
|
904
913
|
meutils/str_utils/json_utils.py,sha256=H65v9vZtXVuYyRCQAfyQ4KZzAecwjvjBH6qTy0hCDE4,4033
|
905
|
-
meutils/str_utils/regular_expression.py,sha256=
|
914
|
+
meutils/str_utils/regular_expression.py,sha256=Cm9Hy5GoIcWejs2oElgw_prNCRnb_y8xUCW_Mt7rdIc,6128
|
906
915
|
meutils/str_utils/__translater/__init__.py,sha256=mtDbKL_Qdkeq5VPVO1M4ejf9H8PzKM5h7iepqkBG8N0,277
|
907
916
|
meutils/str_utils/__translater/tencent.py,sha256=1E_56l6-A49Yuz2ZrMKxt-QJfcf0xDYN2X0dg58Dytk,1408
|
908
917
|
meutils/str_utils/__translater/translater.py,sha256=A_9NLVvkjzPd9omIcJGhux21D-gcCxemyrZ7o6uGx_Q,1238
|
@@ -976,9 +985,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
|
|
976
985
|
meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
|
977
986
|
meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
|
978
987
|
meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
|
979
|
-
MeUtils-2025.6.
|
980
|
-
MeUtils-2025.6.
|
981
|
-
MeUtils-2025.6.
|
982
|
-
MeUtils-2025.6.
|
983
|
-
MeUtils-2025.6.
|
984
|
-
MeUtils-2025.6.
|
988
|
+
MeUtils-2025.6.9.9.17.14.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
989
|
+
MeUtils-2025.6.9.9.17.14.dist-info/METADATA,sha256=E842d-NnKz_O_NVmesICCJf8r7rwGq0EVqrEJebm4Ww,32832
|
990
|
+
MeUtils-2025.6.9.9.17.14.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
991
|
+
MeUtils-2025.6.9.9.17.14.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
|
992
|
+
MeUtils-2025.6.9.9.17.14.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
|
993
|
+
MeUtils-2025.6.9.9.17.14.dist-info/RECORD,,
|
meutils/apis/fal/images.py
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
# @Description : https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api
|
10
10
|
|
11
11
|
from meutils.pipe import *
|
12
|
-
from meutils.str_utils
|
12
|
+
from meutils.str_utils import parse_url, validate_url
|
13
13
|
from meutils.io.files_utils import to_url, to_url_fal
|
14
14
|
|
15
15
|
from meutils.schemas.image_types import ImageRequest, FluxImageRequest, SDImageRequest, ImagesResponse
|
@@ -97,8 +97,10 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
|
|
97
97
|
elif "kontext" in request.model: # https://fal.ai/models/fal-ai/flux-pro/kontext/max
|
98
98
|
|
99
99
|
if image_urls := parse_url(request.prompt):
|
100
|
-
|
101
|
-
|
100
|
+
if not validate_url(image_urls):
|
101
|
+
raise Exception(f"Invalid image url: {image_urls}")
|
102
|
+
|
103
|
+
if request.user: # 转存
|
102
104
|
image_urls = await to_url_fal(image_urls)
|
103
105
|
|
104
106
|
for image_url in image_urls:
|
@@ -149,11 +151,16 @@ async def generate(request: ImageRequest, token: Optional[str] = None):
|
|
149
151
|
"prompt": await deeplx.llm_translate(request.prompt),
|
150
152
|
|
151
153
|
}
|
154
|
+
|
152
155
|
if request.aspect_ratio:
|
153
|
-
|
156
|
+
aspect_ratios = {'21:9', '16:9', '4:3', '3:2', '1:1', '2:3', '3:4', '9:16', '9:21'}
|
157
|
+
if request.aspect_ratio in aspect_ratios:
|
158
|
+
arguments["aspect_ratio"] = request.aspect_ratio
|
154
159
|
|
155
160
|
logger.debug(bjson(arguments))
|
156
161
|
|
162
|
+
|
163
|
+
|
157
164
|
elif request.model.startswith("fal-ai/flux"): # https://fal.ai/models/fal-ai/flux-pro/v1.1-ultra/api
|
158
165
|
|
159
166
|
arguments = {
|
meutils/apis/hailuoai/videos.py
CHANGED
@@ -463,7 +463,7 @@ if __name__ == '__main__': # 304752356930580482
|
|
463
463
|
# first_frame_image="https://oss.ffire.cc/files/kling_watermark.png" # 307173162217783304
|
464
464
|
)
|
465
465
|
|
466
|
-
r = arun(create_task(request, token=token))
|
466
|
+
# r = arun(create_task(request, token=token))
|
467
467
|
# arun(get_task(task_id=r.task_id, token=r.system_fingerprint))
|
468
468
|
|
469
469
|
# arun(get_task(task_id="hailuoai-378260932722450439", token=token))
|
@@ -488,4 +488,5 @@ if __name__ == '__main__': # 304752356930580482
|
|
488
488
|
# token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzUwMzQ1MjcsInVzZXIiOnsiaWQiOiIzMTMzODk5MjA0NjA5MzkyNjgiLCJuYW1lIjoiY2l4ZiB4YmNnIiwiYXZhdGFyIjoiIiwiZGV2aWNlSUQiOiIzMTM0MDgyMjg0NTEwOTg2MjYiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.eOtAUe3MmarOGNk64j0bfaLNBZ4yxkqwIi1tUhOFD5c"
|
489
489
|
# token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
|
490
490
|
# token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTAxMjg4NTIsInVzZXIiOnsiaWQiOiIzNzQwMTM3NzUyNzg4ODY5MTciLCJuYW1lIjoiTmFodWVsIE1vbGluYSIsImF2YXRhciI6IiIsImRldmljZUlEIjoiMzEzMzc0MTIyMjEyMjc4MjczIiwiaXNBbm9ueW1vdXMiOmZhbHNlfX0.uxTtDTcPT07piVA-x3N2ms2VrRN3JwcU99g_HJLwqLE"
|
491
|
-
|
491
|
+
token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTE3OTY1OTAsInVzZXIiOnsiaWQiOiIyMjkwODQ3NTA2MDEzODgwMzciLCJuYW1lIjoi5bCP6J665bi9ODAzNyIsImF2YXRhciI6Imh0dHBzOi8vY2RuLmhhaWx1b2FpLmNvbS9wcm9kL3VzZXJfYXZhdGFyLzE3MDYyNjc3MTEyODI3NzA4NzItMTczMTk0NTcwNjY4OTY1ODk2b3ZlcnNpemUucG5nIiwiZGV2aWNlSUQiOiIyNDM3MTMyNTI1NDU5ODY1NjIiLCJpc0Fub255bW91cyI6ZmFsc2V9fQ.6qhw69sWo31EBTTm1x2iPzav0baKYjaXrtmzXXsq73I"
|
492
|
+
arun(check_token(token))
|
meutils/apis/jimeng/common.py
CHANGED
@@ -197,7 +197,7 @@ if __name__ == '__main__':
|
|
197
197
|
token = "7d9969ffd8ad2edda7da8fff11cb9434"
|
198
198
|
token = "1513337bdba08a1a77fedad95c03bc6c"
|
199
199
|
token = "b1cd6317e4d161bbb3889b9defd769ff"
|
200
|
-
token = "
|
200
|
+
token = "176b9aba6b81256b50abf08526cf311a"
|
201
201
|
arun(check_token(token))
|
202
202
|
|
203
203
|
# arun(get_upload_token(token, 'video'))
|
meutils/apis/jimeng/images.py
CHANGED
@@ -12,7 +12,6 @@ guidance 控制精细度 => sample_strength 0-1 数值越大生成的效果质
|
|
12
12
|
paths: ["/mweb/v1/generate", "/mweb/v1/super_resolution", "/mweb/v1/painting", "/commerce/v1/subscription/make_unauto_order", "/commerce/v1/benefits/credit_receive", "/commerce/v1/purchase/make_order", "/mweb/v1/get_explore", "/mweb/v1/feed_short_video", "/mweb/v1/feed", "/mweb/v1/get_homepage", "/mweb/v1/get_weekly_challenge_work_list", "/mweb/v1/mget_item_info", "/mweb/v1/get_item_info", "/mweb/v1/get_history_by_ids", "/mweb/search/v1/search"],
|
13
13
|
|
14
14
|
"""
|
15
|
-
import json
|
16
15
|
|
17
16
|
from meutils.pipe import *
|
18
17
|
from meutils.caches import rcache
|
@@ -0,0 +1,192 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Project : AI. @by PyCharm
|
4
|
+
# @File : tts
|
5
|
+
# @Time : 2025/5/13 10:40
|
6
|
+
# @Author : betterme
|
7
|
+
# @WeChat : meutils
|
8
|
+
# @Software : PyCharm
|
9
|
+
# @Description :
|
10
|
+
|
11
|
+
from meutils.pipe import *
|
12
|
+
from meutils.decorators.retry import retrying
|
13
|
+
|
14
|
+
from meutils.io.files_utils import to_bytes, to_url
|
15
|
+
from meutils.schemas.openai_types import TTSRequest
|
16
|
+
from meutils.schemas.jimeng_types import BASE_URL
|
17
|
+
|
18
|
+
VOICE_MAPPING = {
|
19
|
+
# 带情绪
|
20
|
+
"柔美女友": "7382552865023201819",
|
21
|
+
# "happy", "angry", "fear", "surprised", "coldness", "disgust", "excited", "hate"
|
22
|
+
"妩媚女生": "7459778019725414962", # "happy", "angry", "fear", "surprise"
|
23
|
+
"京腔小爷": "7382048889659986458", # "joy", "angry", "surprise", "disgust"
|
24
|
+
|
25
|
+
# 角色演绎
|
26
|
+
"猴哥": "7236944659547689531",
|
27
|
+
"熊二": "7170964808357909005",
|
28
|
+
"如来佛祖": "7327220560335737363",
|
29
|
+
"咆哮哥": "7265204498308534840",
|
30
|
+
"四郎": "7170966598528799263",
|
31
|
+
"懒小羊": "7236944067072889405",
|
32
|
+
"TVB女声": "7145775430832755230",
|
33
|
+
"动漫小新": "6855162047320035854",
|
34
|
+
"紫薇": "7281175385486660155",
|
35
|
+
"黛玉": "7203252693555483196",
|
36
|
+
"顾姐": "7170966542610338318",
|
37
|
+
"动漫海绵": "6954271730848240136",
|
38
|
+
"云龙哥": "7298191949306008102",
|
39
|
+
"容嬷嬷": "7278285365335560762",
|
40
|
+
"华妃": "7360900412167164470",
|
41
|
+
|
42
|
+
# 方言
|
43
|
+
"河南小哥": "7382049051304268339",
|
44
|
+
"湾区大叔": "7382049147311886874",
|
45
|
+
"广西老表": "7382049000242811442",
|
46
|
+
"山东小哥": "7382048947646239259",
|
47
|
+
"长沙妹坨": "7376856724151472679",
|
48
|
+
"樱花小哥": "7275251697721545277",
|
49
|
+
"上海阿姨": "7270784654867698237",
|
50
|
+
"京腔": "7246701228736909879",
|
51
|
+
"港普男声": "7236947484650508859",
|
52
|
+
"天津小哥": "7023305056589976095",
|
53
|
+
"西安掌柜": "7008044050917888548",
|
54
|
+
"台湾女生": "6966423537611444767",
|
55
|
+
"东北老铁": "6912251359693640199",
|
56
|
+
"粤语男声": "7023302069004014117",
|
57
|
+
"重庆小伙": "6939395229950677534",
|
58
|
+
|
59
|
+
# 女青年
|
60
|
+
"魅力姐姐": "7382879492752019995",
|
61
|
+
"高冷御姐": "7382878375473320475",
|
62
|
+
"魅力女友": "7382839113059144229",
|
63
|
+
"耿直女声": "7367236342641594890",
|
64
|
+
"活泼女声": "7366933865698431515",
|
65
|
+
"随性女声": "7350942233593385508",
|
66
|
+
"知性女声": "7023300712998113823",
|
67
|
+
"温柔淑女": "7023300216061170213",
|
68
|
+
"悲伤女声": "7367266428002505243",
|
69
|
+
|
70
|
+
# 男青年
|
71
|
+
"开朗学长": "7382879228393427493",
|
72
|
+
"阳光青年": "7382878511217775130",
|
73
|
+
"广告男声": "7382874510376047130",
|
74
|
+
"悠悠君子": "7382878113916523035",
|
75
|
+
"强势青年": "7367238853679125043",
|
76
|
+
"阳光男生": "6912251288331751943",
|
77
|
+
"沉稳男声": "7317623416691888650",
|
78
|
+
"悲伤青年": "7367238720077959689",
|
79
|
+
|
80
|
+
# 少女
|
81
|
+
"病娇少女": "7382879331174847013",
|
82
|
+
"撒娇学妹": "7382558138009915913",
|
83
|
+
"冷静少女": "7367239175281578546",
|
84
|
+
"元气少女": "7350221867958932031",
|
85
|
+
"活泼女孩": "7462472428438950452",
|
86
|
+
|
87
|
+
# 少年
|
88
|
+
"阳光少年": "7382845921647661595",
|
89
|
+
"活泼少年": "7367245673655177779",
|
90
|
+
|
91
|
+
# 儿童
|
92
|
+
"小男孩": "7367253020309983782",
|
93
|
+
"小女孩": "7367252909815239206",
|
94
|
+
"萌娃": "6855161957519987207",
|
95
|
+
|
96
|
+
# 老人
|
97
|
+
"沉稳老者": "7367253137486254629",
|
98
|
+
"老婆婆": "7242563452026229305",
|
99
|
+
|
100
|
+
# 中年
|
101
|
+
"儒雅大叔": "7367250055360680474",
|
102
|
+
"温柔阿姨": "7367247089916449289",
|
103
|
+
"刚正大叔": "7367252353176572467"
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
@retrying()
|
109
|
+
async def create_tts(request: TTSRequest): # audio.speech.create
|
110
|
+
|
111
|
+
effect_id = VOICE_MAPPING.get(request.voice, "7382552865023201819")
|
112
|
+
|
113
|
+
loki_info = {"effect_id": effect_id, "model_names": "", "effect_type": 0}
|
114
|
+
|
115
|
+
payload = {
|
116
|
+
"text": request.input,
|
117
|
+
# "loki_info": json.dumps(loki_info),
|
118
|
+
"audio_config": {
|
119
|
+
"format": "mp3",
|
120
|
+
"sample_rate": 24000,
|
121
|
+
"speech_rate": request.speed or 0,
|
122
|
+
"pitch_rate": 0,
|
123
|
+
"enable_timestamp": True,
|
124
|
+
|
125
|
+
},
|
126
|
+
"id_info": {
|
127
|
+
"id": effect_id,
|
128
|
+
"item_platform": 1
|
129
|
+
}
|
130
|
+
}
|
131
|
+
if request.instructions and request.voice in {"柔美女友", "妩媚女生", "京腔小爷", }:
|
132
|
+
if request.voice == "京腔小爷" and request.instructions == "happy":
|
133
|
+
request.emotion = "joy"
|
134
|
+
|
135
|
+
if request.voice == "柔美女友" and request.instructions == "surprise":
|
136
|
+
request.emotion = "surprised"
|
137
|
+
|
138
|
+
payload["audio_config"].update(
|
139
|
+
{
|
140
|
+
# 情绪
|
141
|
+
"emotion_scale": 5,
|
142
|
+
"emotion": request.instructions,
|
143
|
+
}
|
144
|
+
)
|
145
|
+
|
146
|
+
logger.debug(payload)
|
147
|
+
|
148
|
+
headers = {
|
149
|
+
"pf": "7"
|
150
|
+
}
|
151
|
+
async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=200) as client:
|
152
|
+
response = await client.post("/mweb/v1/tts_generate", json=payload)
|
153
|
+
response.raise_for_status()
|
154
|
+
|
155
|
+
data = response.json()
|
156
|
+
|
157
|
+
# logger.debug(data)
|
158
|
+
|
159
|
+
if request.response_format == "url":
|
160
|
+
if data.get("ret") == "0":
|
161
|
+
data["data"]["data"] = await to_url(data["data"]["data"], filename=f'{shortuuid.random()}.mp3')
|
162
|
+
return data
|
163
|
+
else:
|
164
|
+
data = await to_bytes(data["data"]["data"])
|
165
|
+
return data
|
166
|
+
|
167
|
+
|
168
|
+
if __name__ == '__main__':
|
169
|
+
text = """Chatfire tts-pro支持多种音色:
|
170
|
+
柔美女友 妩媚女生 京腔小爷 猴哥 熊二 如来佛祖 咆哮哥 四郎 懒小羊 TVB女声 动漫小新 紫薇 黛玉 顾姐 动漫海绵 云龙哥 容嬷嬷 华妃 河南小哥 湾区大叔 广西老表 山东小哥 长沙妹坨 樱花小哥 上海阿姨 京腔 港普男声 天津小哥 西安掌柜 台湾女生 东北老铁 粤语男声 重庆小伙 魅力姐姐 高冷御姐 魅力女友 耿直女声 活泼女声 随性女声 知性女声 温柔淑女 悲伤女声 开朗学长 阳光青年 广告男声 悠悠君子 强势青年 阳光男生 沉稳男声 悲伤青年 病娇少女 撒娇学妹 冷静少女 元气少女 活泼女孩 阳光少年 活泼少年 小男孩 小女孩 萌娃 沉稳老者 老婆婆 儒雅大叔 温柔阿姨 刚正大叔
|
171
|
+
|
172
|
+
"""
|
173
|
+
request = TTSRequest(
|
174
|
+
model="tts-1",
|
175
|
+
# input="军杰 快来我的五指山下" * 1,
|
176
|
+
input=text,
|
177
|
+
# voice="柔美女友",
|
178
|
+
voice="猴哥",
|
179
|
+
|
180
|
+
# voice="妩媚女生",
|
181
|
+
# voice="如来佛祖",
|
182
|
+
# voice="京腔小爷",
|
183
|
+
|
184
|
+
response_format="url",
|
185
|
+
|
186
|
+
# emotion="happy",
|
187
|
+
# emotion="fear"
|
188
|
+
emotion="surprise"
|
189
|
+
|
190
|
+
)
|
191
|
+
|
192
|
+
arun(create_tts(request))
|
@@ -0,0 +1,218 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# @Project : AI. @by PyCharm
|
4
|
+
# @File : common
|
5
|
+
# @Time : 2024/12/16 18:19
|
6
|
+
# @Author : betterme
|
7
|
+
# @WeChat : meutils
|
8
|
+
# @Software : PyCharm
|
9
|
+
# @Description : https://github.com/LLM-Red-Team/jimeng-free-api/commit/acd362a4cecd115938bf4bc9bbb0067738aa0d5b#diff-e6a7354ac1431dc3751e91efaf1799200c1ce2fa8abe975a49c32644290988baR121
|
10
|
+
from openai import AsyncClient
|
11
|
+
|
12
|
+
from meutils.pipe import *
|
13
|
+
from meutils.hash_utils import md5
|
14
|
+
from meutils.schemas.openai_types import TTSRequest
|
15
|
+
|
16
|
+
from meutils.schemas.jimeng_types import BASE_URL_GLOBAL as BASE_URL, MODELS_MAP, FEISHU_URL
|
17
|
+
from meutils.caches.redis_cache import cache
|
18
|
+
|
19
|
+
from fake_useragent import UserAgent
|
20
|
+
|
21
|
+
ua = UserAgent()
|
22
|
+
|
23
|
+
|
24
|
+
@lru_cache()
|
25
|
+
def get_headers(url, token: str = "693701c43e477b7c405cc7e2fef0ddbd"):
|
26
|
+
device_time = f"{int(time.time())}"
|
27
|
+
sign = md5(
|
28
|
+
# f"9e2c|receive|7|5.8.0|{device_time}||11ac"
|
29
|
+
f"9e2c|{url[-7:]}|7|5.8.0|{device_time}||11ac"
|
30
|
+
)
|
31
|
+
|
32
|
+
headers = {
|
33
|
+
'appid': '513695',
|
34
|
+
'appvr': '5.8.0',
|
35
|
+
'device-time': device_time,
|
36
|
+
'pf': '7',
|
37
|
+
'sign': sign,
|
38
|
+
'sign-ver': '1',
|
39
|
+
'Cookie': f'sid_guard={token}|{device_time}|5184000|Fri,+14-Feb-2025+00:51:51+GMT',
|
40
|
+
'User-Agent': ua.random,
|
41
|
+
|
42
|
+
'content-type': 'application/json',
|
43
|
+
# "Referer": "https://jimeng.jianying.com/ai-tool/image/generate",
|
44
|
+
}
|
45
|
+
return headers
|
46
|
+
|
47
|
+
|
48
|
+
@cache(ttl=3600 // 2)
|
49
|
+
async def get_upload_token(token, biz: Optional[str] = None): # 3600 跨账号?
|
50
|
+
|
51
|
+
if biz == "video":
|
52
|
+
url = "/mweb/v1/get_upload_token" # ?aid=513695&da_version=3.2.0&aigc_features=app_lip_sync
|
53
|
+
|
54
|
+
payload = {"scene": 2}
|
55
|
+
client = AsyncClient(base_url=BASE_URL)
|
56
|
+
response = await client.post(url, body=payload, cast_to=object)
|
57
|
+
logger.debug(bjson(response))
|
58
|
+
return response
|
59
|
+
|
60
|
+
url = "/artist/v2/tools/get_upload_token"
|
61
|
+
headers = get_headers(url, token)
|
62
|
+
|
63
|
+
payload = {"scene": 2}
|
64
|
+
client = AsyncClient(base_url=BASE_URL, default_headers=headers)
|
65
|
+
response = await client.post(url, body=payload, cast_to=object)
|
66
|
+
logger.debug(bjson(response))
|
67
|
+
return response
|
68
|
+
|
69
|
+
|
70
|
+
@alru_cache(12 * 3600)
|
71
|
+
async def receive_credit(token):
|
72
|
+
# token = "eb4d120829cfd3ee957943f63d6152ed" # y
|
73
|
+
# token = "9ba826acc1a4bf0e10912eb01beccfe0" # w
|
74
|
+
url = "/commerce/v1/benefits/credit_receive"
|
75
|
+
headers = get_headers(url, token)
|
76
|
+
payload = {"time_zone": "Asia/Shanghai"}
|
77
|
+
client = AsyncClient(base_url=BASE_URL, default_headers=headers)
|
78
|
+
response = await client.post(url, body=payload, cast_to=object)
|
79
|
+
logger.debug(bjson(response))
|
80
|
+
|
81
|
+
|
82
|
+
async def get_credit(token):
|
83
|
+
# token = "eb4d120829cfd3ee957943f63d6152ed" # y
|
84
|
+
# token = "9ba826acc1a4bf0e10912eb01beccfe0" # w
|
85
|
+
|
86
|
+
url = "/commerce/v1/benefits/user_credit"
|
87
|
+
headers = get_headers(url, token)
|
88
|
+
|
89
|
+
payload = {}
|
90
|
+
client = AsyncClient(base_url=BASE_URL, default_headers=headers)
|
91
|
+
response = await client.post(url, body=payload, cast_to=object)
|
92
|
+
if response['data']['credit']['gift_credit'] == 0: # 签到
|
93
|
+
await receive_credit(token)
|
94
|
+
|
95
|
+
logger.debug(bjson(response))
|
96
|
+
return response
|
97
|
+
|
98
|
+
|
99
|
+
async def check_token(token, threshold: int = 1): # todo: 失效还是没积分
|
100
|
+
try:
|
101
|
+
response = await get_credit(token)
|
102
|
+
logger.debug(bjson(response))
|
103
|
+
# logger.error(f"{token}")
|
104
|
+
|
105
|
+
credits = sum(response['data']['credit'].values())
|
106
|
+
return credits >= threshold
|
107
|
+
except Exception as e:
|
108
|
+
logger.error(e)
|
109
|
+
return False
|
110
|
+
|
111
|
+
|
112
|
+
def create_photo_lip_sync(request: TTSRequest):
|
113
|
+
# 映射
|
114
|
+
tts_info = {
|
115
|
+
"name": request.voice or "魅力姐姐",
|
116
|
+
"text": request.input, # "永远相信美好的事情即将发生"
|
117
|
+
"speed": request.seed or 1,
|
118
|
+
"source_type": "text-to-speech",
|
119
|
+
"tone_category_id": 0,
|
120
|
+
"tone_category_key": "all",
|
121
|
+
"tone_id": "7382879492752019995",
|
122
|
+
"toneKey": request.voice or "魅力姐姐",
|
123
|
+
}
|
124
|
+
payload = {
|
125
|
+
"promptSource": "photo_lip_sync",
|
126
|
+
"generateTimes": 1,
|
127
|
+
"lipSyncInfo": tts_info,
|
128
|
+
"isUseAiGenPrompt": False,
|
129
|
+
"batchNumber": 1
|
130
|
+
}
|
131
|
+
|
132
|
+
return {
|
133
|
+
"submit_id": "",
|
134
|
+
"task_extra": json.dumps(payload),
|
135
|
+
"http_common_info": {
|
136
|
+
"aid": 513695
|
137
|
+
},
|
138
|
+
"input": {
|
139
|
+
"seed": 1834980836,
|
140
|
+
"video_gen_inputs": [
|
141
|
+
{
|
142
|
+
"v2v_opt": {},
|
143
|
+
"i2v_opt": {
|
144
|
+
"realman_avatar": {
|
145
|
+
"enable": True,
|
146
|
+
"origin_image": {
|
147
|
+
"width": 480,
|
148
|
+
"height": 270,
|
149
|
+
"image_uri": "tos-cn-i-tb4s082cfz/fae8f746367b40f5a708bf0f1e84de11",
|
150
|
+
"image_url": "" ########## https://oss.ffire.cc/files/kling_watermark.png
|
151
|
+
},
|
152
|
+
"resource_id_loopy": "34464cac-5e3e-46be-88ff-ccbc7da4d742",
|
153
|
+
"resource_id_std": "2f66b408-37c3-4de5-b8a4-ba15c104612e",
|
154
|
+
"origin_audio": {
|
155
|
+
"duration": 3.216,
|
156
|
+
"vid": "v02bc3g10000ctrpqrfog65purfpn7a0"
|
157
|
+
},
|
158
|
+
"tts_info": json.dumps(tts_info)
|
159
|
+
}
|
160
|
+
},
|
161
|
+
"audio_vid": "v02bc3g10000ctrpqrfog65purfpn7a0",
|
162
|
+
"video_mode": 4
|
163
|
+
}
|
164
|
+
]
|
165
|
+
},
|
166
|
+
"mode": "workbench",
|
167
|
+
"history_option": {},
|
168
|
+
"commerce_info": {
|
169
|
+
"resource_id": "generate_video",
|
170
|
+
"resource_id_type": "str",
|
171
|
+
"resource_sub_type": "aigc",
|
172
|
+
"benefit_type": "lip_sync_avatar_std"
|
173
|
+
},
|
174
|
+
"scene": "lip_sync_image",
|
175
|
+
"client_trace_data": {},
|
176
|
+
"submit_id_list": [
|
177
|
+
"d4554e2c-707f-4ebe-b4e6-93aa6687d1c1"
|
178
|
+
]
|
179
|
+
}
|
180
|
+
|
181
|
+
|
182
|
+
if __name__ == '__main__':
|
183
|
+
from meutils.config_utils.lark_utils import aget_spreadsheet_values, get_series
|
184
|
+
|
185
|
+
token = "693701c43e477b7c405cc7e2fef0ddbd"
|
186
|
+
token = "eb4d120829cfd3ee957943f63d6152ed"
|
187
|
+
token = "dcf7bbc31faed9740b0bf748cd4d2c74"
|
188
|
+
token = "38d7d300b5e0a803431ef88d8d2acfef"
|
189
|
+
token = "916fed81175f5186a2c05375699ea40d"
|
190
|
+
token = "7c5e148d9fa858e3180c42f843c20454"
|
191
|
+
token = "1c21a9fe6a4230609d7ff13e5cec41ec"
|
192
|
+
token = "34438eb03d165737122180caf62a8058"
|
193
|
+
token = "ffeee346fbd19eceebb79a7bfbca4bfe"
|
194
|
+
# token = "b8bb4cb67dba6c0d1048bdc0596bc461"
|
195
|
+
# token = "34438eb03d165737122180caf62a8058"
|
196
|
+
# token = "a521dd578adcfb191fad38dd4baab498"
|
197
|
+
token = "7d9969ffd8ad2edda7da8fff11cb9434"
|
198
|
+
token = "1513337bdba08a1a77fedad95c03bc6c"
|
199
|
+
token = "b1cd6317e4d161bbb3889b9defd769ff"
|
200
|
+
token = "176b9aba6b81256b50abf08526cf311a"
|
201
|
+
arun(check_token(token))
|
202
|
+
|
203
|
+
# arun(get_upload_token(token, 'video'))
|
204
|
+
|
205
|
+
# print(arun(aget_spreadsheet_values(feishu_url=FEISHU_URL, to_dataframe=True))[0].tolist())
|
206
|
+
# tokens = arun(get_series(FEISHU_URL))
|
207
|
+
# arun(get_credit(token))
|
208
|
+
# arun(check_token(token))
|
209
|
+
# _ = []
|
210
|
+
# for token in tokens:
|
211
|
+
# if not arun(check_token(token)):
|
212
|
+
# logger.debug(f"无效 {token}")
|
213
|
+
# _.append(token)
|
214
|
+
|
215
|
+
# arun(get_upload_token(token))
|
216
|
+
#
|
217
|
+
# request = ImageRequest(prompt='https://oss.ffire.cc/files/kling_watermark.png笑起来')
|
218
|
+
# arun(create_draft_content(request, token))
|