MeUtils 2025.3.21.17.22.17__py3-none-any.whl → 2025.3.26.18.50.26__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 (36) hide show
  1. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/METADATA +263 -263
  2. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/RECORD +36 -28
  3. examples/_openaisdk/openai_google.py +49 -0
  4. meutils/apis/common.py +12 -10
  5. meutils/apis/dashscope/__init__.py +11 -0
  6. meutils/apis/dashscope/audio.py +37 -0
  7. meutils/apis/images/recraft.py +6 -1
  8. meutils/apis/jina/common.py +3 -2
  9. meutils/apis/siliconflow/videos.py +40 -21
  10. meutils/apis/textin_apis/__init__.py +13 -0
  11. meutils/apis/textin_apis/common.py +66 -0
  12. meutils/apis/textin_apis/utils.py +42 -0
  13. meutils/apis/textin_apis/watermark_remove.py +58 -0
  14. meutils/apis/utils.py +1 -1
  15. meutils/caches/common.py +1 -0
  16. meutils/common.py +8 -0
  17. meutils/data/VERSION +1 -1
  18. meutils/data/oneapi/NOTICE.html +4 -1
  19. meutils/io/files_utils.py +4 -2
  20. meutils/io/openai_files.py +2 -5
  21. meutils/io/x.py +12 -58
  22. meutils/llm/completions/chat_gemini.py +2 -2
  23. meutils/llm/completions/chat_plus.py +24 -11
  24. meutils/llm/completions/chat_spark.py +4 -2
  25. meutils/llm/completions/yuanbao.py +12 -6
  26. meutils/notice/feishu.py +3 -0
  27. meutils/request_utils/crawler.py +3 -2
  28. meutils/schemas/image_types.py +1 -5
  29. meutils/schemas/oneapi/common.py +37 -5
  30. meutils/schemas/siliconflow_types.py +24 -2
  31. meutils/schemas/textin_types.py +64 -0
  32. meutils/serving/fastapi/exceptions/http_error.py +29 -9
  33. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/LICENSE +0 -0
  34. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/WHEEL +0 -0
  35. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/entry_points.txt +0 -0
  36. {MeUtils-2025.3.21.17.22.17.dist-info → MeUtils-2025.3.26.18.50.26.dist-info}/top_level.txt +0 -0
@@ -107,6 +107,7 @@ examples/_openaisdk/openai_ep.py,sha256=cAaeyC8Lstk1MB36c4h7X9n7EnEnY7rr2Tugo_di
107
107
  examples/_openaisdk/openai_files.py,sha256=zcF4k4sQ2FnINhq6x1wCKw1WCu93g1h69Yul_rLdakE,2058
108
108
  examples/_openaisdk/openai_gitee.py,sha256=UQEJMQMQDhgqYzo_aYetYXnBmVtqRwIweJDDK3NlSMw,1205
109
109
  examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp797A,1056
110
+ examples/_openaisdk/openai_google.py,sha256=GSjiE09LEBTNcevFrAk34_N-iHMqLzogQvTwMss1UJI,1231
110
111
  examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
111
112
  examples/_openaisdk/openai_images.py,sha256=_ceVlEhg8sSpsBqyMpaURqnBNdmQt-L7-UDb1N0IHmk,5980
112
113
  examples/_openaisdk/openai_jina.py,sha256=QeGRXMQmkJyg8Cz4Vfx4pP39a5TcO7pQQfPAPbBA8bs,1628
@@ -247,7 +248,7 @@ examples/文档智能/__init__.py,sha256=JKHlkF5vTvwFJnFLIT7raQxsvBoK12b8lvVz-c0
247
248
  meutils/__init__.py,sha256=X_i77Bvnt4-c4XUwuzGZTvXP2doPtTBqQsHl9DE455E,348
248
249
  meutils/_utils.py,sha256=5oL-s4vM0DZSyI9j1Qoo999PcJagMKNZ9ZPaXFo9tp4,1999
249
250
  meutils/cache_utils.py,sha256=6vz3G8wZ5iOXH91J-dp7ciU_BuLDzjjQUi4Hl8rrzOY,8425
250
- meutils/common.py,sha256=Q67tijaVW0J5bpGi1dZ9DY53ilMAf1lQtxTVn3QJlE4,16559
251
+ meutils/common.py,sha256=a-i3RurMY9I5xnnA3esMcs08vHO5Dhk3uWrpce0ijm8,16785
251
252
  meutils/date_utils.py,sha256=--rh58qfa2iagLjgA0eh1myyvaZ0hgxHiy-WCsrNsuk,2497
252
253
  meutils/dist_utils.py,sha256=3U9VXuVf4_iWtXn6C5Dd5yDDDpzdZxZaokuQmuUcUwY,3640
253
254
  meutils/hash_utils.py,sha256=u_rM8QvgSl5Num8MljXD8tqEuxhEvHInWawor8tgac8,2563
@@ -320,7 +321,7 @@ meutils/ann/milvus.py,sha256=Y2MWEChNmIQWG3ddUhjFnZUVHc4H_crEOySj_CNXYxI,238
320
321
  meutils/ann/shake_demo.py,sha256=MuT4pSBcHlDV1a7aRmAL_AbmYtuieLFXfiEDLCjBLBE,1076
321
322
  meutils/apis/__init__.py,sha256=7e1Lw5d7LoPGxrU9J2uh0y6Gg7RmDx_d40HljvbRvbY,345
322
323
  meutils/apis/ali_apis.py,sha256=da69FKwBiEEDIoxmWP4M09rpuOjggwt2NWepbX3H7bs,1905
323
- meutils/apis/common.py,sha256=SkoYmZb6KcC12W3AcJCMO5GTY4d38YkS2OUMaJrusQk,3681
324
+ meutils/apis/common.py,sha256=XALPn5LyqVhIWGa_utq6mDSiU6Pbl6xnffqHUekiLzw,4036
324
325
  meutils/apis/firecrawl.py,sha256=Kibq6JevgM5o__x1UTjtBhYXmvKlYxEhzMi0Zz0fNeE,1152
325
326
  meutils/apis/jina.py,sha256=hWSPrQIAlsKk1gHz_BAp5MFKu5XI84bUUCUYn9Sg7dI,4927
326
327
  meutils/apis/kuaidi.py,sha256=4KrtOkbGlsLpyvbY80UMSo03iFqFiBHnE0CiqAWWQ4Y,998
@@ -329,7 +330,7 @@ meutils/apis/niutrans.py,sha256=tWUyGH5SReLBQyVuB7kZvoFB35dsN6gXN-anbiHc_B4,2298
329
330
  meutils/apis/search_music.py,sha256=HBLtdterztrccnLAPZrWBlrYSx4WCRflCqz-V30fOA8,972
330
331
  meutils/apis/textin.py,sha256=Alodn8U5J1Pty_sv1in_-f3B_G5PDERQRaxOCtH7Xcc,4894
331
332
  meutils/apis/ts.py,sha256=Q13EOS9Q-Y2-KwOG_cFMVmGj9RUmDtxk5A3E27dxbN0,1511
332
- meutils/apis/utils.py,sha256=hwIj67IsuI3255l3rDDHmcwUIlRoK_xLnE6iCvqOi74,2045
333
+ meutils/apis/utils.py,sha256=XbwnwNBVtRaNP2zZI-PG18w12LpJU_V3HF-98tADppI,2057
333
334
  meutils/apis/web_search.py,sha256=6gS3leIB2iyeLtqhB0IbpL_mKzDgArRTqnR7odTWT3E,1035
334
335
  meutils/apis/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
335
336
  meutils/apis/aitools/__init__.py,sha256=USdDfW2JZyUVY8ko54Dwpl801O766bvO_3F1lM4b8Gc,271
@@ -347,6 +348,8 @@ meutils/apis/chatglm/glm_video_api.py,sha256=fr4hizU-jEjCdXvd8VpYY0XthEJfLQCcyBY
347
348
  meutils/apis/chatglm/images.py,sha256=k2EtOpksgAfJb2MD6kLOKKem713kamTIinRmgr8_3n0,1974
348
349
  meutils/apis/chatglm/temp.py,sha256=zYe6JGUHVfb77T_TdNsdmpTs2D9OyqDTUEkblDAIoYY,17811
349
350
  meutils/apis/chatglm/x.py,sha256=lI86Cd6SN4noCN5HM9gRugcVmjHDtxDTV4m-7Bj61N0,24312
351
+ meutils/apis/dashscope/__init__.py,sha256=UgwoOhkT55c9TBxb9_Xypg6dd_vD3cRxcNcNkArYAns,271
352
+ meutils/apis/dashscope/audio.py,sha256=v9nXCW1nF5ekzYasp0YxFcz3Vh9ebv6hMSK1W9HKJHY,986
350
353
  meutils/apis/fal/__init__.py,sha256=A7w3ZAS7Tv20N4X4Em6NshDxKSCPAzaPxHJTbM3BbyM,272
351
354
  meutils/apis/fal/files.py,sha256=Gppdo96uw8-TCDr8P691jV7dK9Si-E-kJXFJR5BVt-Q,1373
352
355
  meutils/apis/fal/images.py,sha256=0diKFpsiO_ZZTL8LnNMN5wV2urfhIEIqIMe_HdrdiLs,8707
@@ -380,7 +383,7 @@ meutils/apis/images/deepinfra.py,sha256=lMqfU0LIXEzHiAS31dCcoTnPIE6tpoDJhq61H0TV
380
383
  meutils/apis/images/demo.py,sha256=Cjk-EKMKbp44czykW_44qR0TzElX8nNCALqXBBw5sJA,4405
381
384
  meutils/apis/images/edits.py,sha256=vyX5AEZcNvLHB4fXWo2PdviNv0jMMO34e1k-IbedjO0,9935
382
385
  meutils/apis/images/eidt.py,sha256=s8IBbCjwwoogIUf-d2O7nkawUmly9n19nvLYPaLEeg4,1217
383
- meutils/apis/images/recraft.py,sha256=FHf0jvTRBXlHZrzrrS0MQumqnjtdlu62A2L1a193s6g,70537
386
+ meutils/apis/images/recraft.py,sha256=Uk0InfY-epyuLGYs93EL6F9SJMsx8NX6JuEFCgMR48M,70651
384
387
  meutils/apis/images/flux/__init__.py,sha256=W_PZabQm6EmtJYmzEiEpL_WCXTAW0AiJ-t_n5UTrE8c,271
385
388
  meutils/apis/images/flux/fluxpro.py,sha256=NFl9t9C3R3jsNJpez4o9tOz3r-fjRXj-vKMxCSTRDTU,4022
386
389
  meutils/apis/images/flux/mystic.py,sha256=cUkqaMAbd3dSBCvFEoNBBoEoWCGzvBJWPEkEq1Q8xzw,3616
@@ -401,7 +404,7 @@ meutils/apis/jimeng/files.py,sha256=E-pPmi6fIP_n6wgfiDbqeWsIfrXVZUe7LpA6Wds1xDI,
401
404
  meutils/apis/jimeng/images.py,sha256=m0b9sFxWtSJPbLOFg9B8ECV17cMcCgHs9m5SCySeYNE,13259
402
405
  meutils/apis/jimeng/videos.py,sha256=x-PDOYNBN-yTmNvMbyDbwm_E2LXZ6A4hcVzEahV_Hvc,10813
403
406
  meutils/apis/jina/__init__.py,sha256=WnZ4LOv-bzC1brd5FZHOHmgq4c0UaFbnksEj2_LzXxQ,292
404
- meutils/apis/jina/common.py,sha256=Eerewy0_3AxSoO5-Zv2wcWbjAlzmnvwK5vnEfQPts-M,1024
407
+ meutils/apis/jina/common.py,sha256=dwSJboUcZtvBTKRcvAUcgMD933VfYCUBDdtxbw1ioiE,1099
405
408
  meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
406
409
  meutils/apis/kling/api.py,sha256=8NEWunWX3pVWhZzDnzw6rd07nPfOuY2T-XkgL86ZWYg,2328
407
410
  meutils/apis/kling/images.py,sha256=FcCkvA4x1Po3SuugfQa8klT0Lrj7fq4N8kbzx6luUxI,5095
@@ -455,7 +458,7 @@ meutils/apis/siliconflow/images.py,sha256=xPWAp9SkWxd5Q7MUIy4kBFYcF_Wyl4fNthskjQ
455
458
  meutils/apis/siliconflow/rerankers.py,sha256=GuKT33MmAiVULqNaAO9IIy1Zp570-kYJ6xP03eLCp5Y,1259
456
459
  meutils/apis/siliconflow/text_to_image.py,sha256=rDxk6NIj4TjigcSPVDZknQR9nUpK5CTJBXc3KjI1Z8Y,4457
457
460
  meutils/apis/siliconflow/utils.py,sha256=Awe0V7Mkceop1vWWrw9901cKQ6HHntIn8HbIG0fEo40,2091
458
- meutils/apis/siliconflow/videos.py,sha256=sYBxrrI5zMr_4_VXDFpjjiISlJNH4o6eIuZgaDnxvB4,3488
461
+ meutils/apis/siliconflow/videos.py,sha256=TyTtBX7Y8J605AGVmfbcUWEbSLcnsOqhQ0vDuNTkrE4,3760
459
462
  meutils/apis/sunoai/__init__.py,sha256=O8J8jKTmvZGGovkF_jCRl3vbL68a4_dXVSxiKIYTkFo,244
460
463
  meutils/apis/sunoai/haimian.py,sha256=CSISElYbbGFnVCxCgAbHM_YZ9ELUjhuFQ6jdYM0hh7E,5521
461
464
  meutils/apis/sunoai/suno.py,sha256=I7UgqkBd7rd8BvOlZqzkf64n7Z2fjw678OnpP5DOKcM,17156
@@ -463,6 +466,10 @@ meutils/apis/sunoai/suno_api.py,sha256=9u25NRsXhUxHpQDkSUFRBBRjZu7bIux9UeIe1-bO_
463
466
  meutils/apis/textcard/__init__.py,sha256=akc6silym0NIl0vX7uF8vhHQnt5RhSx50MFw-2ot9Sg,271
464
467
  meutils/apis/textcard/demo.py,sha256=-kfVmAjWsbEyUn2a4MljATPtJurrPKKDG3nrZhIhYS0,552
465
468
  meutils/apis/textcard/hanyuxinjie.py,sha256=4-VP7ZfEPPVonqisJO-PkzcJwQFQtNYAA_tz1BE7kqA,2044
469
+ meutils/apis/textin_apis/__init__.py,sha256=jtxgw3_tTRZCTMbYWP9QMoUo_sgtmWyo9PWC1tHxlKU,297
470
+ meutils/apis/textin_apis/common.py,sha256=63uG2AtiDxqz5SpLAt1LpCAA1TRs6LyHjlRqfrwLjHw,2145
471
+ meutils/apis/textin_apis/utils.py,sha256=sq-qYbuNWJxUGlYPrrcY3xc1gs5jGp0bdbFaHNv3KPY,1065
472
+ meutils/apis/textin_apis/watermark_remove.py,sha256=VRMi_GQUfZon4X-ehme_3HfSyNj9Qp3TBuF5pO6Gto8,1966
466
473
  meutils/apis/to_image/__init__.py,sha256=-QJwCKB2KsSHAbNhYwv8DKe-gdZoILnufC7SDFdiwIo,271
467
474
  meutils/apis/to_image/html2image.py,sha256=5GudnR14y3bVmCrtahj6ms_1dc3BttZRLnKSD2Saqps,886
468
475
  meutils/apis/to_image/md.py,sha256=cjOU0a1OVsXDuwh4E-ct-YWZL56fEKNHeMP7VThI0xM,1393
@@ -503,7 +510,7 @@ meutils/async_utils/common.py,sha256=bfZkUlQz21WHAh2W7SDxFtrvUYNBnRfVxIUgMmT7o1Q
503
510
  meutils/async_utils/test.py,sha256=lkZdgSzzgVg8hYVcaBNEJ3KBvFTEfjbXZVvtknQZsRQ,1155
504
511
  meutils/caches/__init__.py,sha256=hIUEqNnmhukkbKK2F39bXe-MGDwzeUoTOf_sYly53xo,291
505
512
  meutils/caches/acache.py,sha256=ajuQkQUt4ojGEMUNO0IGpJTZKL3tWK0F4pBZU2uxl6g,3198
506
- meutils/caches/common.py,sha256=_shMi_U99g5vzfg9SAmUQHVE2IgWyiNATiSBBsDKGHI,1743
513
+ meutils/caches/common.py,sha256=FSNRgzOZT1N57ZajSzFxfQRjvN0bLMnN4v1TIj0P5p4,1744
507
514
  meutils/caches/redis_cache.py,sha256=oXGk_CZhjp9P_z1TG_zhmma4iGepK-iIWY_ZYQWSkFg,1395
508
515
  meutils/caches/redis_mulit.py,sha256=WQrNmH98S0D9mG5eixqPtrYvOPi62T4w2ZvNETB4eU4,597
509
516
  meutils/clis/__init__.py,sha256=2Fhn43X8kFP6FpAnnAMiPcdnjUwQaukiIr2uGB6mGAY,279
@@ -531,14 +538,14 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
531
538
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
532
539
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
533
540
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
534
- meutils/data/VERSION,sha256=egs8KzYoitH1Hi50R0eyYLvfPcGxmoRTIJAWMsFR8tk,19
541
+ meutils/data/VERSION,sha256=02E3mPoiMQpB96Dqf0ksn7yw35dzPObsRwWT0D8HtJ4,19
535
542
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
536
543
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
537
544
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
538
545
  meutils/data/coordinate.py,sha256=VbFtcdho0XG4j-rZD0DgqcIf2_LR2LlbLtfhLXbxiDY,600
539
546
  meutils/data/cowboy-hat-face.webp,sha256=AHi2t-WclDVKWgGEe-oZzI4xKACNlgGWUgd622y0K-E,24814
540
547
  meutils/data/oneapi/FOOTER.md,sha256=f_uTlAXtYBZFcVZkPpPxL2m9lvomaYD0NUPT0Yy91Y4,516
541
- meutils/data/oneapi/NOTICE.html,sha256=b0zJ3Hn7GIJ5Zb937syTRpZQQ1iJfDy5LV6OXq2m9xI,361
548
+ meutils/data/oneapi/NOTICE.html,sha256=Sy-b_1z_dE1IWtptORuwqH2yUn3qx5qm7ispEnDkVbE,481
542
549
  meutils/data/oneapi/__init__.py,sha256=qs1T3oB5I_2KYDHYLBQr4qfSgudeIeg1tu5OvjnETFQ,400
543
550
  meutils/data/oneapi/index.html,sha256=SLxEEgxQgN5P2AgOTJf6LrTXY-6_KCxST7-aMh4TEho,9974
544
551
  meutils/db/__init__.py,sha256=HR99rqxoFTWXUHDhLVl33tzIn8M86gigHLmEzOKH1Ec,7637
@@ -578,12 +585,12 @@ meutils/init/evn.py,sha256=GPw9Un8YbgYJmjwd-uYWQ8JeVr6pRxwyYbDv3W8fb1s,1588
578
585
  meutils/init/oo.py,sha256=jXWaCWWFYVPGgTIas47Z3J7sIq-CD7DyK6fKDBsq8GA,12884
579
586
  meutils/io/__init__.py,sha256=uW43ZfdWu7adRvwvcTzUGtn4CseRmbzEJdlZV-oqHEA,2107
580
587
  meutils/io/_openai_files.py,sha256=UIiu6Zg7iSFIn1xIcpLznFlnfCxAJFGuvuPtxvTNHfI,1005
581
- meutils/io/files_utils.py,sha256=WrLVGR0zFueyQKJs8dkPk6h4FoNvU0UfPs-2ujUFXGc,8030
588
+ meutils/io/files_utils.py,sha256=S2d1eYdAHrxE3fgyAyqEV4hb-iCWEHrYDbPaNbJmmyg,8032
582
589
  meutils/io/image.py,sha256=BJmYzx7o66X7C32gOfVmfr5tBRXOi0IYQY7BpGLsGrg,6926
583
590
  meutils/io/minio_utils.py,sha256=i1YuxwDJzLse0smMXuPqnD1wirBBb8psmB_kd1oPoVU,1274
584
- meutils/io/openai_files.py,sha256=wJ-N03Ip4QCyh10uwWEQuqnbvZEys9hEP4ABLybR_DI,5474
591
+ meutils/io/openai_files.py,sha256=sld1YLsx-jqLkHSx0W9TbPDlXq2txw2ieWi9zxlx58Y,5514
585
592
  meutils/io/tf_io.py,sha256=vEZZS4pCf4Dt3A-FtIVMfhC3FJUUpQCK2OoEvXrBWos,8605
586
- meutils/io/x.py,sha256=NyDhVhZ9poPPxaK-W5G8qWAnxjZ5NEz-kv32tK8qNvA,2665
593
+ meutils/io/x.py,sha256=jfDFNgZpCa8cDzrfgTZcxw9cm01l7LyFXUUhamSZo0I,702
587
594
  meutils/io/parsers/__init__.py,sha256=h3fRoVBxA5zFx6f-GD7L4UikOVyo0IDEluXL_dQXf4k,244
588
595
  meutils/io/parsers/fileparser/PDF抽取.py,sha256=Xd7VLNB7c3U64bE8A9Fi_LBgaEfsysFniDtFF3rVOMc,1975
589
596
  meutils/io/parsers/fileparser/__init__.py,sha256=BFHAwQAkwuLI1_vy_5g-Kc1xnx1MPmN7D6S83Frmvwo,284
@@ -620,9 +627,9 @@ meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
620
627
  meutils/llm/utils.py,sha256=4u3b8VO3wX3xKny1AdV4579qXux1YA4k5gI-CYPtx0o,4279
621
628
  meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
622
629
  meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
623
- meutils/llm/completions/chat_gemini.py,sha256=-mvHM6Or1gSnRFk1BgyU0cHxQb8Q1xg0e8BSXmBeR5U,4303
624
- meutils/llm/completions/chat_plus.py,sha256=GOqIhDg6DqgIFDfY5AySUMOIt8O6S9IUasuTYtTCBUQ,7162
625
- meutils/llm/completions/chat_spark.py,sha256=WKXRSCj4Uive95pgPDXcJpQT0tTL0TgFIRY6AQZbYl0,9529
630
+ meutils/llm/completions/chat_gemini.py,sha256=u72X_SdCNYL5IQ_ZpJjN4sNN9822t0cTnM9iYioGmQc,4307
631
+ meutils/llm/completions/chat_plus.py,sha256=RPYQqx4vc57gevcz0gUS7QPvGm0M12ktAspMKJtoeuk,7727
632
+ meutils/llm/completions/chat_spark.py,sha256=FoI8wvWBp2ckM1DFayKbUg7jkzF6HCbkJTrEYY6wlgc,9570
626
633
  meutils/llm/completions/chat_videos.py,sha256=P3Yz34dkNlxCxzOuKHJ9pHIA4UXK3Y5RXPzVnQjb9rc,2915
627
634
  meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
628
635
  meutils/llm/completions/deep2x.py,sha256=e2CXIbwBNI9ck4cLMq-9n9YGOmPQahblaA7vZsS97QE,3333
@@ -637,7 +644,7 @@ meutils/llm/completions/tryblend.py,sha256=NfVRktn1QiE2k60PzEI-LmKuxZCc7mtL_Klsr
637
644
  meutils/llm/completions/tune.py,sha256=FypfUgsB34t-E9xI6WydJYEk_-phscrLOX1iUCeKb_E,10138
638
645
  meutils/llm/completions/x.py,sha256=XE8aCyuhkpYq0nho1mq9lAdRU1yOPc8BpvCpNYYMYqM,630
639
646
  meutils/llm/completions/xx.py,sha256=pPfVRczvXZFUvAUOAFr0MMHMb5kVPNfKVhOLKugq52M,1646
640
- meutils/llm/completions/yuanbao.py,sha256=1LAZJ5SnrEomoPS3vD6o6VedrSVscKoJOi_lUzBcEPk,7203
647
+ meutils/llm/completions/yuanbao.py,sha256=8jU0_KRLqaUb3xXabIclSo3-z0f0qSJ1Gx3_LoMIoh8,7577
641
648
  meutils/llm/completions/agents/__init__.py,sha256=Wklnf7FTHm43hyVwfT8FXX44nqdOTykPb_HORIqDuuw,270
642
649
  meutils/llm/completions/agents/search.py,sha256=GKsk0NRy6jsbSu8E9mdBWObJzroGE-L7Iuo5W2MK_u0,5057
643
650
  meutils/llm/completions/assistants/__init__.py,sha256=1QWMIG5dA2wH7550ZdNpW00NPU9q8C-eXybjTsm1aSU,271
@@ -661,7 +668,7 @@ meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,
661
668
  meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
662
669
  meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
663
670
  meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
664
- meutils/notice/feishu.py,sha256=2SbEH5OC9fnqbmmCUyg6UtfWwRa4NNvLcEv0gyMGhys,3714
671
+ meutils/notice/feishu.py,sha256=1ANhOfuhabSXduqeO0zNe4ai5kizDAYYWLCXKhcHihQ,3911
665
672
  meutils/notice/file_post.py,sha256=KQ8iQUM30vF7T6ZZPahdLps4dLXK2s3nzdFYbty6M5E,953
666
673
  meutils/notice/load_emailfile - 副本.py,sha256=f-Kq3UKZut_P0bmumV1y4PXuPtatjl-5SLUH5LShBUY,7331
667
674
  meutils/notice/wechat.py,sha256=-HU5oSvpZrVnjjU76ky7_j0yg5ivn5mIlJ7JJVtlrnY,4082
@@ -730,7 +737,7 @@ meutils/queues/uniform_queue.py,sha256=fKZw-xc9RBY0VoN6uRwQWEds8o5U0nxBz7SQhAVzq
730
737
  meutils/request_utils/__init__.py,sha256=wqP3vkDJ2wFMawvx4XyT-5pNf-Jr81PYTQ14FCcG-Pw,4053
731
738
  meutils/request_utils/ark.py,sha256=n7U89XlESpVJ-gErJIi1fvslkULLJEjAQQoEORGusr4,1012
732
739
  meutils/request_utils/a爬虫.py,sha256=PTsl0RuNB7IByErMpGZj5WwSZeHBRR53YqRNx1J0_EU,1894
733
- meutils/request_utils/crawler.py,sha256=GBcwoW0FHajpslF0suziAlfGcj-DsIkkKBLquFvDGe4,2342
740
+ meutils/request_utils/crawler.py,sha256=7asGv3cDg2JVN8-cI_T078Hif-RSEBFjEE7HC38ED7I,2419
734
741
  meutils/request_utils/download.py,sha256=qFGt79Jp1f8n681x0kHWN3S70E-l46PlM2xqSdUDNm8,1767
735
742
  meutils/request_utils/results.py,sha256=i422B66FHc7fzAyyORpQEkO0QO_dk38d1K0i8XYuixk,1334
736
743
  meutils/request_utils/tiangong.py,sha256=l5t4pAWxxYvFxvyo-jJ-R6efKWMHjYPiPjrPUGMZLiU,3057
@@ -752,7 +759,7 @@ meutils/schemas/fish_types.py,sha256=yC0ZFr3Ebh8F0OhtMsXYaIfNNvzOM2LT9YtKTaRoHGU
752
759
  meutils/schemas/hailuo_types.py,sha256=lZ3Q07QNgxJvrX8JJvalxUsro4gGLOMQDusSEwV4EO0,7429
753
760
  meutils/schemas/haimian_types.py,sha256=jGu484UviAeBgy5OIUyRY4uYCxXfv16zDPqiJQr9wNQ,1364
754
761
  meutils/schemas/idphoto_types.py,sha256=nuHbpppejRSkJCiQ7YKx0Gnke0ShKZhOvdg0e7tk9-0,1074
755
- meutils/schemas/image_types.py,sha256=Ev7Oe1FgUEjxeLJ4tFnovSqqeS0nh_0wLpBNZW_yImw,13063
762
+ meutils/schemas/image_types.py,sha256=QYXYRqYNiF-9gKvTOg8eLaNd2rLsvsqT83Zf1JEQyTU,12950
756
763
  meutils/schemas/jimeng_types.py,sha256=_fROFicbaqP8Bbg6V1vhIOXfrzp9WrxWHbCDCNzYCHU,977
757
764
  meutils/schemas/jina_types.py,sha256=SLRRBCap2B1uXnHF7Sgnlz1Work8HvdIltjj4oVlGTk,8826
758
765
  meutils/schemas/kimi_types.py,sha256=PjCgHwCDNzKasn4X6rUzvOENqKYT3xj07cgp71IdsDA,3607
@@ -772,10 +779,11 @@ meutils/schemas/prodia_types.py,sha256=knh_lzAxMfWMoqAPmvyMweay9PmQmsoQ1X6Mj17oh
772
779
  meutils/schemas/replicate_types.py,sha256=Todfo-y2Gq1MW8IyEmzz_ZlTxuQ3PvIfiF0KkrmJaYw,3160
773
780
  meutils/schemas/request_types.py,sha256=GP2radX2Ixjbu8NDKihUsrSOft6WgcFYd7LXxM4mPY0,407
774
781
  meutils/schemas/runwayml_types.py,sha256=q6g00kg1PYCDjpw-notgbcUGwRAlIa8kAmU52ZuXyLQ,6128
775
- meutils/schemas/siliconflow_types.py,sha256=a8SOf-bh5ZBddqsCqJNPFfw9olxk-bD_ySqTr8d0aZw,8597
782
+ meutils/schemas/siliconflow_types.py,sha256=KClkwA2huq8YKuUCYIJZ4RF94ALhy3BsOMF1FcqRO1A,9266
776
783
  meutils/schemas/step_types.py,sha256=nGTPXZ7RwOF2RTsPBQguLLcIaBxHs4bsZkYa_LalcJ0,648
777
784
  meutils/schemas/suno_types.py,sha256=CxEXHGnLGZ7xvmoIYpz7IYPL73aLjtpHezJRIjWryKs,14965
778
785
  meutils/schemas/task_types.py,sha256=Zjbn6AiopkPA3px2ZiMouU9QrL43p9O8bJB5OTI-O_4,4638
786
+ meutils/schemas/textin_types.py,sha256=IBYbSG7n5rAcS7Z5bXPBnL1a91gx8IBpUlFTGULKj9k,1429
779
787
  meutils/schemas/translator_types.py,sha256=xufNQeyim7RhkzAK_J5_JchZfqaUBDXFwMtrPUu1xzI,627
780
788
  meutils/schemas/tripo3d_types.py,sha256=mQF65HwHYmczRgAIuXK5hGxWDWNYDq-Xu9pja7Dwy4o,1452
781
789
  meutils/schemas/tryblend_types.py,sha256=glZ0diRJvZmfQotcCWYBA832inihy8TvVWxWZ64CzWA,27793
@@ -787,7 +795,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
787
795
  meutils/schemas/db/oneapi_types.py,sha256=YanT0q9pU7dva2ZBPWjCpwGNUuifnJh0zUJJCQ9070c,3848
788
796
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
789
797
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
790
- meutils/schemas/oneapi/common.py,sha256=lQhf63UwzQZDsdxaJokJWzHhmVPB4P0d5dqM-L1t2SI,31473
798
+ meutils/schemas/oneapi/common.py,sha256=MjIy2-GH-g08Vz14kSq1nU9k3T2JHDneoNpLF9iEGvY,32114
791
799
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
792
800
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
793
801
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -815,7 +823,7 @@ meutils/serving/fastapi/dependencies/__init__.py,sha256=shI1EgfH4gFuajmHGlzt_Ard
815
823
  meutils/serving/fastapi/dependencies/auth.py,sha256=4L2wa1X6tftJdIJsgGvebKL8IPGuL_4U6-7gY2uXxL0,1872
816
824
  meutils/serving/fastapi/dependencies/headers.py,sha256=QHsWn8w_9f4_WoYTAOJzzb38FVQdRgbNATLdChWaVGg,916
817
825
  meutils/serving/fastapi/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
818
- meutils/serving/fastapi/exceptions/http_error.py,sha256=N_sgX9uEA77nmTfLYZU7o-vUZwrDK8Uvjyqf7FSxr2I,2065
826
+ meutils/serving/fastapi/exceptions/http_error.py,sha256=b3aG6mJCSefWPA1K6AX49pkAs31MRhuDIZkq9DLiTW0,2573
819
827
  meutils/serving/fastapi/exceptions/validation_error.py,sha256=Q71wYfzGsVjLA-SQ3R5a8iT0kDG01mwriVUXHhvsTv0,1234
820
828
  meutils/serving/fastapi/routers/__init__.py,sha256=F473oGpbMmCFMbnfuk9MKyO30ke-YvP7AR5jhsnxjNg,270
821
829
  meutils/serving/fastapi/routers/_test.py,sha256=FgymiRBXz_EEerTc4V7aY9iTUZ1u0qZSTqhdQMg2Or4,546
@@ -916,9 +924,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
916
924
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
917
925
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
918
926
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
919
- MeUtils-2025.3.21.17.22.17.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
920
- MeUtils-2025.3.21.17.22.17.dist-info/METADATA,sha256=zEMBOwv50mFglkB-ysmZFeUJ-ZZRDNkHV-9SbzIdFVk,32834
921
- MeUtils-2025.3.21.17.22.17.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
922
- MeUtils-2025.3.21.17.22.17.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
923
- MeUtils-2025.3.21.17.22.17.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
924
- MeUtils-2025.3.21.17.22.17.dist-info/RECORD,,
927
+ MeUtils-2025.3.26.18.50.26.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
928
+ MeUtils-2025.3.26.18.50.26.dist-info/METADATA,sha256=ZumPkFItKQhXqJyGjloY63QHyjzGeUvd7Yi-jlugpGM,32834
929
+ MeUtils-2025.3.26.18.50.26.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
930
+ MeUtils-2025.3.26.18.50.26.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
931
+ MeUtils-2025.3.26.18.50.26.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
932
+ MeUtils-2025.3.26.18.50.26.dist-info/RECORD,,
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : openai_siliconflow
5
+ # @Time : 2024/6/26 10:42
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+ import os
11
+
12
+ from meutils.pipe import *
13
+ from openai import OpenAI
14
+ from openai import OpenAI, APIStatusError
15
+
16
+ client = OpenAI(
17
+ api_key=os.getenv("GOOGLE_API_KEY"),
18
+ base_url=os.getenv("GOOGLE_BASE_URL"),
19
+ )
20
+
21
+ print(client.models.list().model_dump_json(indent=4))
22
+ # models/gemini-2.5-pro-exp-03-25
23
+ # models/gemini-2.0-flash-exp-image-generation
24
+ #
25
+ try:
26
+ completion = client.chat.completions.create(
27
+ # model="models/gemini-2.5-pro-exp-03-25",
28
+ model="models/gemini-2.0-flash-thinking-exp",
29
+ messages=[
30
+ {"role": "user", "content": "画条狗"}
31
+ ],
32
+ # top_p=0.7,
33
+ top_p=None,
34
+ temperature=None,
35
+ stream=True,
36
+ max_tokens=4000,
37
+ extra_body={"A": 1}
38
+ )
39
+ except APIStatusError as e:
40
+ print(e.status_code)
41
+
42
+ print(e.response)
43
+ print(e.message)
44
+ print(e.code)
45
+
46
+ for chunk in completion: # 剔除extra body
47
+ print(chunk)
48
+ if chunk.choices:
49
+ print(chunk.choices[0].delta.content)
meutils/apis/common.py CHANGED
@@ -90,28 +90,30 @@ if __name__ == '__main__':
90
90
 
91
91
  "https://nextchat.chatfire.cn/#/?settings={\"key\":\"{key}\"}"
92
92
  url = """https://ichat.chatllm.vip/#/?settings={"key":"sk-"}"""
93
- url = "http://111.173.117.175:40000/rag/"
93
+ # url = "http://111.173.117.175:40000/rag/"
94
+ url = "http://oss.cloudbellai.com/file/%E5%8A%9F%E8%83%BD%E7%82%B9%E5%9B%BE%E7%89%87/MES%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/%E3%80%90%E6%8E%A8%E8%8D%90%E3%80%91MES%E7%B3%BB%E7%BB%9F%E8%A7%84%E5%88%92%E4%B8%8E%E5%AE%9E%E6%96%BD/MES%E7%B3%BB%E7%BB%9F%E8%BE%B9%E7%95%8C%E4%B8%8E%E9%9B%86%E6%88%90.png"
94
95
  # print(shorten_url(url, 'w3'))
95
96
  # print(shorten_url(url, 'dagd'))
96
97
  # print(shorten_url(url, 'clckru'))
97
98
  # print(shorten_url(url, 'tinyurl'))
98
99
  # print(shorten_url(url, 'ft'))
100
+ print(shorten_url(url))
99
101
 
100
102
  from meutils.io.image import image_to_base64
101
103
 
102
- apis = [
103
- # "https://api.isoyu.com/qr/?m=1&e=L&p=8&url={}",
104
- # "https://my.tv.sohu.com/user/a/wvideo/getQRCode.do?text={}",
105
- # "https://api.qrserver.com/v1/create-qr-code/?data={}",
106
- "https://api.qrserver.com/v1/create-qr-code/?size=500×500&data={}",
107
- ]
108
-
109
- for api in apis:
104
+ # apis = [
105
+ # # "https://api.isoyu.com/qr/?m=1&e=L&p=8&url={}",
106
+ # # "https://my.tv.sohu.com/user/a/wvideo/getQRCode.do?text={}",
107
+ # # "https://api.qrserver.com/v1/create-qr-code/?data={}",
108
+ # "https://api.qrserver.com/v1/create-qr-code/?size=500×500&data={}",
109
+ # ]
110
+ #
111
+ # for api in apis:
110
112
  # print(data2qrcodeurl('知盒欢迎你', api, shortened=True))
111
113
  # print(data2qrcodeurl("http://www.zhihechat.com/#home", api, shortened=True))
112
114
  # print(data2qrcodeurl("https://www.baidu.com", api, shortened=True))
113
115
 
114
- print(data2qrcodeurl(image_to_base64('qr.png'), api, shortened=True))
116
+ # print(data2qrcodeurl(image_to_base64('qr.png'), api, shortened=True))
115
117
 
116
118
  # break
117
119
 
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2025/3/23 16:07
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : audio
5
+ # @Time : 2025/3/23 16:07
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+ import os
11
+
12
+ from meutils.pipe import *
13
+ from dashscope.audio.asr import Transcription
14
+
15
+ file_urls = [
16
+ "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
17
+ "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav",
18
+ ]
19
+ language_hints = ["zh", "en"]
20
+
21
+ data = {
22
+ "model": "paraformer-v2",
23
+ "input": {"file_urls": file_urls},
24
+ "parameters": {
25
+ "channel_id": [0],
26
+ "language_hints": language_hints,
27
+ "vocabulary_id": "vocab-Xxxx",
28
+ },
29
+ }
30
+
31
+ task_response = Transcription().async_call(
32
+ model="paraformer-v2",
33
+ file_urls=file_urls,
34
+ language_hints=language_hints,
35
+ )
36
+
37
+ response = Transcription().wait(task_response) # .output.results
@@ -54,8 +54,13 @@ async def generate(request: RecraftImageRequest, token: Optional[str] = None):
54
54
  payload = request.model_dump(exclude_none=True)
55
55
  logger.debug(payload)
56
56
 
57
+ # image_to_image
58
+ model_type = "prompt_to_image"
59
+ if request.image:
60
+ model_type = "image_to_image"
61
+
57
62
  async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
58
- response = await client.post(f"/queue_recraft/prompt_to_image", params=params, json=payload)
63
+ response = await client.post(f"/queue_recraft/{model_type}", params=params, json=payload)
59
64
  response.raise_for_status()
60
65
  params = {
61
66
  "operation_id": response.json()["operationId"]
@@ -16,11 +16,11 @@ from meutils.caches import cache, rcache
16
16
 
17
17
 
18
18
  @retrying()
19
- @rcache(ttl=300)
19
+ @rcache(ttl=600)
20
20
  async def _url_reader(url: str):
21
21
  """markdown"""
22
22
 
23
- async with AsyncClient(base_url="https://r.jina.ai", headers={}) as client:
23
+ async with AsyncClient(base_url="https://r.jina.ai", headers={}, timeout=300) as client:
24
24
  response = await client.get(f"/{url}")
25
25
  response.raise_for_status()
26
26
 
@@ -37,6 +37,7 @@ async def url_reader(urls: Union[str, List[str]]):
37
37
 
38
38
  if __name__ == '__main__':
39
39
  url = "https://top.baidu.com/board?tab=realtime"
40
+ url = "https://mp.weixin.qq.com/s/qvR1KbYVOq7XQO1tmEMVJA"
40
41
 
41
42
  # print(arun(url_reader(url)))
42
43
 
@@ -7,21 +7,17 @@
7
7
  # @WeChat : meutils
8
8
  # @Software : PyCharm
9
9
  # @Description :
10
- import asyncio
11
10
 
12
11
  from meutils.pipe import *
13
- from meutils.caches.redis_cache import cache
14
- from meutils.io.files_utils import to_url, to_url_fal
12
+ from meutils.caches import rcache
13
+ from meutils.io.files_utils import to_url, to_url_fal, to_base64
15
14
  from meutils.llm.check_utils import check_token_for_siliconflow
16
15
  from meutils.schemas.task_types import TaskResponse
17
- from meutils.schemas.siliconflow_types import BASE_URL, VideoRequest
16
+ from meutils.schemas.siliconflow_types import FEISHU_URL, FEISHU_URL_FREE, BASE_URL, VideoRequest
18
17
  from meutils.config_utils.lark_utils import get_next_token_for_polling
19
- from meutils.apis.translator import deeplx
20
18
 
21
19
  from openai import OpenAI, AsyncOpenAI
22
20
 
23
- FEISHU_URL_FREE = "https://xchatllm.feishu.cn/sheets/Bmjtst2f6hfMqFttbhLcdfRJnNf?sheet=ICzCsC"
24
-
25
21
  check_token = partial(check_token_for_siliconflow, threshold=0.01)
26
22
 
27
23
  MODELS_MAP = {
@@ -30,18 +26,39 @@ MODELS_MAP = {
30
26
  "mochi-1-preview": "genmo/mochi-1-preview",
31
27
  "ltx-video": "Lightricks/LTX-Video",
32
28
  }
29
+ """
30
+ Wan-AI/Wan2.1-T2V-14B
31
+ Wan-AI/Wan2.1-T2V-14B-Turbo
32
+
33
+ Wan-AI/Wan2.1-I2V-14B-720P
34
+ Wan-AI/Wan2.1-I2V-14B-720P-Turbo
35
+
36
+ 16:9 👉 1280×720
37
+ 9:16 👉 720×1280
38
+ 1:1 👉 960×960
39
+
40
+ """
33
41
 
34
42
 
35
- @cache(ttl=7 * 24 * 3600)
43
+ # @rcache(ttl=0.5 * 24 * 3600, serializer="pickle")
36
44
  async def create_task(request: VideoRequest, token: Optional[str] = None):
37
45
  token = token or await get_next_token_for_polling(FEISHU_URL_FREE, check_token=check_token, from_redis=True)
38
46
 
47
+ if request.image:
48
+ request.image = await to_base64(request.image)
49
+
50
+ if request.model == "Wan-AI/Wan2.1-T2V-14B":
51
+ request.model = "Wan-AI/Wan2.1-T2V-14B-Turbo"
52
+
53
+ elif request.model == "Wan-AI/Wan2.1-I2V-14B-720P":
54
+ request.model = "Wan-AI/Wan2.1-I2V-14B-720P-Turbo"
55
+
56
+ else:
57
+ request.model = "Wan-AI/Wan2.1-I2V-14B-720P-Turbo" if request.image else "Wan-AI/Wan2.1-T2V-14B-Turbo"
58
+
39
59
  payload = request.model_dump(exclude_none=True)
40
- payload["model"] = MODELS_MAP.get(request.model, "Lightricks/LTX-Video")
41
60
 
42
- if payload["model"] in {"genmo/mochi-1-preview", "Lightricks/LTX-Video"}: # 中文不友好
43
- payload['prompt'] = (
44
- await deeplx.translate(deeplx.DeeplxRequest(text=request.prompt, target_lang="EN"))).get("data")
61
+ logger.debug(payload)
45
62
 
46
63
  client = AsyncOpenAI(
47
64
  base_url=BASE_URL,
@@ -49,9 +66,8 @@ async def create_task(request: VideoRequest, token: Optional[str] = None):
49
66
  )
50
67
 
51
68
  response = await client.post("/video/submit", body=payload, cast_to=object)
52
- logger.debug(response)
53
-
54
69
  task_id = response.get('requestId')
70
+
55
71
  return TaskResponse(task_id=task_id, system_fingerprint=token)
56
72
 
57
73
 
@@ -66,8 +82,8 @@ async def get_task(task_id, token: str):
66
82
 
67
83
  data = response.get("results") or {}
68
84
 
69
- for video in data.get("videos", []):
70
- video["url"] = await to_url_fal(video.get("url")) # 异步执行
85
+ # for video in data.get("videos", []):
86
+ # video["url"] = await to_url_fal(video.get("url"), content_type="video/mp4") # 异步执行
71
87
 
72
88
  return TaskResponse(
73
89
  task_id=task_id,
@@ -82,11 +98,12 @@ if __name__ == '__main__':
82
98
  token = "sk-raapiguffsnsxgkfiwfusjmbpcyqoxhcohhxaybflrnvpqjw"
83
99
 
84
100
  request = VideoRequest(
85
- model="Lightricks/LTX-Video",
86
- prompt="这个女人笑起来",
101
+ model="x",
102
+ prompt="这个女人笑起来 ",
87
103
  image='https://oss.ffire.cc/files/kling_watermark.png' # 1148f2e4-0a62-4208-84de-0bf2c88f740d
88
104
  )
89
- # tokens = config_manager.text.split()
105
+
106
+ r = arun(create_task(request))
90
107
 
91
108
  # tokens_ = arun(check_token_for_siliconflow(tokens, threshold=0.01))
92
109
 
@@ -94,9 +111,11 @@ if __name__ == '__main__':
94
111
 
95
112
  # arun(get_task("fa248aac-00ec-4b00-a2f8-3d6bf1cea6d3", token))
96
113
  # arun(get_task("c716a328-438e-4612-aff2-a669034499cb", token))
97
- arun(get_task("1148f2e4-0a62-4208-84de-0bf2c88f740d", token))
114
+ # arun(get_task("1148f2e4-0a62-4208-84de-0bf2c88f740d", token))
98
115
 
99
116
  # token = "sk-oeptckzkhfzeidbtsqvbrvyrfdtyaaehubfwsxjytszbgohd"
100
- # arun(get_task("5ea22f57-45f0-425c-9d1e-bf3dae7e1e81", token))
117
+ # arun(get_task(r.task_id, r.system_fingerprint))
118
+
119
+ # arun(get_task("c6zxjtpsyywj", "sk-lavdsoaybczrfygqdbbqmdgmdktvdztfvwnfmwnbusewjkwb"))
101
120
 
102
121
  # arun(create_task(VideoRequest(model="tencent/HunyuanVideo", prompt="a dog in the forest."), token=token))
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2025/3/23 11:06
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.apis.textin_apis.common import Textin
12
+
13
+
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : common
5
+ # @Time : 2025/3/23 11:46
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.io.files_utils import to_bytes, to_url
13
+ from meutils.caches import rcache
14
+
15
+ from meutils.schemas.textin_types import WatermarkRemove, BASE_URL
16
+
17
+ from httpx import AsyncClient
18
+
19
+
20
+ class Textin(object):
21
+ def __init__(self, api_key: Optional[str] = None):
22
+ # https://www.textin.com/console/dashboard/setting
23
+ app_id, secret_code = (api_key or os.getenv("TEXTIN_API_KEY")).split("|")
24
+
25
+ logger.debug(f"{app_id, secret_code}")
26
+
27
+ self.base_url = BASE_URL
28
+ self.headers = {
29
+ 'x-ti-app-id': app_id,
30
+ 'x-ti-secret-code': secret_code,
31
+ 'Content-Type': "text/plain"
32
+ }
33
+
34
+ @rcache(noself=True, ttl=24 * 3600, serializer="pickle")
35
+ async def image_watermark_remove(self, request: WatermarkRemove):
36
+ s = time.perf_counter()
37
+
38
+ if not request.image.startswith("http"):
39
+ request.image = await to_bytes(request.image)
40
+ # content_type = "application/octet-stream"
41
+ # logger.info(f"image: {type(request.image)}")
42
+
43
+ async with AsyncClient(base_url=self.base_url, headers=self.headers, timeout=100) as cilent:
44
+ response = await cilent.post("/image/watermark_remove", content=request.image)
45
+ response.raise_for_status()
46
+
47
+ data = response.json()
48
+ data['timings'] = {'inference': time.perf_counter() - s}
49
+
50
+ if request.response_format == "url" and data.get("code") == 200:
51
+ data["result"]["image"] = await to_url(data["result"]["image"])
52
+
53
+ return data
54
+
55
+
56
+ if __name__ == '__main__':
57
+ # image = "doc_watermark.jpg"
58
+
59
+ # image = "https://oss.ffire.cc/files/nsfw.jpg"
60
+ image = "https://oss.ffire.cc/files/kling_watermark.png" # 无水印
61
+
62
+ request = WatermarkRemove(
63
+ image=image,
64
+ response_format="url"
65
+ )
66
+ arun(Textin().image_watermark_remove(request))
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : utils
5
+ # @Time : 2025/3/23 11:06
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+
13
+ from openai import AsyncClient
14
+
15
+
16
+ class BaseTextin(object):
17
+ def __init__(self, api_key: Optional[str]):
18
+ # https://www.textin.com/console/dashboard/setting
19
+ app_id, secret_code = api_key or os.getenv("TEXTIN_API_KEY").split("|")
20
+
21
+ self.base_url="https://api.textin.com/ai/service/v1"
22
+ self.headers = {
23
+ 'x-ti-app-id': app_id,
24
+ 'x-ti-secret-code': secret_code
25
+ }
26
+ # self.client = AsyncClient(
27
+ # base_url="https://api.textin.com/ai/service/v1", # /image/watermark_remove
28
+ # default_headers=headers
29
+ # )
30
+
31
+
32
+ def image_watermark_remove(self, image):
33
+ """
34
+
35
+ :param image: text/plain or application/octet-stream
36
+ :return:
37
+ """
38
+ pass
39
+
40
+
41
+ if __name__ == "__main__":
42
+ pass