MeUtils 2025.4.19.14.50.54__py3-none-any.whl → 2025.4.23.16.0.20__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.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/METADATA +263 -263
- {MeUtils-2025.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/RECORD +30 -27
- examples/_openaisdk/dalle3.py +2 -0
- examples/_openaisdk/openai_google.py +57 -40
- examples/_openaisdk/zhipu_/346/231/272/350/203/275/344/275/223.py +12 -4
- examples/bserver.py +85 -63
- meutils/apis/baidu/bdaitpzs.py +4 -3
- meutils/apis/chatglm/chat.py +127 -0
- meutils/apis/google/chat.py +34 -10
- meutils/apis/google/gemini_sdk.py +25 -3
- meutils/apis/google/upload.py +51 -0
- meutils/apis/jimeng/images.py +1 -1
- meutils/apis/proxy/kdlapi.py +16 -8
- meutils/apis/search/zhipu_web_search.py +5 -2
- meutils/apis/textin_apis/common.py +5 -2
- meutils/apis/volcengine_apis/images.py +5 -4
- meutils/data/VERSION +1 -1
- meutils/db/redis_db.py +4 -2
- meutils/io/files_utils.py +2 -2
- meutils/llm/check_utils.py +21 -2
- meutils/llm/completions/assistants/zhipu.py +225 -0
- meutils/llm/completions/chat_spark.py +104 -103
- meutils/llm/openai_polling/chat.py +41 -9
- meutils/notice/feishu.py +1 -1
- meutils/schemas/oneapi/common.py +14 -1
- meutils/schemas/openai_types.py +2 -0
- {MeUtils-2025.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/LICENSE +0 -0
- {MeUtils-2025.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/WHEEL +0 -0
- {MeUtils-2025.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/entry_points.txt +0 -0
- {MeUtils-2025.4.19.14.50.54.dist-info → MeUtils-2025.4.23.16.0.20.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,7 @@ examples/__init__.py,sha256=qcNIwrjAAGqLJP3F0YcEJftLpBSQoBMfnmDlNXsBSNI,250
|
|
5
5
|
examples/args_demo.py,sha256=fPI_h8V2fxEpHin9WfJn6cRzitbbP5Pv6fVfFJkfUAg,1331
|
6
6
|
examples/backgroundtasks.py,sha256=N6Z-uGZLa8ULr4FGomxP1tGifSTKIXq6vvtOJ7Ixw7U,632
|
7
7
|
examples/best_table.py,sha256=qgq9VRtb9LQ0FvxV1opyRB9KN-od4PDMIqfT7JN_QXc,423
|
8
|
-
examples/bserver.py,sha256=
|
8
|
+
examples/bserver.py,sha256=CiyEQHayCZ18lDeHd4T5lTx0Tvny2VMh9Z29x7HJJxE,2811
|
9
9
|
examples/chatgpt.py,sha256=QTQVMcV2X6FbJWgg2_OfcFMELLJIaV9oWu3nbknc6iI,1440
|
10
10
|
examples/crontab_demo.py,sha256=GthbPsFmN6VwP3XLYYgLib56lFxfCp12H_Cu98l1vR0,1525
|
11
11
|
examples/datamodel.py,sha256=8Hpz75mbyMUOo8RA1jJA12tGdoo_M8Owgb8zkqdfvic,1052
|
@@ -79,7 +79,7 @@ examples/_openaisdk/bpo.py,sha256=7Jw16TiKFEQvYbt4g-h7QimLBw7xY49w1MthT5OwcTM,52
|
|
79
79
|
examples/_openaisdk/chat_latex.py,sha256=FzVSvmG988GRItUg1Uga-L3dZseZW76LCvngHqRedD8,2939
|
80
80
|
examples/_openaisdk/chattts.py,sha256=MWQXUpXkpf1knGqsxevBOxX__1LXZr4v9FFhH98ADzM,3043
|
81
81
|
examples/_openaisdk/copilot.py,sha256=lVjncr1HHibzwxOvchA9CwqxtGfhwPr1gZw664DdCb8,1208
|
82
|
-
examples/_openaisdk/dalle3.py,sha256=
|
82
|
+
examples/_openaisdk/dalle3.py,sha256=dhZuJDfPkKgfIPhQBAGLcahpxJlwdSpEtiJj-_Hol18,1079
|
83
83
|
examples/_openaisdk/deeplx.py,sha256=RIOMGTZ6McHyH7UCCD3nPMq6qFtHd6f-sXnapH1iGBM,772
|
84
84
|
examples/_openaisdk/demo.py,sha256=3R8DmwR7BhY844hGLEuVqECm2N29gJmQzYGVNdvLlDc,1875
|
85
85
|
examples/_openaisdk/embeddings.py,sha256=ZnktOqp2G_mCigN8K8wHrAhmTYql2PN3pKqaYMLbTW8,851
|
@@ -109,7 +109,7 @@ examples/_openaisdk/openai_ep.py,sha256=cAaeyC8Lstk1MB36c4h7X9n7EnEnY7rr2Tugo_di
|
|
109
109
|
examples/_openaisdk/openai_files.py,sha256=zcF4k4sQ2FnINhq6x1wCKw1WCu93g1h69Yul_rLdakE,2058
|
110
110
|
examples/_openaisdk/openai_gitee.py,sha256=UQEJMQMQDhgqYzo_aYetYXnBmVtqRwIweJDDK3NlSMw,1205
|
111
111
|
examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp797A,1056
|
112
|
-
examples/_openaisdk/openai_google.py,sha256=
|
112
|
+
examples/_openaisdk/openai_google.py,sha256=3YcTIZds6xCd1rQX1G0Ukub2bwFRJi2EWArkV6sThU8,5815
|
113
113
|
examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
|
114
114
|
examples/_openaisdk/openai_images.py,sha256=_ceVlEhg8sSpsBqyMpaURqnBNdmQt-L7-UDb1N0IHmk,5980
|
115
115
|
examples/_openaisdk/openai_jina.py,sha256=QeGRXMQmkJyg8Cz4Vfx4pP39a5TcO7pQQfPAPbBA8bs,1628
|
@@ -142,7 +142,7 @@ examples/_openaisdk/testDeepseek.py,sha256=TH_Lu0-oi2uqlEtXJ-VbPjdm1XkkF3vEFH3TC
|
|
142
142
|
examples/_openaisdk/x.py,sha256=IdhHsmyd-uZx5UohfWa_g467kZeR1Pkec42z3bW-3Iw,4752
|
143
143
|
examples/_openaisdk/xx.py,sha256=DvU98YbhmFJZ3xWqK4NOAafNqOJLu2ehQycCRLEXVUg,645
|
144
144
|
examples/_openaisdk/zhipu_files.py,sha256=HLvlM9CDcmNER5w-MBMLQPZVPJjR2UHRXYA3ru2cT2Q,1057
|
145
|
-
examples/_openaisdk/zhipu_智能体.py,sha256=
|
145
|
+
examples/_openaisdk/zhipu_智能体.py,sha256=Nj7cZY-MRuf4TFT4zmr6K4ktNPAI6j28gyfLsrUfqR8,3867
|
146
146
|
examples/_openaisdk/兜底测试.py,sha256=7vIOZDj-iB5dJjfJtHe_A-3D7ZUmOSiryI7ciIp0EzE,2878
|
147
147
|
examples/_openaisdk/多模态测试.py,sha256=XNHvC9Qbw3tUZ_i8shyEx3a6T3FFDsTyIIkm3rO0R38,2559
|
148
148
|
examples/_openaisdk/多模态测试_.py,sha256=7mh9dnpSApqmrriQ9-q4jY8uHfplsrjyGSXb8b-Zt9o,1276
|
@@ -344,9 +344,10 @@ meutils/apis/audio/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNH
|
|
344
344
|
meutils/apis/audio/deepinfra.py,sha256=O-IpAnHfx25QCjhB5xaIYVBy5AbyPzmVz-Pr40gpnsM,1773
|
345
345
|
meutils/apis/audio/fish.py,sha256=jPvTveRcDtvGDgRT6EA9WJitAQxftneHxvEJ63yY_cM,8392
|
346
346
|
meutils/apis/baidu/__init__.py,sha256=XPkz3DHrDdxCneaZct3y7MaX0Aw9IIseOYOn1YuVBII,243
|
347
|
-
meutils/apis/baidu/bdaitpzs.py,sha256=
|
347
|
+
meutils/apis/baidu/bdaitpzs.py,sha256=juIuI_1wC7McNDzulps1SR21z3D4GL4sfHQeAHTc4Q0,12717
|
348
348
|
meutils/apis/baidu/test.py,sha256=nb9ivelHIw84-d1V-MNGRpGoTpLFsNXPk-TTKpjwOfQ,2058
|
349
349
|
meutils/apis/chatglm/__init__.py,sha256=uFuc9qY-ZjGqbsfcdGZkcEkhjATojWpzk2WXTTujc70,271
|
350
|
+
meutils/apis/chatglm/chat.py,sha256=VARWXh3A2PnoScBgvfgAJC2C8OfVy9vWs3Q-qKg6F8Q,4253
|
350
351
|
meutils/apis/chatglm/glm_video.py,sha256=9LA9pyeIcDDHXGhJbZSJfjxrLeNC3SIuCKJwDIXRKR8,14015
|
351
352
|
meutils/apis/chatglm/glm_video_api.py,sha256=fr4hizU-jEjCdXvd8VpYY0XthEJfLQCcyBYwyd9bQq0,3898
|
352
353
|
meutils/apis/chatglm/images.py,sha256=k2EtOpksgAfJb2MD6kLOKKem713kamTIinRmgr8_3n0,1974
|
@@ -366,12 +367,13 @@ meutils/apis/gitee/images/__init__.py,sha256=zvS8e0ogQLqajZTAype1e0TDLJenlfbRQ16
|
|
366
367
|
meutils/apis/gitee/images/kolors.py,sha256=IGpDtMiOOPgbE8ZOXFP9-Hh_XNCDkuvNYjKQbXq8Nik,3338
|
367
368
|
meutils/apis/google/__init__.py,sha256=3pcpV81045y42FCTSdN99YGLCabwocR-f1_gjTSeFhE,243
|
368
369
|
meutils/apis/google/audios.py,sha256=Su1V3TAOn8X94KgOrmpLRPnYETgTyDXqjDf4qQMkzAo,3289
|
369
|
-
meutils/apis/google/chat.py,sha256=
|
370
|
+
meutils/apis/google/chat.py,sha256=vAgmgKDkHcclIIlFcHzKmjanfBEbbx5rllEG7Crn5lQ,15706
|
370
371
|
meutils/apis/google/files.py,sha256=0J1sJT1HFmh-V77_eiSzSBcqcF-i7w08M0rzjSyIXO0,1015
|
371
|
-
meutils/apis/google/gemini_sdk.py,sha256=
|
372
|
+
meutils/apis/google/gemini_sdk.py,sha256=2cBRrNxrqls0qYPXl-ZXovZlinTcIyrXoRPmcQlVL8Q,5619
|
372
373
|
meutils/apis/google/google2openai.py,sha256=JaRw4XfGjy1XAbM4UwLqwLHmldOvM1J1tbMTagi10os,3075
|
373
374
|
meutils/apis/google/images.py,sha256=s9-X8FQqHr5_Of5ZFudR_phmcVzlRyv65O3IsKtlvXo,663
|
374
375
|
meutils/apis/google/search.py,sha256=js3Vx3u9lNrvQxWHF3Y2nP-8qYOA3sKYhbYvO4jHUCA,1590
|
376
|
+
meutils/apis/google/upload.py,sha256=8stvopyIs03ywY6fyGHAtow1TarpMKjsb1V9x9GMgSI,1326
|
375
377
|
meutils/apis/hailuoai/__init__.py,sha256=2g9okuB6pxPh1hDiAE9HZo37baqIO9cX-67RpyfBj1k,272
|
376
378
|
meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc,1483
|
377
379
|
meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
|
@@ -415,7 +417,7 @@ meutils/apis/jimeng/common.py,sha256=Dr6BmCT9uRw89jgIwECe7dKNZpJIGUBJXzRzK-1b-hw
|
|
415
417
|
meutils/apis/jimeng/doubao.py,sha256=5OdnBpmZQOCLIb6lnN8YrL7J7E0XF47q0UF-z6asSuI,4295
|
416
418
|
meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
|
417
419
|
meutils/apis/jimeng/files.py,sha256=E-pPmi6fIP_n6wgfiDbqeWsIfrXVZUe7LpA6Wds1xDI,11047
|
418
|
-
meutils/apis/jimeng/images.py,sha256=
|
420
|
+
meutils/apis/jimeng/images.py,sha256=XSow0hEiGlPZaobVcY9C8rZ2Ap1yTfP37W_YscpSSZk,14071
|
419
421
|
meutils/apis/jimeng/videos.py,sha256=x-PDOYNBN-yTmNvMbyDbwm_E2LXZ6A4hcVzEahV_Hvc,10813
|
420
422
|
meutils/apis/jina/__init__.py,sha256=WnZ4LOv-bzC1brd5FZHOHmgq4c0UaFbnksEj2_LzXxQ,292
|
421
423
|
meutils/apis/jina/common.py,sha256=dwSJboUcZtvBTKRcvAUcgMD933VfYCUBDdtxbw1ioiE,1099
|
@@ -450,7 +452,7 @@ meutils/apis/pixverse/pixverse.py,sha256=dvnyYVUXCEY_cLnmX9lvq9TesvplCMCuJmmP7Sh
|
|
450
452
|
meutils/apis/proxy/__init__.py,sha256=by7_6GT3xeDjAWLLqbw8uvGaZ3RdprEW-zJ2DFLOdwA,271
|
451
453
|
meutils/apis/proxy/demo.py,sha256=-huvtmltbKXa6cS77k61ts-Kjd5ccSAgXzNrotIvIKA,1642
|
452
454
|
meutils/apis/proxy/ips.py,sha256=3McLniROteSBqAtcMH8xKbUBfhVc4ZyGuRwMvgEryKg,5023
|
453
|
-
meutils/apis/proxy/kdlapi.py,sha256=
|
455
|
+
meutils/apis/proxy/kdlapi.py,sha256=Z0aSzn3fjBgrtCU8JOU_-pQL_JmV8TXQhp9VDO4M4E4,1916
|
454
456
|
meutils/apis/remini/__init__.py,sha256=8TbAnbI_bDfH8g0Y9EHXHBum7C0rZt9MzgAAz_MbAeI,271
|
455
457
|
meutils/apis/remini/remini.py,sha256=bJjvtqrCNlAu7No4gYGjoWAM0ch6dCsofYSy2jPZrXg,4239
|
456
458
|
meutils/apis/replicateai/__init__.py,sha256=PK7e7-xhn5aj5WOyGHLzpsHQvpeM5uTOiMylvj40ZmU,272
|
@@ -466,7 +468,7 @@ meutils/apis/search/metaso.py,sha256=hNvtY2jqZrYGXoZwe3JIooFxUgdJGQ2d0p8_Ecfrb44
|
|
466
468
|
meutils/apis/search/metaso_.py,sha256=PqMX3FLYbbAcc9qpqrPZ58LuSF29h0asZO1XMYmXbes,3144
|
467
469
|
meutils/apis/search/n.py,sha256=o7jzNoR5v_nAjgdUvWgebL3nvvo3ECpq2KCj9YhUNr4,4337
|
468
470
|
meutils/apis/search/searxng.py,sha256=RBPeq-AYj5D42gROrZNg0SxIWwWEW0oqrbQ3wEDH9k8,951
|
469
|
-
meutils/apis/search/zhipu_web_search.py,sha256=
|
471
|
+
meutils/apis/search/zhipu_web_search.py,sha256=cHt83mzk5Qx_DyoHpHaAHGtyi_saW6hCFy0iuk6nIYk,3791
|
470
472
|
meutils/apis/siliconflow/__init__.py,sha256=DQ-A6wAWGna49pmyGhcIWgc2zx6TN9DfQmSUdAW7qjk,241
|
471
473
|
meutils/apis/siliconflow/audio.py,sha256=pk1OROATtAURPQ6VkswmR5gJFOFYJJPnjp-boDAf8X0,2017
|
472
474
|
meutils/apis/siliconflow/image_to_image.py,sha256=Clk-2hACzoUP0yTHnxhlV5MA_HsVdcPuhrX41YARWPM,89439
|
@@ -483,7 +485,7 @@ meutils/apis/textcard/__init__.py,sha256=akc6silym0NIl0vX7uF8vhHQnt5RhSx50MFw-2o
|
|
483
485
|
meutils/apis/textcard/demo.py,sha256=-kfVmAjWsbEyUn2a4MljATPtJurrPKKDG3nrZhIhYS0,552
|
484
486
|
meutils/apis/textcard/hanyuxinjie.py,sha256=4-VP7ZfEPPVonqisJO-PkzcJwQFQtNYAA_tz1BE7kqA,2044
|
485
487
|
meutils/apis/textin_apis/__init__.py,sha256=jtxgw3_tTRZCTMbYWP9QMoUo_sgtmWyo9PWC1tHxlKU,297
|
486
|
-
meutils/apis/textin_apis/common.py,sha256=
|
488
|
+
meutils/apis/textin_apis/common.py,sha256=qhF-ifXjpC_oNei4zA-bk4sYZxVez4WPZV8LcQXf_tg,2235
|
487
489
|
meutils/apis/textin_apis/utils.py,sha256=sq-qYbuNWJxUGlYPrrcY3xc1gs5jGp0bdbFaHNv3KPY,1065
|
488
490
|
meutils/apis/textin_apis/watermark_remove.py,sha256=VRMi_GQUfZon4X-ehme_3HfSyNj9Qp3TBuF5pO6Gto8,1966
|
489
491
|
meutils/apis/to_image/__init__.py,sha256=-QJwCKB2KsSHAbNhYwv8DKe-gdZoILnufC7SDFdiwIo,271
|
@@ -507,7 +509,7 @@ meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5w
|
|
507
509
|
meutils/apis/voice_clone/fish.py,sha256=6m8zcS2KEqmalKy2ArnOaNovyxsQp_sw4d_O1kVZR2s,7146
|
508
510
|
meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81oNbTS0mY,307
|
509
511
|
meutils/apis/volcengine_apis/__init__.py,sha256=PnngoI3Qk6n_axdOLgENCFYlKsmohgzYVW1HUg7L8gI,271
|
510
|
-
meutils/apis/volcengine_apis/images.py,sha256=
|
512
|
+
meutils/apis/volcengine_apis/images.py,sha256=w8hwpwKwUw6YBr-ye4Iiu2WxDbHu70RQ4gw0GNj6LoM,5149
|
511
513
|
meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
|
512
514
|
meutils/async_task/celery_config.py,sha256=BX1h3jY34aO6UmUFakdBUwOdsEiOxCGuUtYDUKFtafc,3461
|
513
515
|
meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
|
@@ -556,7 +558,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
|
|
556
558
|
meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
|
557
559
|
meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
|
558
560
|
meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
|
559
|
-
meutils/data/VERSION,sha256=
|
561
|
+
meutils/data/VERSION,sha256=N7F8gUMk4GNQrU8QIz3ZqgKoIc19aDSrezEC-BishjE,19
|
560
562
|
meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
561
563
|
meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
562
564
|
meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
|
@@ -570,7 +572,7 @@ meutils/db/__init__.py,sha256=HR99rqxoFTWXUHDhLVl33tzIn8M86gigHLmEzOKH1Ec,7637
|
|
570
572
|
meutils/db/mongo.py,sha256=B-B_t939rxtnNGt0PxhivjIUwinmHPzLUpXsjUIaTkQ,2337
|
571
573
|
meutils/db/neo4j.py,sha256=eYd3jP3COWlOFBaF20UXphW67-HwlZ1t0Q34Cp-j6o0,2168
|
572
574
|
meutils/db/orm.py,sha256=NEOO6p6D98EARszGXKuc9iTFQburllQS_vlgjp15lls,5094
|
573
|
-
meutils/db/redis_db.py,sha256=
|
575
|
+
meutils/db/redis_db.py,sha256=nQHVTOxE0Apoaj9mjjAYzTTd2QpU6Ry41kPxdJiPb2w,2990
|
574
576
|
meutils/decorators/__ai.py,sha256=QAz005-Wa-sp0YUUoelaR1pMbt6hPSBML5j0My6TbEI,1681
|
575
577
|
meutils/decorators/__init__.py,sha256=hgpHo40pfFWYXEnrW74o8W7SIfCD0GHr3gnujBw1hIQ,3284
|
576
578
|
meutils/decorators/cache.py,sha256=-sqhCuiSYZK1UtsRw7bBog19G65O9N27DVTAp_nlBk4,2972
|
@@ -603,7 +605,7 @@ meutils/init/evn.py,sha256=GPw9Un8YbgYJmjwd-uYWQ8JeVr6pRxwyYbDv3W8fb1s,1588
|
|
603
605
|
meutils/init/oo.py,sha256=jXWaCWWFYVPGgTIas47Z3J7sIq-CD7DyK6fKDBsq8GA,12884
|
604
606
|
meutils/io/__init__.py,sha256=uW43ZfdWu7adRvwvcTzUGtn4CseRmbzEJdlZV-oqHEA,2107
|
605
607
|
meutils/io/_openai_files.py,sha256=UIiu6Zg7iSFIn1xIcpLznFlnfCxAJFGuvuPtxvTNHfI,1005
|
606
|
-
meutils/io/files_utils.py,sha256=
|
608
|
+
meutils/io/files_utils.py,sha256=L8ABFfZcoNX0QyJc-0K_untAv9S3t3SWQnOJ29Nkmuk,8680
|
607
609
|
meutils/io/image.py,sha256=BJmYzx7o66X7C32gOfVmfr5tBRXOi0IYQY7BpGLsGrg,6926
|
608
610
|
meutils/io/minio_utils.py,sha256=i1YuxwDJzLse0smMXuPqnD1wirBBb8psmB_kd1oPoVU,1274
|
609
611
|
meutils/io/openai_files.py,sha256=wi4qp-olva8aF6AfBiUBfb_QlHzHolJJbH4UbHpRrB0,6032
|
@@ -638,7 +640,7 @@ meutils/jwt_utils/__init__.py,sha256=hU1CYBK90Q9QKVrf1s6VFKZwWjHioHa6bO2AuDn7_eo
|
|
638
640
|
meutils/jwt_utils/common.py,sha256=MlWDLtxiF-WeRl3oyK94KIa6BKFIXVeJtaQUnpa9ayo,814
|
639
641
|
meutils/llm/__init__.py,sha256=mYv0QpACLd-wz4htIduPuTU3mX06_Y8ZprxDohtZGBM,244
|
640
642
|
meutils/llm/check_api.py,sha256=Cu60Rvp7zLmmazuLXxpK4z-FCab4NrO4nH5LzfYjjoM,3591
|
641
|
-
meutils/llm/check_utils.py,sha256=
|
643
|
+
meutils/llm/check_utils.py,sha256=xrP7om1vG7kbZ0G0Dtxm8Mm6RGDRwcVUIliVCPrtng4,6223
|
642
644
|
meutils/llm/clients.py,sha256=ksj8Fb5b2Y0dc5rUpzg3aVChPApblsaT5Zx9KWlXA5Q,2412
|
643
645
|
meutils/llm/demo.py,sha256=gyGjTxuNFMOa1X4CXaChkq0lcjbKiRsnSRhkeMvsoQk,3822
|
644
646
|
meutils/llm/mappers.py,sha256=ZQLl3OuD06kVMP8bwIpVgAB1UVzMJWUJiZ3vgk-ZjeI,303
|
@@ -648,7 +650,7 @@ meutils/llm/x.py,sha256=ETvKKDTmDNrik0K2-_a_SEQxyV4X4-fy0JPrAOLNPv4,1732
|
|
648
650
|
meutils/llm/completions/__init__.py,sha256=q5FEYPpo2f_P44Ghdh9fkrmqZLX2Asso8p-nf-ZTqks,244
|
649
651
|
meutils/llm/completions/chat_gemini.py,sha256=0x9HQxuDAHoWJ79JoaEKKWVNy4PRyd-Et-j8V93NqkY,4395
|
650
652
|
meutils/llm/completions/chat_plus.py,sha256=RPYQqx4vc57gevcz0gUS7QPvGm0M12ktAspMKJtoeuk,7727
|
651
|
-
meutils/llm/completions/chat_spark.py,sha256=
|
653
|
+
meutils/llm/completions/chat_spark.py,sha256=WkDnRASED-Cq261MyR4_XM8Lh7iLrFw6EwlRVVeOU1g,9847
|
652
654
|
meutils/llm/completions/chat_videos.py,sha256=P3Yz34dkNlxCxzOuKHJ9pHIA4UXK3Y5RXPzVnQjb9rc,2915
|
653
655
|
meutils/llm/completions/cp.py,sha256=tGf3umHKXDH0KuTfN7BLr8yAvN6MYWLYR5UVaJkJs0c,4172
|
654
656
|
meutils/llm/completions/deep2x.py,sha256=Fo5cC1jXOFFXOZeRGk9IpCZVCQc8vgOizuYFuPaWujA,3746
|
@@ -668,13 +670,14 @@ meutils/llm/completions/agents/__init__.py,sha256=Wklnf7FTHm43hyVwfT8FXX44nqdOTy
|
|
668
670
|
meutils/llm/completions/agents/search.py,sha256=GKsk0NRy6jsbSu8E9mdBWObJzroGE-L7Iuo5W2MK_u0,5057
|
669
671
|
meutils/llm/completions/assistants/__init__.py,sha256=1QWMIG5dA2wH7550ZdNpW00NPU9q8C-eXybjTsm1aSU,271
|
670
672
|
meutils/llm/completions/assistants/ppt.py,sha256=j3Wh6yBOMhjnh1WVF6tfs4WR9h25i8WVh75vVDfNpdk,3006
|
673
|
+
meutils/llm/completions/assistants/zhipu.py,sha256=XlLrh2d-x-74BeBchyeIPtQGgR4K38AMFZdzaZ9U9jY,8314
|
671
674
|
meutils/llm/completions/rag/__init__.py,sha256=VH4g9H0pqMM1Rkjc1xefQb4Uh8f9vlTt6tjdD6G6Wc0,272
|
672
675
|
meutils/llm/completions/rag/fire.py,sha256=0a_POkY9mEy1YwZHXOGnqf9EVyjiJwx3fWhmv_bQ54U,5743
|
673
676
|
meutils/llm/completions/rag/qwen.py,sha256=1dBNLLbQDRsM-7EGaStcWFU8HRa-rp3RxJ9cpxu6TBg,265
|
674
677
|
meutils/llm/completions/rag/rag.py,sha256=mnC4bZUMuNYuPFXMBqXMofj_ms8uP5MMw1leJ5jXA_k,1209
|
675
678
|
meutils/llm/functions/__init__.py,sha256=It6pcNwRBSh3Em45ooi61lc5tFg8eOYv0BvEFuRjSGQ,271
|
676
679
|
meutils/llm/openai_polling/__init__.py,sha256=qmAMITPtrTD-y57RiJXewuOic7iLKBhx8mz5uvcxsy8,270
|
677
|
-
meutils/llm/openai_polling/chat.py,sha256=
|
680
|
+
meutils/llm/openai_polling/chat.py,sha256=oxO6psoAAu2czWMAoT6hkgEEf8Rn3g6Avxx6OkD_O9Y,7508
|
678
681
|
meutils/llm/openai_polling/images.py,sha256=qKMk3vCvamS_48ceC-_y2LPpP5XsD476FHG9MUu8kks,1042
|
679
682
|
meutils/llm/openai_utils/__init__.py,sha256=MWyNhP2K49oaHGEZlInZc3XlwqlStFultP8k7HDPAwk,290
|
680
683
|
meutils/llm/openai_utils/common.py,sha256=GGctOMlg8xT2A5H-8hMow0VfOZHCDdIPjd12597Nohs,9754
|
@@ -690,7 +693,7 @@ meutils/logging/log_utils.py,sha256=Sa5-Y4fWNTKQw2fIb1dbPgOypl6S6m7EOrbciSqEt5A,
|
|
690
693
|
meutils/logging/logger.py,sha256=-J_tWYfAvPhSTshVWIiN-6zTZnjkFuwDfMtxUtuNkuY,6183
|
691
694
|
meutils/notice/__init__.py,sha256=BVbcBx4ks-BH_63gEcjMxL67oX1_aWdaM8r3TDo8Ogg,248
|
692
695
|
meutils/notice/emails.py,sha256=TvC1xv3MpFC2HU0lTQW5SmNuj7UMlgjpsUImMp9jKOw,2403
|
693
|
-
meutils/notice/feishu.py,sha256=
|
696
|
+
meutils/notice/feishu.py,sha256=Qewl3DCv9KXeCGSXAUFEALj6WeDbRYn6lrJPliuT_HU,4398
|
694
697
|
meutils/notice/file_post.py,sha256=KQ8iQUM30vF7T6ZZPahdLps4dLXK2s3nzdFYbty6M5E,953
|
695
698
|
meutils/notice/load_emailfile - 副本.py,sha256=f-Kq3UKZut_P0bmumV1y4PXuPtatjl-5SLUH5LShBUY,7331
|
696
699
|
meutils/notice/wechat.py,sha256=-HU5oSvpZrVnjjU76ky7_j0yg5ivn5mIlJ7JJVtlrnY,4082
|
@@ -795,7 +798,7 @@ meutils/schemas/metaso_types.py,sha256=r_X0Exs_2S3rNS71RneemMpz7EvBIOLBfAMmWMQRn
|
|
795
798
|
meutils/schemas/napkin_types.py,sha256=Kp0MbpRxzMBz4HWW4DrfcgOvHZVEF3N7P5yNeC1XGI4,2664
|
796
799
|
meutils/schemas/ocr_types.py,sha256=fZWYQAKii7HaTlSU9DS0wHyiEoOHuLnhvgoiH4Cn498,1381
|
797
800
|
meutils/schemas/openai_api_protocol.py,sha256=0GhmhUTEr54N_XCVuZI1MSxJldvwMNJjUAAAdWznw58,12716
|
798
|
-
meutils/schemas/openai_types.py,sha256=
|
801
|
+
meutils/schemas/openai_types.py,sha256=umvmG0hn4JGqHXMPJ6GwSNOYYCqb76fJTkfvYs5dCOI,22558
|
799
802
|
meutils/schemas/pixverse_types.py,sha256=3mHg2KxvszV1U8K3GdzsODZz4uocLVRjEeJgYhX0Xmw,2347
|
800
803
|
meutils/schemas/playwright_types.py,sha256=zhZd53m1Wg4zlGtq2JM4z7Aon-u_eF6rzs-_TFYWvkU,1177
|
801
804
|
meutils/schemas/prodia_types.py,sha256=knh_lzAxMfWMoqAPmvyMweay9PmQmsoQ1X6Mj17ohWg,476
|
@@ -818,7 +821,7 @@ meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVI
|
|
818
821
|
meutils/schemas/db/oneapi_types.py,sha256=3t2m0H80saEXmYUZfVFrtEaY117GjZTsSa1GKgkJzqQ,3896
|
819
822
|
meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
|
820
823
|
meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
|
821
|
-
meutils/schemas/oneapi/common.py,sha256=
|
824
|
+
meutils/schemas/oneapi/common.py,sha256=Bf4Cqj8KvHyDCN9hs4XJuVCRj9NcQFjwH7UbzxhDbrk,35808
|
822
825
|
meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
|
823
826
|
meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
|
824
827
|
meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
|
@@ -947,9 +950,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
|
|
947
950
|
meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
|
948
951
|
meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
|
949
952
|
meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
|
950
|
-
MeUtils-2025.4.
|
951
|
-
MeUtils-2025.4.
|
952
|
-
MeUtils-2025.4.
|
953
|
-
MeUtils-2025.4.
|
954
|
-
MeUtils-2025.4.
|
955
|
-
MeUtils-2025.4.
|
953
|
+
MeUtils-2025.4.23.16.0.20.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
954
|
+
MeUtils-2025.4.23.16.0.20.dist-info/METADATA,sha256=qTNSxF_a4IgMBPUlTRN4pKhUWhr0XZkhEpD30Q7ma6I,32833
|
955
|
+
MeUtils-2025.4.23.16.0.20.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
956
|
+
MeUtils-2025.4.23.16.0.20.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
|
957
|
+
MeUtils-2025.4.23.16.0.20.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
|
958
|
+
MeUtils-2025.4.23.16.0.20.dist-info/RECORD,,
|
examples/_openaisdk/dalle3.py
CHANGED
@@ -29,11 +29,15 @@ client = OpenAI(
|
|
29
29
|
base_url=os.getenv("GOOGLE_BASE_URL"),
|
30
30
|
)
|
31
31
|
|
32
|
-
|
32
|
+
model = "gemini-2.5-flash-preview-04-17"
|
33
|
+
# model = "gemini-2.5-pro-exp-03-25"
|
33
34
|
|
35
|
+
# model = "gemini-2.0-flash" # openai.BadRequestError: Error code: 400 - [{'error': {'code': 400, 'message': 'Unable to submit request because thinking_budget is only supported when enable_thinking is true. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini', 'status': 'INVALID_ARGUMENT'}}]
|
34
36
|
|
35
|
-
print(
|
37
|
+
print(client.models.list().model_dump_json(indent=4))
|
36
38
|
|
39
|
+
print([model.id.removeprefix("models/") for model in client.models.list().data if
|
40
|
+
'flash' in model.id or 'gemma' in model.id] | xjoin(','))
|
37
41
|
|
38
42
|
# {
|
39
43
|
# "gemini-2.0-pro-exp": "models/gemini-2.0-pro-exp",
|
@@ -50,47 +54,60 @@ from openai import OpenAI
|
|
50
54
|
|
51
55
|
uri = 'https://generativelanguage.googleapis.com/v1beta/files/88n7hk8tau7g'
|
52
56
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
#
|
63
|
-
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
57
|
+
completion = client.chat.completions.create(
|
58
|
+
model=model,
|
59
|
+
messages=[
|
60
|
+
{
|
61
|
+
"role": "user",
|
62
|
+
"content": [
|
63
|
+
{
|
64
|
+
"type": "text",
|
65
|
+
"text": "9个8如何加减乘除运直得到1000",
|
66
|
+
# "text": "如何比较9.8 9.11哪个大"
|
67
|
+
},
|
68
|
+
# {
|
69
|
+
# "type": "image_url",
|
70
|
+
# "image_url": {
|
71
|
+
# "url": uri,
|
72
|
+
# }
|
73
|
+
# }
|
74
|
+
]
|
75
|
+
},
|
76
|
+
],
|
77
|
+
reasoning_effort="high",
|
78
|
+
# reasoning_effort="low",
|
79
|
+
# reasoning_effort=None,
|
74
80
|
|
75
|
-
tools = [
|
76
|
-
{
|
77
|
-
"type": "function",
|
78
|
-
"function": {
|
79
|
-
"name": "google_search",
|
80
|
-
|
81
|
-
}
|
82
|
-
}
|
83
|
-
]
|
84
|
-
#
|
85
|
-
messages = [{"role": "user", "content": "今天南京天气"}]
|
86
|
-
response = client.chat.completions.create(
|
87
|
-
model="gemini-2.0-flash-thinking-exp",
|
88
|
-
messages=messages,
|
89
|
-
# tools=tools,
|
90
|
-
# tool_choice="auto"
|
91
81
|
)
|
82
|
+
print(completion)
|
92
83
|
|
93
|
-
|
84
|
+
#
|
85
|
+
# tools = [
|
86
|
+
# {
|
87
|
+
# "type": "function",
|
88
|
+
# "function": {
|
89
|
+
# "name": "google_search",
|
90
|
+
#
|
91
|
+
# }
|
92
|
+
# }
|
93
|
+
# ]
|
94
|
+
# #
|
95
|
+
# messages = [{"role": "user", "content": "今天南京天气"}]
|
96
|
+
# response = client.chat.completions.create(
|
97
|
+
# model="gemini-2.0-flash-thinking-exp",
|
98
|
+
# messages=messages,
|
99
|
+
# # tools=tools,
|
100
|
+
# # tool_choice="auto"
|
101
|
+
# )
|
102
|
+
#
|
103
|
+
# "generationConfig": {
|
104
|
+
# "thinkingConfig": {
|
105
|
+
# "includeThoughts": true,
|
106
|
+
# "thinkingBudget": 1024
|
107
|
+
# }
|
108
|
+
# }
|
109
|
+
|
110
|
+
# print(response)
|
94
111
|
|
95
112
|
# gemini-2.0-flash-audio
|
96
113
|
# completion = client.chat.completions.create(
|
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
from meutils.pipe import *
|
12
12
|
from meutils.llm.clients import zhipuai_sdk_client
|
13
|
+
from meutils.schemas.openai_types import chat_completion_chunk
|
13
14
|
|
14
15
|
from zhipuai import ZhipuAI
|
15
16
|
|
@@ -25,9 +26,10 @@ from zhipuai import ZhipuAI
|
|
25
26
|
#
|
26
27
|
# # print(bjson(client.assistant.query_support()))
|
27
28
|
generate = zhipuai_sdk_client.assistant.conversation(
|
29
|
+
assistant_id="65940acff94777010aa6b796",
|
28
30
|
# assistant_id="65a265419d72d299a9230616",
|
29
31
|
# assistant_id="659d051a5f14eb8ce1235b96",
|
30
|
-
assistant_id="65d2f07bb2c10188f885bd89",
|
32
|
+
# assistant_id="65d2f07bb2c10188f885bd89",
|
31
33
|
|
32
34
|
# assistant_id="659e54b1b8006379b4b2abd6",
|
33
35
|
# conversation_id=None, # 多轮:从messages获取
|
@@ -39,8 +41,8 @@ generate = zhipuai_sdk_client.assistant.conversation(
|
|
39
41
|
"content": [{
|
40
42
|
"type": "text",
|
41
43
|
# "text": "北京未来七天气温,做个折线图",
|
42
|
-
|
43
|
-
"text": "周杰伦 【最新动态、相关信息或新闻】",
|
44
|
+
"text": "南京天气",
|
45
|
+
# "text": "周杰伦 【最新动态、相关信息或新闻】",
|
44
46
|
|
45
47
|
# "text": "画条狗"
|
46
48
|
# "text": "周杰伦",
|
@@ -60,9 +62,15 @@ for resp in generate:
|
|
60
62
|
if hasattr(delta, "tool_calls") and delta.tool_calls:
|
61
63
|
# print(delta)
|
62
64
|
|
65
|
+
# print(delta.model_dump_json(indent=4, exclude_none=True))
|
66
|
+
# logger.debug(delta)
|
63
67
|
print(delta.model_dump_json(indent=4, exclude_none=True))
|
68
|
+
elif hasattr(delta, "content"):
|
69
|
+
print(delta.content, end="")
|
64
70
|
|
65
|
-
|
71
|
+
else:
|
72
|
+
logger.debug(delta)
|
73
|
+
# print(resp.model_dump_json(indent=4, exclude_none=True))
|
66
74
|
# for tc in delta.tool_calls:
|
67
75
|
# tc.web_browser
|
68
76
|
|
examples/bserver.py
CHANGED
@@ -1,65 +1,87 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
"mj_fast_describe": 0.04,
|
5
|
-
"mj_fast_high_variation": 0.08,
|
6
|
-
"mj_fast_imagine": 0.08,
|
7
|
-
"mj_fast_inpaint": 0,
|
8
|
-
"mj_fast_low_variation": 0.08,
|
9
|
-
"mj_fast_modal": 0.08,
|
10
|
-
"mj_fast_pan": 0.08,
|
11
|
-
"mj_fast_pic_reader": 0,
|
12
|
-
"mj_fast_prompt_analyzer": 0,
|
13
|
-
"mj_fast_prompt_analyzer_extended": 0,
|
14
|
-
"mj_fast_reroll": 0.08,
|
15
|
-
"mj_fast_shorten": 0.08,
|
16
|
-
"mj_fast_upload": 0.01,
|
17
|
-
"mj_fast_upscale": 0.04,
|
18
|
-
"mj_fast_upscale_creative": 0.08,
|
19
|
-
"mj_fast_upscale_subtle": 0.08,
|
20
|
-
"mj_fast_variation": 0.08,
|
21
|
-
"mj_fast_zoom": 0.08,}
|
22
|
-
|
23
|
-
d2 = {
|
24
|
-
"mj_relax_blend": 0.08 * MJ_RELAX,
|
25
|
-
"mj_relax_custom_oom": 0,
|
26
|
-
"mj_relax_describe": 0.04 * MJ_RELAX,
|
27
|
-
"mj_relax_high_variation": 0.08 * MJ_RELAX,
|
28
|
-
"mj_relax_imagine": 0.08 * MJ_RELAX,
|
29
|
-
"mj_relax_inpaint": 0,
|
30
|
-
"mj_relax_low_variation": 0.08 * MJ_RELAX,
|
31
|
-
"mj_relax_modal": 0.08 * MJ_RELAX,
|
32
|
-
"mj_relax_pan": 0.08 * MJ_RELAX,
|
33
|
-
"mj_relax_pic_reader": 0,
|
34
|
-
"mj_relax_prompt_analyzer": 0,
|
35
|
-
"mj_relax_prompt_analyzer_extended": 0,
|
36
|
-
"mj_relax_reroll": 0.08 * MJ_RELAX,
|
37
|
-
"mj_relax_shorten": 0.08 * MJ_RELAX,
|
38
|
-
"mj_relax_upload": 0.01 * MJ_RELAX,
|
39
|
-
"mj_relax_upscale": 0.04 * 1,
|
40
|
-
"mj_relax_upscale_creative": 0.08 * 1,
|
41
|
-
"mj_relax_upscale_subtle": 0.08 * 1,
|
42
|
-
"mj_relax_variation": 0.08 * 1,
|
43
|
-
"mj_relax_zoom": 0.08 * MJ_RELAX,
|
44
|
-
}
|
45
|
-
|
46
|
-
d = dict(zip(d1, d2))
|
47
|
-
|
48
|
-
|
49
|
-
def fetch_video_result(file_id: str):
|
50
|
-
print("---------------视频生成成功,下载中---------------")
|
51
|
-
url = "https://api.minimax.chat/v1/files/retrieve?file_id="+file_id
|
52
|
-
headers = {
|
53
|
-
'authorization': 'Bearer '+api_key,
|
54
|
-
}
|
55
|
-
|
56
|
-
response = requests.request("GET", url, headers=headers)
|
57
|
-
print(response.text)
|
58
|
-
|
59
|
-
download_url = response.json()['file']['download_url']
|
60
|
-
print("视频下载链接:" + download_url)
|
61
|
-
with open(output_file_name, 'wb') as f:
|
62
|
-
f.write(requests.get(download_url).content)
|
63
|
-
print("已下载在:"+os.getcwd()+'/'+output_file_name)
|
1
|
+
from PIL import Image
|
2
|
+
import os
|
3
|
+
import math
|
64
4
|
|
65
5
|
|
6
|
+
def stitch_images_grid(image_paths, output_path, cols, background_color=(255, 255, 255)):
|
7
|
+
"""
|
8
|
+
使用 Pillow 将图片拼接成网格。
|
9
|
+
假设所有图片大小相似,或以最大图片的尺寸为单元格大小。
|
10
|
+
|
11
|
+
Args:
|
12
|
+
image_paths (list): 包含图片文件路径的列表。
|
13
|
+
output_path (str): 输出拼接后图片的路径。
|
14
|
+
cols (int): 网格的列数。
|
15
|
+
background_color (tuple): 画布背景色 (R, G, B)。
|
16
|
+
"""
|
17
|
+
images = []
|
18
|
+
max_w = 0
|
19
|
+
max_h = 0
|
20
|
+
|
21
|
+
# 加载图片并找到最大尺寸
|
22
|
+
for path in image_paths:
|
23
|
+
try:
|
24
|
+
img = Image.open(path).convert('RGB')
|
25
|
+
images.append(img)
|
26
|
+
max_w = max(max_w, img.width)
|
27
|
+
max_h = max(max_h, img.height)
|
28
|
+
except FileNotFoundError:
|
29
|
+
print(f"警告: 文件未找到 {path}, 跳过此图片。")
|
30
|
+
except Exception as e:
|
31
|
+
print(f"警告: 加载图片 {path} 时出错: {e}, 跳过此图片。")
|
32
|
+
|
33
|
+
if not images:
|
34
|
+
print("错误: 没有可拼接的有效图片。")
|
35
|
+
return
|
36
|
+
|
37
|
+
num_images = len(images)
|
38
|
+
rows = math.ceil(num_images / cols)
|
39
|
+
|
40
|
+
# 计算画布总尺寸
|
41
|
+
grid_width = cols * max_w
|
42
|
+
grid_height = rows * max_h
|
43
|
+
|
44
|
+
# 创建画布
|
45
|
+
grid_image = Image.new('RGB', (grid_width, grid_height), background_color)
|
46
|
+
|
47
|
+
# 拼接图片到网格
|
48
|
+
for index, img in enumerate(images):
|
49
|
+
row = index // cols
|
50
|
+
col = index % cols
|
51
|
+
# 计算粘贴位置 (左上角)
|
52
|
+
paste_x = col * max_w
|
53
|
+
paste_y = row * max_h
|
54
|
+
|
55
|
+
# 可选:如果图片尺寸小于单元格,可以居中
|
56
|
+
offset_x = (max_w - img.width) // 2
|
57
|
+
offset_y = (max_h - img.height) // 2
|
58
|
+
|
59
|
+
grid_image.paste(img, (paste_x + offset_x, paste_y + offset_y))
|
60
|
+
|
61
|
+
# 保存结果
|
62
|
+
try:
|
63
|
+
grid_image.save(output_path)
|
64
|
+
print(f"图片已成功按 {rows}x{cols} 网格拼接并保存至: {output_path}")
|
65
|
+
except Exception as e:
|
66
|
+
print(f"错误: 保存网格图片时出错: {e}")
|
67
|
+
|
68
|
+
|
69
|
+
if __name__ == '__main__':
|
70
|
+
|
71
|
+
# --- 示例用法 ---
|
72
|
+
image_files = ["cover.jpeg", "image2.png", "image3.jpg", "image4.gif"] # 替换路径
|
73
|
+
image_files = ['cover.jpeg', 'img.png']
|
74
|
+
output_file = "xxxxxxxxxxxxxxxxxxxxxxxxxxx.jpg"
|
75
|
+
columns = 2 # 设置网格列数
|
76
|
+
|
77
|
+
# (确保示例图片存在或创建它们)
|
78
|
+
# if not os.path.exists("image4.gif"):
|
79
|
+
# try:
|
80
|
+
# img = Image.new('RGB', (110, 130), color = (50, 150, 50))
|
81
|
+
# img.save("image4.gif")
|
82
|
+
# print("创建了示例图片: image4.gif")
|
83
|
+
# except Exception as e:
|
84
|
+
# print(f"无法创建示例图片 image4.gif: {e}")
|
85
|
+
|
86
|
+
|
87
|
+
stitch_images_grid(image_files, output_file, cols=columns)
|
meutils/apis/baidu/bdaitpzs.py
CHANGED
@@ -20,7 +20,7 @@ from meutils.decorators.contextmanagers import try_catcher
|
|
20
20
|
from meutils.schemas.baidu_types import BDAITPZSRequest
|
21
21
|
from meutils.schemas.task_types import Task, TaskType
|
22
22
|
from meutils.io.image import image_to_base64, crop_polygon
|
23
|
-
from meutils.io.files_utils import to_bytes, to_base64,
|
23
|
+
from meutils.io.files_utils import to_bytes, to_base64, to_url
|
24
24
|
from meutils.apis.proxy.kdlapi import get_one_proxy
|
25
25
|
from fake_useragent import UserAgent
|
26
26
|
|
@@ -130,7 +130,7 @@ async def get_task(
|
|
130
130
|
if response_format == "url":
|
131
131
|
for arr in data.get('picArr', []):
|
132
132
|
if base64_string := arr.pop('src', None):
|
133
|
-
data['url'] = await
|
133
|
+
data['url'] = await to_url(base64_string, filename=f"{task_id}.png")
|
134
134
|
|
135
135
|
return data
|
136
136
|
|
@@ -208,6 +208,7 @@ if __name__ == '__main__':
|
|
208
208
|
# request = BDAITPZSRequest(original_url=url, thumb_url=url)
|
209
209
|
|
210
210
|
url = "https://oss.ffire.cc/files/shuiyin.jpg"
|
211
|
+
url = "https://oss.ffire.cc/files/nsfw.jpg"
|
211
212
|
|
212
213
|
request = BDAITPZSRequest(
|
213
214
|
type="1",
|
@@ -215,7 +216,7 @@ if __name__ == '__main__':
|
|
215
216
|
original_url=url,
|
216
217
|
thumb_url=url
|
217
218
|
)
|
218
|
-
arun(create_task(request,
|
219
|
+
arun(create_task(request, is_async=False, response_format='url'))
|
219
220
|
|
220
221
|
# arun(get_task('cr84hhue1pn8m151of3g', response_format='url'))
|
221
222
|
|