MeUtils 2024.12.19.11.28.48__py3-none-any.whl → 2024.12.23.16.27.40__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MeUtils
3
- Version: 2024.12.19.11.28.48
3
+ Version: 2024.12.23.16.27.40
4
4
  Summary: description
5
5
  Home-page: https://github.com/yuanjie-ai/MeUtils
6
6
  Author: yuanjie
@@ -63,42 +63,42 @@ Requires-Dist: sse-starlette ; extra == 'ai'
63
63
  Requires-Dist: openai ; extra == 'ai'
64
64
  Requires-Dist: langchain ; extra == 'ai'
65
65
  Provides-Extra: all
66
- Requires-Dist: pandas-profiling[notebook] ; extra == 'all'
67
- Requires-Dist: streamlit ; extra == 'all'
68
- Requires-Dist: polars ; extra == 'all'
69
- Requires-Dist: pyarrow ; extra == 'all'
66
+ Requires-Dist: thefuck ; extra == 'all'
70
67
  Requires-Dist: uvicorn ; extra == 'all'
68
+ Requires-Dist: polars ; extra == 'all'
69
+ Requires-Dist: faiss-cpu ; extra == 'all'
70
+ Requires-Dist: thriftpy2 ; extra == 'all'
71
+ Requires-Dist: sqlalchemy ; extra == 'all'
72
+ Requires-Dist: pymupd ; extra == 'all'
73
+ Requires-Dist: dataframe-image ; extra == 'all'
74
+ Requires-Dist: sse-starlette ; extra == 'all'
75
+ Requires-Dist: pandas-profiling[notebook] ; extra == 'all'
76
+ Requires-Dist: jmespath ; extra == 'all'
71
77
  Requires-Dist: openai ; extra == 'all'
72
78
  Requires-Dist: langchain ; extra == 'all'
73
- Requires-Dist: fastapi ; extra == 'all'
74
- Requires-Dist: jmespath ; extra == 'all'
75
- Requires-Dist: pymysql ; extra == 'all'
76
- Requires-Dist: sse-starlette ; extra == 'all'
77
- Requires-Dist: filetype ; extra == 'all'
78
- Requires-Dist: pandas-summary ; extra == 'all'
79
- Requires-Dist: seaborn ; extra == 'all'
80
- Requires-Dist: cachetools ; extra == 'all'
81
- Requires-Dist: redis-py-cluster ; extra == 'all'
82
- Requires-Dist: pymilvus ; extra == 'all'
83
- Requires-Dist: pymongo ; extra == 'all'
84
- Requires-Dist: gunicorn ; extra == 'all'
79
+ Requires-Dist: reportlab ; extra == 'all'
85
80
  Requires-Dist: jieba ; extra == 'all'
86
- Requires-Dist: pymupd ; extra == 'all'
87
- Requires-Dist: simplejson ; extra == 'all'
88
- Requires-Dist: thriftpy2 ; extra == 'all'
81
+ Requires-Dist: schedule ; extra == 'all'
89
82
  Requires-Dist: pretty-errors ; extra == 'all'
90
- Requires-Dist: missingno ; extra == 'all'
83
+ Requires-Dist: jinja2 ; extra == 'all'
91
84
  Requires-Dist: fastapi[all] ; extra == 'all'
92
- Requires-Dist: dataframe-image ; extra == 'all'
93
- Requires-Dist: thefuck ; extra == 'all'
94
85
  Requires-Dist: asyncmy ; extra == 'all'
95
- Requires-Dist: faiss-cpu ; extra == 'all'
86
+ Requires-Dist: pymilvus ; extra == 'all'
87
+ Requires-Dist: pyarrow ; extra == 'all'
88
+ Requires-Dist: redis-py-cluster ; extra == 'all'
89
+ Requires-Dist: streamlit ; extra == 'all'
90
+ Requires-Dist: gunicorn ; extra == 'all'
91
+ Requires-Dist: seaborn ; extra == 'all'
92
+ Requires-Dist: fastapi ; extra == 'all'
96
93
  Requires-Dist: iteration-utilities ; extra == 'all'
97
- Requires-Dist: schedule ; extra == 'all'
98
- Requires-Dist: jinja2 ; extra == 'all'
94
+ Requires-Dist: filetype ; extra == 'all'
95
+ Requires-Dist: pymongo ; extra == 'all'
96
+ Requires-Dist: pymysql ; extra == 'all'
97
+ Requires-Dist: cachetools ; extra == 'all'
98
+ Requires-Dist: simplejson ; extra == 'all'
99
+ Requires-Dist: pandas-summary ; extra == 'all'
100
+ Requires-Dist: missingno ; extra == 'all'
99
101
  Requires-Dist: geopy ; extra == 'all'
100
- Requires-Dist: sqlalchemy ; extra == 'all'
101
- Requires-Dist: reportlab ; extra == 'all'
102
102
  Provides-Extra: ann
103
103
  Requires-Dist: pymilvus ; extra == 'ann'
104
104
  Requires-Dist: faiss-cpu ; extra == 'ann'
@@ -69,7 +69,7 @@ examples/Time-Extractor/TimeUnit.py,sha256=yx-SS9sxSjSUGiu1H8eTbP4vqAHrNyQcddioM
69
69
  examples/Time-Extractor/__init__.py,sha256=hjNi8tWPOBTke6GHlxpsOrufCRdAHmYs2yBquql9X7c,156
70
70
  examples/Time-Extractor/setup.py,sha256=ENYhj1_uJ7z_F3jrz8FR8w5u2SEXrZpl5GXEELUymLk,811
71
71
  examples/Time-Extractor/resource/__init__.py,sha256=0HHkZVghckIg5LkGMziooZ8TUqfSQFA6j62BN9KyFp0,91
72
- examples/_openaisdk/4v.py,sha256=sLswURqeNTIVcSIVYIwBOQ8iya8h8b64jEJHQeTClJY,3338
72
+ examples/_openaisdk/4v.py,sha256=gqHVIdvh8uYkggLw8ng9PStgOIzC665NOp9Dr3j8Kgo,3422
73
73
  examples/_openaisdk/__init__.py,sha256=5TNibGR-ETncXVWoevqYJ0m2yo1GOxRx3hSu2qWAQNo,271
74
74
  examples/_openaisdk/baichuan.py,sha256=xmNFc64T02r9wE0VSOG0B21wJJmlrecKVVCelhs2Dt4,890
75
75
  examples/_openaisdk/bpo.py,sha256=7Jw16TiKFEQvYbt4g-h7QimLBw7xY49w1MthT5OwcTM,5267
@@ -89,13 +89,13 @@ examples/_openaisdk/kimi_qa.py,sha256=dNBIe01vK7p-8cFnbgVXJ5H3xPSW32-cc0rwZx3K_1
89
89
  examples/_openaisdk/minimax.py,sha256=zOshBkL1bHgRlj4z6k2FQRScNTr7ysZkfh2-OaAynkU,2116
90
90
  examples/_openaisdk/open_router.py,sha256=Z4i_FJIc773JnIdYA3Hhuy1Dq5-DIOIrmkWwbp82hJE,1460
91
91
  examples/_openaisdk/openai_audio.py,sha256=ZyYslH9RfdJBpNUpjKn_5x0d94_H291Qt31u_6weISc,484
92
- examples/_openaisdk/openai_baichuan.py,sha256=SO8TrwO1aKl6EtUGa9ul-_Sc2udmCJDmjG_KrMBvkMw,1410
92
+ examples/_openaisdk/openai_baichuan.py,sha256=4_Gz8FeRrW5Zwnh-KFmaLOXr6sn3AxU47Qd2j8VDiQU,1527
93
93
  examples/_openaisdk/openai_cache.py,sha256=89GbJ1QlqQbVxlUeuFgEbwDYHOkum7BK0zB-CqmDAZU,726
94
94
  examples/_openaisdk/openai_chatfire.py,sha256=InT65qjrWflYnXW4SaZJ4lnUENta4ftcmqxJso-SnyI,17110
95
95
  examples/_openaisdk/openai_chatfire_all.py,sha256=DaiI1NfDeK655QvXyczkgXK9Awxp7NBe71LHA7trxGE,4831
96
96
  examples/_openaisdk/openai_deepseek.py,sha256=-1WyTX5EfB8bdVhZ-y2yZQ04fVzujp4OPmOQR6i3QxI,660
97
97
  examples/_openaisdk/openai_doubao.py,sha256=dp0SLvDBYpIJPNs_vnV2GBIEFa9FglNtYvfGKtJ9Bqk,1053
98
- examples/_openaisdk/openai_embeddings.py,sha256=jQLDB8IkmYiwhMi6OznoxXsIs-aYxQOfBZmj78NwKyc,952
98
+ examples/_openaisdk/openai_embeddings.py,sha256=cBF0bK_saOadjietR1uZ3TrlhO30H4CuYdEEC1bwV2Q,866
99
99
  examples/_openaisdk/openai_files.py,sha256=gfUbKGZg5P7c3kSMfwalIThi_SEs8O-JTqx49bYFtyM,1505
100
100
  examples/_openaisdk/openai_god.py,sha256=O8fbhyxiIlVR7pTvBTXgQ2QTwfcZ2MkEIyDe_jp797A,1056
101
101
  examples/_openaisdk/openai_groq.py,sha256=_5Ue1yEx0Gp6theFioB_D8kepR0UlqMU96PVGH-LkVY,7363
@@ -308,6 +308,7 @@ meutils/apis/niutrans.py,sha256=weWjn-tUTEaAUe5RGbzcjQqPkJxGDrPwMB6CnaiZSsg,1682
308
308
  meutils/apis/search_music.py,sha256=HBLtdterztrccnLAPZrWBlrYSx4WCRflCqz-V30fOA8,972
309
309
  meutils/apis/textin.py,sha256=vkl3VI3ox-m-0UA-DBTOCZURAlD9lA7nA-057gJLMoc,4880
310
310
  meutils/apis/ts.py,sha256=Q13EOS9Q-Y2-KwOG_cFMVmGj9RUmDtxk5A3E27dxbN0,1511
311
+ meutils/apis/utils.py,sha256=60kNe50UthghRm2ReJtL1ELS5iZ5-bqWjNwFHFN7B0M,1261
311
312
  meutils/apis/web_search.py,sha256=6gS3leIB2iyeLtqhB0IbpL_mKzDgArRTqnR7odTWT3E,1035
312
313
  meutils/apis/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
313
314
  meutils/apis/audio/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNHA,241
@@ -327,7 +328,7 @@ meutils/apis/hailuoai/demo.py,sha256=WTnDFL2HgVpAjcn5BljLrbf2y2aATkvvNy75zoEIQkc
327
328
  meutils/apis/hailuoai/hasha_new.py,sha256=1sD3fxmxYrEufmPaJZGAkYJoHKO85hfLXemnY-xYIO8,9101
328
329
  meutils/apis/hailuoai/music.py,sha256=S_oi-ZDbocTfbRgREdXtGx50xzUc1PCZGuxmr917E7M,265
329
330
  meutils/apis/hailuoai/upload.py,sha256=22S6W6hGQhUquVKqh7QCkXb6KHDl3iMKKi6Z0AJdFEI,6501
330
- meutils/apis/hailuoai/videos.py,sha256=YpLMLxBwO93Y2Hqxev0m49g4urahkvQ8YfG92u1vsMM,19334
331
+ meutils/apis/hailuoai/videos.py,sha256=rahr8dBCxV9ueY4n1OhEHU60MlpIGg_Omrsv4JBmj24,19334
331
332
  meutils/apis/hailuoai/yy.py,sha256=gJvr7VDa0YPEUkZuETdmCFWWheylDPoMUg8gbS_SVw8,8937
332
333
  meutils/apis/hf/__init__.py,sha256=ZZoRl8yNYekoMhE__67XXBKNSYJaLgjtaa0netjJKUU,271
333
334
  meutils/apis/hf/got_ocr.py,sha256=pZURFpryDh_Ak6PNiARztOzYgkjVrfScJ5-0XzMBrzI,1776
@@ -361,11 +362,11 @@ meutils/apis/jiema/24mail.py,sha256=GUszRtoDe3T9q-X4embwT5YhcjgQ3XnkTJMKX93sCF4,
361
362
  meutils/apis/jiema/__init__.py,sha256=YBybggoDRYCNYcwJOypxR7MzfTjIhqO7BkGlTt7NDo4,271
362
363
  meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,3675
363
364
  meutils/apis/jimeng/__init__.py,sha256=a8CE_cOl9jqal0hycwaLm4Mnga8jmZlz9nCze_9bBqA,272
364
- meutils/apis/jimeng/common.py,sha256=-3YQGGoWsFyX8XyBfdt1AIF2E7_fGbydi85soKSegbo,8672
365
- meutils/apis/jimeng/files.py,sha256=0x7lWZha0D6zfGfU3ZOxDdpcbfdax8p7szvRZ6B-Vtk,5200
365
+ meutils/apis/jimeng/common.py,sha256=CgBSShvSCYMy9zH3r449Plqu2hTFLzAUyz-ytc1esW4,8672
366
+ meutils/apis/jimeng/doubao.py,sha256=vSEaTQHQdyhpHwCoq6CIikDZkUC9ncyTgKxGUC8cMCI,4345
367
+ meutils/apis/jimeng/doubao_utils.py,sha256=XCHnvwfCOtJmPQuzDOCfKDMP_Pcqh-Y4w2h5f7Y2gzM,5999
368
+ meutils/apis/jimeng/files.py,sha256=aFKg5iesJNVbXclaMR0yDpnKzjqW1yZxkyp9qrGTybo,5365
366
369
  meutils/apis/jimeng/images.py,sha256=6oSsXOTDaZ6qkZpWM2SjzE3mX4_Z_RQEJS4bEaDOWsU,3480
367
- meutils/apis/jimeng/sig.py,sha256=jisL1jCqWEd3PugP4KMZWVQ32OiwwEPFs1jRvxgZmfU,4068
368
- meutils/apis/jimeng/utils.py,sha256=Ybi2DF1RSXxpxeH387iQGahJhXv5MhYUDtCpPuznP8w,6134
369
370
  meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
370
371
  meutils/apis/kling/api.py,sha256=AuVQ9URmrbTlz7dEv_kIyhA9fMTZPL9rF3Td6KxTIMA,2183
371
372
  meutils/apis/kling/images.py,sha256=FcCkvA4x1Po3SuugfQa8klT0Lrj7fq4N8kbzx6luUxI,5095
@@ -436,8 +437,10 @@ meutils/apis/tripo3d/images.py,sha256=vb0Y3d6Zcp_NUrwC__cchoqulnDXKHzfOKQkZ3jrow
436
437
  meutils/apis/uptime_kuma/__init__.py,sha256=w_fYxFgQDOXOfCPe0JMsgSl6zrGuYx9w4thySfAsbAE,272
437
438
  meutils/apis/uptime_kuma/common.py,sha256=ZJFSEeoxD_Eb5eFL9K2xxajVJgTnTwgm7rm4fc0nv1I,1597
438
439
  meutils/apis/uptime_kuma/国产分组.py,sha256=OIiUUFfjWEEJHg5fr8Vf5xSBWkbXboQ4f3jUiaTtQSI,1681
440
+ meutils/apis/videos/__init__.py,sha256=OCykr_XRIOH18Xh5hfBq5yMxbk8e9Myk4KuAtrtgAWw,272
441
+ meutils/apis/videos/sora.py,sha256=G3wGlvTYl4YfG20L2HXPhmhZ4HwrlIFSU-KYM-TdALg,295
439
442
  meutils/apis/vidu/__init__.py,sha256=8nQN-RiZGJlZaZGVFbtHgK57_Ml5g_vFCiOImWwBm0I,242
440
- meutils/apis/vidu/vidu_video.py,sha256=r4juWcbtKu5DxQ0bvUvBg3T8EHTzN69WWHeUCUJQNUQ,18060
443
+ meutils/apis/vidu/vidu_video.py,sha256=SBzy4E45rk6H89aEEVOoLbrCLbP5TQyXBablHao-DfY,17420
441
444
  meutils/apis/vidu/x.py,sha256=UD1QlAQTtLgFiDfWYVxM-1ppfrX_LaVYASk2yNviMuk,322
442
445
  meutils/apis/voice_clone/__init__.py,sha256=y7Rpn90LocHhA0ywrDP_fT4QAK7sr4JsIX5wLJgkNHA,241
443
446
  meutils/apis/voice_clone/fish.py,sha256=6m8zcS2KEqmalKy2ArnOaNovyxsQp_sw4d_O1kVZR2s,7146
@@ -487,14 +490,14 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
487
490
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
488
491
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
489
492
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
490
- meutils/data/VERSION,sha256=GBFDYeG287ciHHBkKSLq7FlowRXU-Koufs2n6MYKg0Q,19
493
+ meutils/data/VERSION,sha256=wRgOBfJ2CfGwnMSWHzEs3y2wfEP95MPkgQwGPjRxMy0,19
491
494
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
492
495
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
493
496
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
494
497
  meutils/data/coordinate.py,sha256=VbFtcdho0XG4j-rZD0DgqcIf2_LR2LlbLtfhLXbxiDY,600
495
498
  meutils/data/cowboy-hat-face.webp,sha256=AHi2t-WclDVKWgGEe-oZzI4xKACNlgGWUgd622y0K-E,24814
496
499
  meutils/data/oneapi/FOOTER.md,sha256=UHv39ey2ICocxPoCj-UI_PWyyWxZYLS8zG1inqtWNQ4,448
497
- meutils/data/oneapi/NOTICE.md,sha256=hqdEgCLSePQ5Jni0hG4NlA7T9v7p38LspKnlofCDp-k,3963
500
+ meutils/data/oneapi/NOTICE.md,sha256=kq6qJfbbJkTc00BjgvPGvNHFjO9EDxYuHzDly9annV8,4762
498
501
  meutils/data/oneapi/__init__.py,sha256=cm2Kq2RDXPfdVMWcoBB77bu00zJpTDd21Rgc6bTlhws,398
499
502
  meutils/db/__init__.py,sha256=HR99rqxoFTWXUHDhLVl33tzIn8M86gigHLmEzOKH1Ec,7637
500
503
  meutils/db/mongo.py,sha256=B-B_t939rxtnNGt0PxhivjIUwinmHPzLUpXsjUIaTkQ,2337
@@ -683,6 +686,7 @@ meutils/schemas/pixverse_types.py,sha256=3mHg2KxvszV1U8K3GdzsODZz4uocLVRjEeJgYhX
683
686
  meutils/schemas/playwright_types.py,sha256=zhZd53m1Wg4zlGtq2JM4z7Aon-u_eF6rzs-_TFYWvkU,1177
684
687
  meutils/schemas/prodia_types.py,sha256=knh_lzAxMfWMoqAPmvyMweay9PmQmsoQ1X6Mj17ohWg,476
685
688
  meutils/schemas/replicate_types.py,sha256=Todfo-y2Gq1MW8IyEmzz_ZlTxuQ3PvIfiF0KkrmJaYw,3160
689
+ meutils/schemas/request_types.py,sha256=GP2radX2Ixjbu8NDKihUsrSOft6WgcFYd7LXxM4mPY0,407
686
690
  meutils/schemas/runwayml_types.py,sha256=q6g00kg1PYCDjpw-notgbcUGwRAlIa8kAmU52ZuXyLQ,6128
687
691
  meutils/schemas/siliconflow_types.py,sha256=a8SOf-bh5ZBddqsCqJNPFfw9olxk-bD_ySqTr8d0aZw,8597
688
692
  meutils/schemas/step_types.py,sha256=nGTPXZ7RwOF2RTsPBQguLLcIaBxHs4bsZkYa_LalcJ0,648
@@ -692,14 +696,14 @@ meutils/schemas/translator_types.py,sha256=xufNQeyim7RhkzAK_J5_JchZfqaUBDXFwMtrP
692
696
  meutils/schemas/tripo3d_types.py,sha256=mQF65HwHYmczRgAIuXK5hGxWDWNYDq-Xu9pja7Dwy4o,1452
693
697
  meutils/schemas/tryblend_types.py,sha256=glZ0diRJvZmfQotcCWYBA832inihy8TvVWxWZ64CzWA,27793
694
698
  meutils/schemas/video_types.py,sha256=r4_gJPzmnX6ymCMd0RIqL8Hlx8BHpcwRh77-GA59Iu4,512
695
- meutils/schemas/vidu_types.py,sha256=Wa947mT5pL9yR4utM-A9oQvNvgaJorr9YRccryHnHH4,4607
699
+ meutils/schemas/vidu_types.py,sha256=F1ysI-LvO7mlv0uGkqQ_fyUD5g6qs027SV50g-bWdyo,5423
696
700
  meutils/schemas/wechat_types.py,sha256=XtIJpMNBzkqBcU68Qno8bnUfHzDOXwFNCIL-6VYQKOA,9260
697
701
  meutils/schemas/yuanbao_types.py,sha256=ZmB-7_eAuTU3QDonNgy0vcVP4YQNwA5yJ8G4mvfOmUE,11966
698
702
  meutils/schemas/db/__init__.py,sha256=m1maURVoM6dIW0yt6ELZrZTzULtkHybVOSXtHNJRVIU,272
699
703
  meutils/schemas/db/oneapi_types.py,sha256=Jtt1hXRS5C3DHf_wrkjklVcdPllsAFrzvLq9JLuTdtc,2858
700
704
  meutils/schemas/oneapi/__init__.py,sha256=uevbi3QAvFzN9WPbx9bYKTDyKt7P2ueZO6W0nSiD0sk,289
701
705
  meutils/schemas/oneapi/_types.py,sha256=ClvAaNy3SahEN8lL8KEErHTD6HANelXUeKc_3iLfosQ,1488
702
- meutils/schemas/oneapi/common.py,sha256=20gd8AMSJ9QTmMuQk2XkOpwpGKJJfIiFea9FAbFOfdo,23256
706
+ meutils/schemas/oneapi/common.py,sha256=AQxO-aL-Ov1EH84EOEzRSgjF5wxMa0K_KK-NkbMre4o,23238
703
707
  meutils/schemas/oneapi/icons.py,sha256=T7W5gInBJoHe62wzMimbG_UI-wn3_-rmQ1O4O2z-CQY,1089
704
708
  meutils/schemas/oneapi/model_group_info.py,sha256=rGtflYJuFIjk5MsVEvK9JUR4IciX8jfErqeLqf8DIlQ,1586
705
709
  meutils/schemas/oneapi/model_info.py,sha256=_uwKEPIIqm7ZYfhmpxtXB2QNsS83SpJY-OaBzvogC9w,772
@@ -827,9 +831,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
827
831
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
828
832
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
829
833
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
830
- MeUtils-2024.12.19.11.28.48.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
831
- MeUtils-2024.12.19.11.28.48.dist-info/METADATA,sha256=xaShFgO7bxJ9DSJZ3OZXrar3iCqTZqDauhocgL9w3A4,6203
832
- MeUtils-2024.12.19.11.28.48.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
833
- MeUtils-2024.12.19.11.28.48.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
834
- MeUtils-2024.12.19.11.28.48.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
835
- MeUtils-2024.12.19.11.28.48.dist-info/RECORD,,
834
+ MeUtils-2024.12.23.16.27.40.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
835
+ MeUtils-2024.12.23.16.27.40.dist-info/METADATA,sha256=qDWO47sa_Zltg-npuesjcKQHKp1H4RNEDACA0M2_cDw,6203
836
+ MeUtils-2024.12.23.16.27.40.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
837
+ MeUtils-2024.12.23.16.27.40.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
838
+ MeUtils-2024.12.23.16.27.40.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
839
+ MeUtils-2024.12.23.16.27.40.dist-info/RECORD,,
examples/_openaisdk/4v.py CHANGED
@@ -16,7 +16,9 @@ from openai.types.chat.completion_create_params import ResponseFormat
16
16
  from chatllm.schemas.openai_api_protocol import ChatCompletionRequest
17
17
 
18
18
  base_url = os.getenv('OPENAI_BASE_URL')
19
- openai = OpenAI(api_key=os.getenv("OPENAI_API_KEY_OPENAI"))
19
+ openai = OpenAI(
20
+ # api_key=os.getenv("OPENAI_API_KEY_OPENAI")
21
+ )
20
22
  # openai = OpenAI(api_key=os.getenv("SILICONFLOW_API_KEY"), base_url=os.getenv("SILICONFLOW_BASE_URL"))
21
23
  # openai = OpenAI(
22
24
  # # api_key=os.getenv("TOGETHER_API_KEY"),
@@ -72,7 +74,9 @@ messages = [
72
74
  response = openai.chat.completions.create(
73
75
  # model='gpt-4-vision-preview',
74
76
  # model='gpt-4o',
75
- model='gpt-4o-2024-08-06',
77
+ # model='gpt-4o-2024-08-06',
78
+ # model="deepseek-ai/deepseek-vl2",
79
+ model="doubao-vision-pro-32k",
76
80
 
77
81
  # model="gemini-pro-vision",
78
82
  # model='gemini-1.5-flash-latest',
@@ -101,5 +105,4 @@ response = openai.chat.completions.create(
101
105
 
102
106
  print(response.dict())
103
107
 
104
-
105
108
  # response = client.chat.completions.create(input='你好', model='tts-1', voice='alloy')
@@ -15,8 +15,8 @@ from openai import OpenAI, APIStatusError
15
15
  from meutils.schemas.oneapi.models import BAICHUAN
16
16
 
17
17
  client = OpenAI(
18
- # api_key=os.getenv("BAICHUAN_API_KEY"),
19
- # base_url=os.getenv("BAICHUAN_BASE_URL")
18
+ api_key=os.getenv("BAICHUAN_API_KEY"),
19
+ base_url=os.getenv("BAICHUAN_BASE_URL")
20
20
  )
21
21
 
22
22
  # tool:search
@@ -27,7 +27,10 @@ for model in BAICHUAN:
27
27
  model=model,
28
28
  messages=[
29
29
  # {"role": "system", "content": "你是个画图工具"},
30
- {"role": "user", "content": "你是谁"}
30
+ # {"role": "user", "content": "你是谁"},
31
+
32
+ {"role": "user", "content": "总结下 https://top.baidu.com/board?platform=pc&sa=pcindex_a_right"}
33
+
31
34
  ],
32
35
  # top_p=0.7,
33
36
  stream=True,
@@ -13,9 +13,8 @@ from meutils.pipe import *
13
13
  from openai import OpenAI
14
14
 
15
15
  client = OpenAI(
16
- api_key="sk-iPNbgHSRkQ9VUb6iAcCa7a4539D74255A6462d29619d6519",
17
- # api_key='sk-Gqbp2zoc71gWBVxvBd23D89f469e4e78A823357e2e625455',
18
16
 
17
+ api_key=os.getenv("OPENAI_API_KEY_OPENAI"),
19
18
  # api_key=os.getenv("SILICONFLOW_API_KEY"),
20
19
  # # api_key="sk-gcxjtocodgggxwnhqqsaqznpkpxndktwlgmgkmzljyajjsfp",
21
20
  # base_url="https://api.siliconflow.cn/v1",
@@ -35,5 +34,3 @@ with timer("bs1"):
35
34
  input=["查" * 1000] * 1,
36
35
  model=model
37
36
  )
38
-
39
-
@@ -114,7 +114,7 @@ async def upload(file: bytes, token: Optional[str] = None, vip: Optional[bool] =
114
114
  # 'serviceTime': 1730083971}}
115
115
 
116
116
 
117
- @alru_cache(ttl=7 * 24 * 60 * 60)
117
+ @alru_cache(ttl=1 * 24 * 60 * 60)
118
118
  @retrying()
119
119
  async def get_access_token(token: Optional[str] = None, vip: Optional[bool] = True):
120
120
  global BASE_URL, FEISHU_URL
@@ -244,8 +244,8 @@ async def create_draft_content(request: ImageRequest, token: str):
244
244
  if __name__ == '__main__':
245
245
  token = "693701c43e477b7c405cc7e2fef0ddbd"
246
246
  token = "eb4d120829cfd3ee957943f63d6152ed"
247
- # arun(get_credit(token))
248
- arun(check_token(token))
247
+ arun(get_credit(token))
248
+ # arun(check_token(token))
249
249
 
250
250
  # arun(get_upload_token(token))
251
251
  #
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : images
5
+ # @Time : 2024/12/16 17:46
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from openai import AsyncClient
12
+ from meutils.pipe import *
13
+ from meutils.apis.jimeng.doubao_utils import generate_cookie
14
+
15
+ from meutils.schemas.image_types import ImageRequest
16
+ from meutils.schemas.task_types import TaskResponse
17
+ from meutils.schemas.jimeng_types import BASE_URL, MODELS_MAP, FEISHU_URL
18
+ from meutils.apis.jimeng.common import create_draft_content, get_headers, check_token
19
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
20
+
21
+
22
+ async def create():
23
+ headers = {
24
+ 'agw-js-conv': 'str',
25
+ 'Cookie': 's_v_web_id=verify_m4t9wrdc_qgbhUw0z_07iP_4GFV_8HA7_6jr0e9lLCqQO; passport_csrf_token=8a8aa82fa109ecb3cb25e7afa10de214; passport_csrf_token_default=8a8aa82fa109ecb3cb25e7afa10de214; oauth_token=e45378cb-5afd-4495-88f5-58440e321b48; n_mh=lG4jjJNpPRqpnflIMXQoPMflNZdP31M8fFqgdR9Id5g; uid_tt=1a11a8af13cf1c878482fa862287107c; uid_tt_ss=1a11a8af13cf1c878482fa862287107c; sid_tt=de2215a7bb8e442774cf388f03fac84c; sessionid=de2215a7bb8e442774cf388f03fac84c; sessionid_ss=de2215a7bb8e442774cf388f03fac84c; is_staff_user=false; store-region=cn-js; store-region-src=uid; odin_tt=774fcc6d25d5259fd2af19858e0518c64943eb788718658b403ad8eb13ebbc6ebcb4c42620e87a48b2efb45fe78dc163b82399750898bb201c89f324b9e25b94; passport_auth_status=042935fbff60617ac0735d3ba4cfb559%2C7c535e1ccd98b367728b6560feb66a2e; passport_auth_status_ss=042935fbff60617ac0735d3ba4cfb559%2C7c535e1ccd98b367728b6560feb66a2e; sid_guard=de2215a7bb8e442774cf388f03fac84c%7C1734489199%7C5184000%7CSun%2C+16-Feb-2025+02%3A33%3A19+GMT; sid_ucp_v1=1.0.0-KGQyN2NlYjIxNTA1NTc3ZjI3NWQ2MjZkY2FhNGM3MGM0NzdkNGVjZDMKHwjAreC708zWBBDv6Ii7BhjCsR4gDDDn782qBjgIQCYaAmxxIiBkZTIyMTVhN2JiOGU0NDI3NzRjZjM4OGYwM2ZhYzg0Yw; ssid_ucp_v1=1.0.0-KGQyN2NlYjIxNTA1NTc3ZjI3NWQ2MjZkY2FhNGM3MGM0NzdkNGVjZDMKHwjAreC708zWBBDv6Ii7BhjCsR4gDDDn782qBjgIQCYaAmxxIiBkZTIyMTVhN2JiOGU0NDI3NzRjZjM4OGYwM2ZhYzg0Yw; ttwid=1%7C4rAQ216JOophOdIJRX4cHa6E8FSBjbjqHCKmFCNrQuc%7C1734510550%7C6217dce55189d102c393a4de7022e9ee2e2fa75f211108551b349a0a04532921; passport_fe_beating_status=true; tt_scid=b.csKGNI6QALEo8gG9vJu3nCfptGnLkTxVXPX.wNPQ0q9PaXuKzXfuFQC0i2U7gVa974; gd_random_1831913=eyJtYXRjaCI6ZmFsc2UsInBlcmNlbnQiOjAuMjIzMzcxMDAwNzk1MzUxNzd9.NuOx3z2e4BUOJrwTMG9F3lxrnhmz9jNR6BrhQYU4BhI; gd_random_1525008=eyJtYXRjaCI6ZmFsc2UsInBlcmNlbnQiOjAuMjIzMzcxMDAwNzk1MzUxNzd9.NuOx3z2e4BUOJrwTMG9F3lxrnhmz9jNR6BrhQYU4BhI; gd_random_1831904=eyJtYXRjaCI6ZmFsc2UsInBlcmNlbnQiOjAuMjIzMzcxMDAwNzk1MzUxNzd9.NuOx3z2e4BUOJrwTMG9F3lxrnhmz9jNR6BrhQYU4BhI; msToken=enism5q1i_XLtL8VKKjkjidcvGhyW0U3EGJBI19P3fyqk8NsW4fXW4g8s4TnlgRaF-aWS0kHrmNnENw5L4mFRyyz6A5yZbpR3nCRYJrvBi3-GrtptyOBhznILSv4OO0',
26
+ 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
27
+ 'content-type': 'application/json'
28
+ }
29
+ payload = {
30
+ "messages": [
31
+ {
32
+ "content": "{\"text\":\"颜色反转\"}",
33
+ "content_type": 2009,
34
+ "attachments": [
35
+ {
36
+ "type": "image",
37
+ "key": "tos-cn-i-a9rns2rl98/b87240eb828f43f8a87952e8246f2143.png",
38
+ "extra": {
39
+ "refer_types": "style"
40
+ },
41
+ "identifier": "2c4b5ab0-bd1a-11ef-b0b0-d38662f7353b"
42
+ }
43
+ ]
44
+ }
45
+ ],
46
+ "completion_option": {
47
+ "is_regen": False,
48
+ "with_suggest": False,
49
+ "need_create_conversation": False,
50
+ "launch_stage": 1,
51
+ "is_replace": False,
52
+ "is_delete": False,
53
+ "message_from": 0,
54
+ "event_id": "0"
55
+ },
56
+ "section_id": "533682637787650",
57
+ "conversation_id": "533682637787394",
58
+ "local_message_id": "71ee47b0-bd1c-11ef-b0b0-d38662f7353b"
59
+ }
60
+
61
+ client = AsyncClient(base_url="https://www.doubao.com/samantha", default_headers=headers, api_key='xx')
62
+ response = await client.post("/chat/completion", body=payload, cast_to=object, stream=True)
63
+ for i in response:
64
+ print(i)
65
+ # return response
66
+
67
+ if __name__ == '__main__':
68
+ arun(create())
@@ -7,7 +7,6 @@
7
7
  # @WeChat : meutils
8
8
  # @Software : PyCharm
9
9
  # @Description :
10
- import httpx
11
10
 
12
11
  from meutils.pipe import *
13
12
  import random
@@ -16,8 +15,6 @@ import time
16
15
  import uuid
17
16
  import secrets
18
17
  import string
19
- import hmac
20
- import hashlib
21
18
 
22
19
  # 常量定义
23
20
  MODEL_NAME = "doubao"
@@ -91,6 +88,28 @@ def generate_fake_a_bogus() -> str:
91
88
  return f"mf-{generate_random_string(34)}-{generate_random_string(6)}"
92
89
 
93
90
 
91
+ def generate_params():
92
+ params = {
93
+ "aid": "497858",
94
+ "device_id": int(DEVICE_ID),
95
+ "device_platform": "web",
96
+ "language": "zh",
97
+ "pkg_type": "release_version",
98
+ "real_aid": "497858",
99
+ "region": "CN",
100
+ "samantha_web": "1",
101
+ "sys_region": "CN",
102
+ "tea_uuid": int(WEB_ID),
103
+ "use-olympus-account": "1",
104
+ "version_code": "20800",
105
+ "web_id": int(WEB_ID),
106
+ "msToken": generate_fake_ms_token(),
107
+ "a_bogus": generate_fake_a_bogus()
108
+ }
109
+
110
+ return params
111
+
112
+
94
113
  def generate_cookie(refresh_token: str, ms_token: Optional[str] = None) -> str:
95
114
  """
96
115
  生成cookie
@@ -133,45 +152,24 @@ async def get_upload_token(): # 3600过期
133
152
  url = "https://www.doubao.com/alice/upload/auth_token"
134
153
 
135
154
  headers = {
136
- 'priority': 'u=1, i',
137
155
  'Cookie': cookie,
138
- 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
156
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
139
157
  }
140
158
  payload = {
141
159
  "scene": "bot_chat",
142
160
  "data_type": "image"
143
161
  }
144
162
 
145
- async with httpx.AsyncClient() as client:
163
+ async with httpx.AsyncClient(timeout=60) as client:
146
164
  response = await client.post(url, headers=headers, json=payload)
147
165
  response.raise_for_status()
148
166
 
149
167
  return response.json()
150
168
 
151
169
 
152
- def hmac_hash256(key, msg):
153
- if type(key) == str:
154
- return hmac.new(key.encode('utf-8'), msg.encode('utf-8'), hashlib.sha256)
155
- elif type(key) == hmac.HMAC:
156
- return hmac.new(key.digest(), msg.encode('utf-8'), hashlib.sha256)
157
-
158
-
159
- def get_signing_key(secret_access_key, r="cn-north-1", n="imagex"):
160
- dt = str(datetime.datetime.now())[:10].replace('-', '')
161
- o = hmac_hash256("AWS4" + secret_access_key, dt)
162
- i = hmac_hash256(o, str(r))
163
- s = hmac_hash256(i, str(n))
164
- return hmac_hash256(s, "aws4_request")
165
-
166
- def signature(secret_access_key):
167
- r = get_signing_key(secret_access_key)
168
- return hmac_hash256(r, self.stringToSign()).hexdigest()
169
-
170
- # ccd4fef2cca1a114e776badad7f4b6e73f305a4dbb09e68f336759ddb6ac0025
171
-
172
170
  if __name__ == '__main__':
173
171
  # generate_cookie("")
174
172
 
175
173
  # arun(get_upload_token())
176
-
177
- print(get_signing_key('xW9YbDhTlWsXdaN7O2g1lfcyePxf5kJyg/r2mwSZG/iuSmbvVgToO6LVCLmUjVJ3'))
174
+ print(generate_params())
175
+ # print(get_signing_key('xW9YbDhTlWsXdaN7O2g1lfcyePxf5kJyg/r2mwSZG/iuSmbvVgToO6LVCLmUjVJ3'))
@@ -98,8 +98,10 @@ class JJRequest:
98
98
  def upload(image: bytes, upload_token: dict): # oss 跨账号不知道是否可以使用
99
99
  # e = auth = upload_token['data']['auth'] # 豆包
100
100
  data = upload_token['data']
101
+ service_id = data.get('service_id', '3jr8j4ixpe') # 即梦 3jr8j4ixpe 豆包 a9rns2rl98
101
102
 
102
- service_id = data.get('service_id', '3jr8j4ixpe') # 即梦 3jr8j4ixpe
103
+ if 'auth' in data:
104
+ data = data['auth']
103
105
 
104
106
  session_token = data['session_token']
105
107
 
@@ -170,11 +172,16 @@ def upload(image: bytes, upload_token: dict): # oss 跨账号不知道是否可
170
172
  if __name__ == "__main__":
171
173
  from meutils.apis.jimeng.common import get_upload_token
172
174
 
173
- token = "693701c43e477b7c405cc7e2fef0ddbd"
175
+ # 豆包
176
+ token = "de2215a7bb8e442774cf388f03fac84c"
174
177
 
178
+ # jimeng
179
+ token = "693701c43e477b7c405cc7e2fef0ddbd"
180
+ #
175
181
  upload_token = arun(get_upload_token(token))
176
182
 
177
- with open("11.jpg", "rb") as f:
178
- file = image = f.read()
179
-
180
- upload(image, upload_token)
183
+ #
184
+ # with open("11.jpg", "rb") as f:
185
+ # file = image = f.read()
186
+ #
187
+ # upload(image, upload_token)
meutils/apis/utils.py ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : utils
5
+ # @Time : 2024/12/20 16:38
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from openai import AsyncClient
12
+ from meutils.pipe import *
13
+
14
+
15
+ # upstream_base_url: Optional[str] = Header(None),
16
+ # upstream_api_key: Optional[str] = Header(None),
17
+
18
+ async def make_request(
19
+ base_url: str,
20
+ path: str,
21
+ api_key: Optional[str] = None,
22
+
23
+ method: str = "GET",
24
+ headers: Optional[dict] = None,
25
+ payload: Optional[dict] = None,
26
+ params: Optional[dict] = None,
27
+
28
+ ):
29
+ client = AsyncClient(base_url=base_url, api_key=api_key, default_headers=headers)
30
+
31
+ options = {}
32
+ if params:
33
+ options["params"] = params
34
+
35
+ if method == 'GET':
36
+ response = await client.get(path, options=options, cast_to=object)
37
+ return response
38
+ elif method == 'POST':
39
+ response = await client.post(path, body=payload, options=options, cast_to=object)
40
+ return response
41
+
42
+
43
+ if __name__ == '__main__':
44
+ base_url = "https://api.chatfire.cn/tasks/kling-57751135"
45
+ base_url = "https://httpbin.org"
46
+
47
+ arun(make_request(base_url=base_url, path='/ip'))
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2024/12/20 16:10
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : sora
5
+ # @Time : 2024/12/20 16:10
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+
13
+
14
+ "/sora/backend/video_gen"
15
+
16
+
@@ -218,7 +218,7 @@ if __name__ == '__main__':
218
218
  # # token = "_ga=GA1.1.2058758439.1724312077; JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjgzNTAzODAsImlhdCI6MTcyNzA1NDM4MCwiaXNzIjoiaWFtIiwic3ViIjoiMjQyMDA2NTAzNjA5MTgzOSJ9.PkjQqjYB56vYetYwmlagnWn_6bSCwoxCjI7BjfelBOU; Shunt=; sensorsdata2015jssdkcross=dfm-enc-%7B%22Va28a6y8_aV%22%3A%22sSsAAnHAInAGEtIG%22%2C%22gae28_aV%22%3A%22EGEuAnststSEirt-ARSAigSVHIiHVs-EtHsHnIR-sARInAA-EGEuAnststHsIti%22%2C%22OemO2%22%3A%7B%22%24ki8r28_8eiggay_2mbeyr_8cOr%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24ki8r28_2rieyz_lrcMmeV%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24ki8r28_ergreere%22%3A%22%22%7D%2C%22aVr68a8ar2%22%3A%22rc3liZ7ku67OV5kgPsGCiskkDskl3qmawFlJPq0swqfcpXNJPZKSBF0IQXLzWq7lQFQzQZNcBF1SQF3EQqwIBF3MQhwswX08wFlJPq0swqfcpXKcwhzz3aMax9klWZHAiD7HDsJCWskbDskl3qmawqNcwX0sQF0hQq0HwFfhp4xG%22%2C%22za28mec_kmfa6_aV%22%3A%7B%226ior%22%3A%22%24aVr68a8c_kmfa6_aV%22%2C%22Cikbr%22%3A%22sSsAAnHAInAGEtIG%22%7D%7D; _ga_ZJBV7VYP55=GS1.1.1727080335.38.1.1727080510.0.0.0"
219
219
  # token = "JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjgzNDkyNzQsImlhdCI6MTcyNzA1MzI3NCwiaXNzIjoiaWFtIiwic3ViIjoiMjQyMDg5NjA4MTIwNTkwNyJ9.MRXmSr48PifQgRN1-yTTu8d7Sq1An4OS7G5WoYpJ_PU"
220
220
 
221
- token = "io=5x6Cq-35yXpNNaTnARm4; HMACCOUNT_BFESS=B48B1DDD7D11A6A2; Hm_lvt_a3c8711bce1795293b1793d35916c067=1732425804; Hm_lpvt_a3c8711bce1795293b1793d35916c067=1732425804; HMACCOUNT=B48B1DDD7D11A6A2; NEXT_LOCALE=zh; _ga=GA1.1.1058503703.1732425808; _ga_ZJBV7VYP55=GS1.1.1732425807.1.0.1732425807.0.0.0; sajssdk_2015_cross_new_user=1; aws-waf-token=1d7ade76-9c93-45d6-a3b3-ef1923dd3313:AAoAinMlYBIIAAAA:aFvWrQSuG72jHptL59eihBkkJmExBqqNxdmwnrFfMkZWiarHlmuulrC2okyx3jUF1c1ODfG+Gf+itl0la/LUcmEa6RdrCJp32Fgq+TdA/TYSCknbdOcOtXUxuvI1RXrJV6kIn9zKn+NBtsMoWW4OlJgvniXCNeZu9gO9ZLFjmH4KQYB37hIZnzvRSnpa5fCENwMTt0UU+Th3Mu0ZoJP5lT920UqSimOR8mAG+xZc7JgsyIh0oxrGO8eCZDzmYjXI/O6BDIbO; JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzM3MjE4MjEsImlhdCI6MTczMjQyNTgyMSwiaXNzIjoiaWFtIiwic3ViIjoiMjUzMjc4NjUyMTEyNzg0MSJ9.mZt9S7BTWCB_85FcajQtX4OoTr6CMghELVHnl7gt3zM; Shunt=; sensorsdata2015jssdkcross=dfm-enc-%7B%22Va28a6y8_aV%22%3A%22sHIsRtnHsEEsRtSE%22%2C%22gae28_aV%22%3A%22EGIHyGggREiRVA-AEusHsRSsinuuyr-EuHsHnIR-GsEnAA-EGIHyGggREuEgGA%22%2C%22OemO2%22%3A%7B%22%24ki8r28_8eiggay_2mbeyr_8cOr%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24ki8r28_2rieyz_lrcMmeV%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24ki8r28_ergreere%22%3A%22%22%7D%2C%22aVr68a8ar2%22%3A%22rc3liZ7ku67OV5kgPsGCiskkDskl3qmawFlhQZwHWoPIwZ1IWX08wXTawqKcQhNcPFWaPoQkBFTaQF3EQqwIBFlcwFPMwvAJpFwEPhkoWqyJPqTopF0aBv3liZ7ku67OV5kgu9G6iZHgiZNapa3cQFwcQhfsQF3JwF3IpXNJ36A%3D%22%2C%22za28mec_kmfa6_aV%22%3A%7B%226ior%22%3A%22%24aVr68a8c_kmfa6_aV%22%2C%22Cikbr%22%3A%22sHIsRtnHsEEsRtSE%22%7D%7D; SERVERCORSID=75eeb9319017a9014e79152a283d6cbe|1732425821|1732425808"
221
+ token = "_ga=GA1.1.2058758439.1724312077; JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzYyMjA4MzgsImlhdCI6MTczNDkyNDgzOCwiaXNzIjoiaWFtIiwic3ViIjoiMjQxODMzMTI4MjA0NTcyOCJ9.ecQl8lcH5mjueG48aZxmqUgxzffHx6l5L3QEve6Z_u0; Shunt=; sensorsdata2015jssdkcross=dfm-enc-%7B%22Va28a6y8_aV%22%3A%22sSEtIIEstsASHRst%22%2C%22gae28_aV%22%3A%22EGEuAnststSEirt-ARSAigSVHIiHVs-EtHsHnIR-sARInAA-EGEuAnststHsIti%22%2C%22OemO2%22%3A%7B%22%24ki8r28_8eiggay_2mbeyr_8cOr%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24ki8r28_2rieyz_lrcMmeV%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24ki8r28_ergreere%22%3A%22%22%7D%2C%22aVr68a8ar2%22%3A%22rc3liZ7ku67OV5kgPsGCiskkDskl3qmawFlJPq0swqfcpXNJPZKSBF0IQXLzWq7lQFQzQZNcBF1SQF3EQqwIBF3MQhwswX08wFlJPq0swqfcpXKcwhzz3aMax9klWZHAiD7HDsJCWskbDskl3qmawqNJpXwhwF3Swq0AQFycpvxG%22%2C%22za28mec_kmfa6_aV%22%3A%7B%226ior%22%3A%22%24aVr68a8c_kmfa6_aV%22%2C%22Cikbr%22%3A%22sSEtIIEstsASHRst%22%7D%7D; _ga_ZJBV7VYP55=GS1.1.1734923743.137.1.1734924845.54.0.0"
222
222
  arun(check_token(token))
223
223
  #
224
224
  # FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?sheet=rxldsA"
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2024.12.19.11.28.48
1
+ 2024.12.23.16.27.40
@@ -31,6 +31,32 @@
31
31
 
32
32
  </details>
33
33
 
34
+ ## 2024-12-20
35
+ - 修复SunoV4无水印版本
36
+ - [异步任务接口文档](https://api.chatfire.cn/docs/api-246593467)
37
+ - [增加视频解析模型](https://api.chatfire.cn/docs/api-246688638)
38
+ - 增加高并发mj-fast
39
+
40
+ ## 2024-12-19
41
+ - 新增生图模型 SeedEdit(文生图&图生图/图片编辑): 一句话编辑你的世界:字节跳动推出革命性图片编辑工具SeedEdit
42
+ - [Chat模式接口文档](https://api.chatfire.cn/docs/api-214415540)
43
+ - [Images接口文档](https://api.chatfire.cn/docs/api-246137616)
44
+ - [异步任务接口文档](https://api.chatfire.cn/docs/api-246120232)
45
+ - 新增视觉模型
46
+ - deepseek-ai/deepseek-vl2
47
+ - doubao-vision-pro-32k
48
+ - doubao-vision-lite-32k
49
+ - 新增视频模型 Sora
50
+ - Chat模式:`sora-1:1-480p-5s`
51
+ - 异步任务接口在路上
52
+
53
+
54
+
55
+ ---
56
+
57
+ <details markdown="1">
58
+ <summary><b>历史更新</b></summary>
59
+
34
60
  ## 2024-12-13
35
61
  - 新增模型 混元视频(支持高并发,非逆向可商用,限时特价1毛)[接口文档](https://api.chatfire.cn/docs/api-244309840)
36
62
  HunyuanVideo 是腾讯推出的开源视频生成基础模型,拥有超过 130 亿参数,是目前最大的开源视频生成模型。该模型采用统一的图像和视频生成架构,集成了数据整理、图像-视频联合模型训练和高效基础设施等关键技术。模型使用多模态大语言模型作为文本编码器,通过 3D VAE 进行空间-时间压缩,并提供提示词重写功能。根据专业人工评估结果,HunyuanVideo 在文本对齐、运动质量和视觉质量等方面的表现优于现有最先进的模型
@@ -46,14 +72,6 @@
46
72
  - o1-plus: (官网 plus 版本 `逆向工程`,有思考过程显示)o1 是OpenAI针对复杂任务的新推理模型,该任务需要广泛的常识。该模型具有 200k 上下文,目前全球最强模型,支持图片识别
47
73
  - o1-pro: (官网 200刀 plus 版本 `逆向工程`,有思考过程显示)o1-pro 是OpenAI针对复杂任务的新推理模型,该任务需要广泛的常识。该模型具有 200k 上下文,目前全球最强模型,支持图片识别
48
74
 
49
-
50
-
51
-
52
- ---
53
-
54
- <details markdown="1">
55
- <summary><b>历史更新</b></summary>
56
-
57
75
  ## 2024-12-05
58
76
  - 新增模型gpt-4-plus/gpt-4o-plus按倍率计算
59
77
  > OpenAI-plus会员 逆向工程
@@ -14,6 +14,7 @@ from meutils.data.oneapi import NOTICE, FOOTER
14
14
  BASE_URL = "https://api.chatfire.cn"
15
15
  # BASE_URL = "https://api-dev.chatfire.cn"
16
16
  FREE = 0.001
17
+ MJ = 1.5
17
18
 
18
19
  MODEL_PRICE = {
19
20
  # chatfire
@@ -26,6 +27,8 @@ MODEL_PRICE = {
26
27
  "chatfire-all": 0.0001,
27
28
  "chatfire-law": 0.01,
28
29
 
30
+ "sora-1:1-480p-5s": 1.2,
31
+
29
32
  # 虚拟换衣fish
30
33
  "api-kolors-virtual-try-on": 0.1,
31
34
  "official-api-kolors-virtual-try-on": 0.8,
@@ -162,17 +165,8 @@ MODEL_PRICE = {
162
165
  "api-translator": 0.0001,
163
166
  "api-voice-clone": 0.01,
164
167
 
165
- "api-sunoai-chirp": 0.1,
166
- "api-sunoai-audio": 0.01, # file
167
- "api-sunoai-lyrics": 0.01,
168
- "api-sunoai-cover": 0.01,
169
- "api-sunoai-stems": 0.01,
170
-
171
- "suno-v3": 0.1,
172
- "suno-v3.5": 0.1,
173
- "suno-chat": 0.1,
174
- "chirp-v3": 0.1,
175
- "chirp-v3.5": 0.1,
168
+ "suno_music": 0.5,
169
+ "suno_lyrics": 0.01,
176
170
 
177
171
  "api-reranker": 0.01,
178
172
 
@@ -181,7 +175,7 @@ MODEL_PRICE = {
181
175
  "o1-pro": 0.5,
182
176
 
183
177
  "o1-mini-all": 0.2,
184
- "o1-preview-all": 0.4,
178
+ "o1-preview-all": 0.5,
185
179
 
186
180
  "gpt-4-all": 0.1,
187
181
  "gpt-4o-all": 0.1,
@@ -224,24 +218,22 @@ MODEL_PRICE = {
224
218
  "ai-search-pro": 0.1,
225
219
  "ai-search-pro:scholar": 0.1,
226
220
 
227
- "midjourney": 0.14, # chat
228
-
229
- "mj_imagine": 0.1 * 0.6,
230
- "mj_variation": 0.1 * 0.6,
231
- "mj_high_variation": 0.1 * 0.6,
232
- "mj_low_variation": 0.1 * 0.6,
233
- "mj_pan": 0.1 * 0.6,
234
- "mj_blend": 0.1 * 0.6,
221
+ "mj_imagine": 0.1 * MJ,
222
+ "mj_variation": 0.1 * MJ,
223
+ "mj_high_variation": 0.1 * MJ,
224
+ "mj_low_variation": 0.1 * MJ,
225
+ "mj_pan": 0.1 * MJ,
226
+ "mj_blend": 0.1 * MJ,
235
227
  "mj_inpaint": 0,
236
- "mj_reroll": 0.1 * 0.6,
228
+ "mj_reroll": 0.1 * MJ,
237
229
 
238
- "mj_upscale": 0.05 * 0.6,
230
+ "mj_upscale": 0.05 * MJ,
239
231
  "mj_custom_zoom": 0,
240
- "mj_describe": 0.05 * 0.6,
241
- "mj_modal": 0.1 * 0.6,
242
- "mj_shorten": 0.1 * 0.6,
243
- "mj_zoom": 0.1 * 0.6,
244
- "swap_face": 0.05 * 0.6,
232
+ "mj_describe": 0.05 * MJ,
233
+ "mj_modal": 0.1 * MJ,
234
+ "mj_shorten": 0.1 * MJ,
235
+ "mj_zoom": 0.1 * MJ,
236
+ "swap_face": 0.05 * MJ,
245
237
 
246
238
  }
247
239
 
@@ -302,7 +294,7 @@ MODEL_RATIO = {
302
294
  "glm-4-0520": 2.5,
303
295
  "glm-4-airx": 10,
304
296
  "glm-4v": 2.5,
305
- "glm-4v-plus": 1, # 2.5
297
+ "glm-4v-plus": 2.5, # 2.5
306
298
  "glm-4v-flash": 0.1,
307
299
  "glm-4-plus": 25,
308
300
 
@@ -313,7 +305,7 @@ MODEL_RATIO = {
313
305
 
314
306
  # 阿里千问 https://dashscope.console.aliyun.com/billing
315
307
  "qwen-long": 0.5,
316
- "qwen-turbo": 1,
308
+ "qwen-turbo": 0.05,
317
309
  "qwen-plus": 2,
318
310
  "qwen-max": 20,
319
311
  "qwen-max-longcontext": 20,
@@ -384,6 +376,7 @@ MODEL_RATIO = {
384
376
  'deepseek-coder-v2-instruct': 0.5,
385
377
  'deepseek-v2-chat': 0.5,
386
378
  'deepseek-llm-67b-chat': 0.5,
379
+ "deepseek-ai/deepseek-vl2": 0.5,
387
380
 
388
381
  # 豆包
389
382
  "doubao-lite-128k": 0.4,
@@ -392,6 +385,8 @@ MODEL_RATIO = {
392
385
  "doubao-pro-128k": 2.5,
393
386
  "doubao-pro-32k": 0.4,
394
387
  "doubao-pro-4k": 0.4,
388
+ "doubao-vision-lite-32k": 0.75,
389
+ "doubao-vision-pro-32k": 1.5,
395
390
 
396
391
  # 商汤 https://platform.sensenova.cn/pricing
397
392
  # https://platform.sensenova.cn/doc?path=/pricingdoc/pricing.md
@@ -641,6 +636,10 @@ COMPLETION_RATIO = {
641
636
  "qwen-max": 5,
642
637
  "glm-4v-flash": 5,
643
638
 
639
+ "deepseek-ai/deepseek-vl2": 3,
640
+ "doubao-vision-lite-32k": 3,
641
+ "doubao-vision-pro-32k": 3,
642
+
644
643
  }
645
644
 
646
645
  REDIRECT_MODEL = {
@@ -657,9 +656,9 @@ REDIRECT_MODEL = {
657
656
  'glm-4-9b-chat': 'THUDM/glm-4-9b-chat', # 永久免费
658
657
  'chatglm3-6b': 'THUDM/chatglm3-6b', # 永久免费
659
658
 
660
- "doubao-pro-128k": "deepseek-ai/DeepSeek-V2-Chat",
661
659
  # "deepseek-chat": "deepseek-ai/DeepSeek-V2-Chat",
662
660
  "deepseek-chat": "deepseek-ai/DeepSeek-V2.5",
661
+ "deepseek-vl2": "deepseek-ai/deepseek-vl2",
663
662
 
664
663
  "deepseek-coder": "deepseek-ai/DeepSeek-Coder-V2-Instruct",
665
664
  'deepseek-coder-v2-instruct': 'deepseek-ai/DeepSeek-Coder-V2-Instruct',
@@ -706,7 +705,7 @@ REDIRECT_MODEL = {
706
705
  "qwen2.5-coder-7b-instruct": "Qwen/Qwen2.5-Coder-7B-Instruct",
707
706
  "qwen2.5-coder-32b-instruct": "Qwen/Qwen2.5-Coder-32B-Instruct",
708
707
 
709
- "qwen-turbo": "Qwen/Qwen2-7B-Instruct",
708
+ "qwen-turbo": "Qwen/Qwen2.5-7B-Instruct",
710
709
  'qwen2-1.5b-instruct': 'Qwen/Qwen2-1.5B-Instruct',
711
710
  'qwen2-7b-instruct': 'Qwen/Qwen2-7B-Instruct',
712
711
  'qwen2-72b-instruct': 'Qwen/Qwen2-72B-Instruct',
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : request_types
5
+ # @Time : 2024/12/20 16:29
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+
13
+ # requests.request()
14
+
15
+
16
+ class RequestTypes(BaseModel):
17
+ method: str = "POST"
18
+
19
+ base_url: str
20
+ api_key: Optional[str] = None
@@ -59,8 +59,39 @@ EXAMPLES = [
59
59
  ]
60
60
 
61
61
 
62
+ # {
63
+ # "input": {
64
+ # "prompts": [
65
+ # {
66
+ # "type": "text",
67
+ # "content": "跳起来"
68
+ # },
69
+ # {
70
+ # "type": "image",
71
+ # "content": "https://oss.ffire.cc/files/kling_watermark.png",
72
+ # "src_imgs": [
73
+ # "https://oss.ffire.cc/files/kling_watermark.png"
74
+ # ]
75
+ # }
76
+ # ],
77
+ # "enhance": true
78
+ # },
79
+ # "type": "img2video",
80
+ # "settings": {
81
+ # "style": "general",
82
+ # "duration": 4,
83
+ # "model": "vidu-high-performance",
84
+ # "model_version": "1.0"
85
+ # }
86
+ # }
87
+
88
+ class VideoRequest(BaseModel):
89
+ pass
90
+
91
+
62
92
  class ViduRequest(BaseModel):
63
- model: str = "vidu-1" # vidu-1.5
93
+ """quality 倍率2"""
94
+ model: Union[str, Literal['vidu-high-performance', 'vidu-high-quality']] = "vidu-high-performance" # vidu-1.5
64
95
 
65
96
  prompt: Optional[str] = None
66
97
  url: Optional[str] = None # ssupload:?id=
@@ -94,24 +125,30 @@ class ViduRequest(BaseModel):
94
125
  )
95
126
  type = "text2video"
96
127
  if self.url:
128
+ type = "img2video" # character2video
129
+
97
130
  input['prompts'].append(
98
131
  {
99
132
  "type": "image",
100
133
  "content": self.url,
101
- # "content": "ssupload:?id=2467831038260968",
102
- # "src_img": "ssupload:?id=2467831032322652"
134
+ "src_imgs": [self.url, ]
103
135
  }
104
136
  )
105
- type = "img2video" # character2video
106
137
 
107
138
  self.payload = {
108
139
  "input": input,
109
140
  "type": self.type or type,
110
141
  "settings": {
142
+ "model": self.model,
143
+ "model_version": "1.0",
144
+ # "resolution": "512", 1.5才有的参数 先适配1.0
145
+
111
146
  "style": self.style,
112
- "aspect_ratio": self.aspect_ratio,
147
+
148
+ # "aspect_ratio": self.aspect_ratio,
149
+
113
150
  "duration": self.duration,
114
- "model": "vidu-1" # vidu-high-performance
151
+
115
152
  }
116
153
  }
117
154
 
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
- # @Project : AI. @by PyCharm
4
- # @File : sig
5
- # @Time : 2024/12/18 15:36
6
- # @Author : betterme
7
- # @WeChat : meutils
8
- # @Software : PyCharm
9
- # @Description :
10
- import hashlib
11
- import hmac
12
- import datetime
13
-
14
-
15
- def sign(key, msg):
16
- return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
17
-
18
-
19
- def getSignatureKey(key, dateStamp, regionName, serviceName):
20
- kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp)
21
- kRegion = sign(kDate, regionName)
22
- kService = sign(kRegion, serviceName)
23
- kSigning = sign(kService, 'aws4_request')
24
- return kSigning
25
-
26
-
27
- if __name__ == '__main__':
28
- pass
29
- from meutils.pipe import *
30
- from meutils.apis.jimeng.utils import get_upload_token
31
-
32
- # data = arun(get_upload_token())
33
-
34
- # access_key_id = data['data']['auth']['access_key_id']
35
- # secret_access_key = data['data']['auth']['secret_access_key']
36
- # session_token = data['data']['auth']['session_token']
37
-
38
- import hashlib
39
- import hmac
40
- import datetime
41
-
42
-
43
- def sign(key, msg):
44
- """计算 HMAC-SHA256"""
45
- return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
46
-
47
-
48
- def getSignatureKey(key, dateStamp, regionName, serviceName):
49
- """生成签名密钥"""
50
- kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp)
51
- kRegion = sign(kDate, regionName)
52
- kService = sign(kRegion, serviceName)
53
- kSigning = sign(kService, 'aws4_request')
54
- return kSigning
55
-
56
-
57
- def calculate_signature(string_to_sign, secret_key, region, service, date):
58
- """计算 AWS4-HMAC-SHA256 签名"""
59
- # 生成签名密钥
60
- signing_key = getSignatureKey(
61
- secret_key,
62
- date.strftime('%Y%m%d'),
63
- region,
64
- service
65
- )
66
-
67
- # 计算最终签名
68
- signature = hmac.new(
69
- signing_key,
70
- string_to_sign.encode('utf-8'),
71
- hashlib.sha256
72
- ).hexdigest()
73
-
74
- return signature
75
-
76
- # 示例参数
77
-
78
-
79
- secret_key = 'AKTPN2VkZWY2MWNhNjVlNGZhZThiZmVmNzEwODA3YjM1YTY'
80
- region = 'cn-north-1'
81
- service = 'imagex'
82
- date = datetime.datetime.utcnow()
83
- print(date)
84
- hash_of_canonical_request = {
85
- "SessionKey": "eyJhY2NvdW50VHlwZSI6IkltYWdlWCIsImFwcElkIjoiIiwiYml6VHlwZSI6IiIsImZpbGVUeXBlIjoiaW1hZ2UiLCJsZWdhbCI6IiIsInN0b3JlSW5mb3MiOiJbe1wiU3RvcmVVcmlcIjpcInRvcy1jbi1pLWE5cm5zMnJsOTgvYmQzZGNlZWIzN2Y3NDA5NjlkMTBiZjBiZjhhMzk0NmUuanBlZ1wiLFwiQXV0aFwiOlwiU3BhY2VLZXkvYTlybnMycmw5OC8xLzp2ZXJzaW9uOnYyOmV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUpsZUhBaU9qRTNNelExTXpBd016Z3NJbk5wWjI1aGRIVnlaVWx1Wm04aU9uc2lZV05qWlhOelMyVjVJam9pWm1GclpWOWhZMk5sYzNOZmEyVjVJaXdpWW5WamEyVjBJam9pZEc5ekxXTnVMV2t0WVRseWJuTXljbXc1T0NJc0ltVjRjR2x5WlNJNk1UY3pORFV6TURBek9Dd2labWxzWlVsdVptOXpJanBiZXlKdmFXUkxaWGtpT2lKaVpETmtZMlZsWWpNM1pqYzBNRGsyT1dReE1HSm1NR0ptT0dFek9UUTJaUzVxY0dWbklpd2labWxzWlZSNWNHVWlPaUl4SW4xZExDSmxlSFJ5WVNJNmV5SmliRzlqYTE5dGIyUmxJam9pSWl3aVkyOXVkR1Z1ZEY5MGVYQmxYMkpzYjJOcklqb2llMXdpYldsdFpWOXdZM1JjSWpvd0xGd2liVzlrWlZ3aU9qQXNYQ0p0YVcxbFgyeHBjM1JjSWpwdWRXeHNMRndpWTI5dVpteHBZM1JmWW14dlkydGNJanBtWVd4elpYMGlMQ0psYm1OeWVYQjBYMkZzWjI4aU9pSWlMQ0psYm1OeWVYQjBYMnRsZVNJNklpSXNJbVY0ZEY5amIyNTBaVzUwWDNSNWNHVWlPaUpwYldGblpTOXFjR1ZuSWl3aWFYTmZhVzFoWjJWNElqcDBjblZsTENKemNHRmpaU0k2SW1FNWNtNXpNbkpzT1RnaWZYMTkueVFadDJoYWFVMDBuMTFZREJXZDBCbTNIYWdtVlNUN0UzNXMwSkNnOGpzMFwiLFwiVXBsb2FkSURcIjpcIjE3ZThiODUxNzczNDRlYjFiYmM1MDAzMWU3NzQ3NGUyXCIsXCJVcGxvYWRIZWFkZXJcIjpudWxsLFwiU3RvcmFnZUhlYWRlclwiOm51bGx9XSIsInVwbG9hZEhvc3QiOiJ0b3MtZC14LWxmLnNuc3Nkay5jb20iLCJ1cmkiOiJ0b3MtY24taS1hOXJuczJybDk4L2JkM2RjZWViMzdmNzQwOTY5ZDEwYmYwYmY4YTM5NDZlLmpwZWciLCJ1c2VySWQiOiIifQ=="
86
- }
87
- hash_of_canonical_request = json.dumps(hash_of_canonical_request)
88
- string_to_sign = f'AWS4-HMAC-SHA256\n20241218T075358Z\n20241218/cn-north-1/imagex/aws4_request\n{hash_of_canonical_request}'
89
-
90
- # 计算签名
91
- signature = calculate_signature(string_to_sign, secret_key, region, service, date)
92
- print(f'签名结果: {signature}')