返回提交历史
Modified
g4f/Provider/LiteIcoding.py
+12
-9
XFEstudio/gpt4free
refactor(g4f/Provider/LiteIcoding.py): encode bearer tokens and add decoding
9b5f9921
代码差异
1 个文件
+12
-9
@@ -1,12 +1,11 @@
1
1
from __future__ import annotations
2
3
from aiohttp import ClientSession, ClientResponseError
2
import base64
4
3
import re
4
from aiohttp import ClientSession, ClientResponseError
5
5
from ..typing import AsyncResult, Messages
6
6
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
7
7
from .helper import format_prompt
8
8
9
10
9
class LiteIcoding(AsyncGeneratorProvider, ProviderModelMixin):
11
10
url = "https://lite.icoding.ink"
12
11
api_endpoint = "/api/v1/gpt/message"
@@ -27,18 +26,20 @@ class LiteIcoding(AsyncGeneratorProvider, ProviderModelMixin):
27
26
}
28
27
29
28
bearer_tokens = [
30
"aa3020ee873e40cb8b3f515a0708ebc4",
31
"5d69cd271b144226ac1199b3c849a566",
32
"62977f48a95844f8853a953679401850",
33
"d815b091959e42dd8b7871dfaf879485"
29
"NWQ2OWNkMjcxYjE0NDIyNmFjMTE5OWIzYzg0OWE1NjY=",
30
"ZDgxNWIwOTU5NTk0ZTRkZDhiNzg3MWRmYWY4Nzk0ODU="
34
31
]
35
32
current_token_index = 0
36
33
34
@classmethod
35
def decode_token(cls, encoded_token: str) -> str:
36
return base64.b64decode(encoded_token).decode('utf-8')
37
37
38
@classmethod
38
39
def get_next_bearer_token(cls):
39
token = cls.bearer_tokens[cls.current_token_index]
40
encoded_token = cls.bearer_tokens[cls.current_token_index]
40
41
cls.current_token_index = (cls.current_token_index + 1) % len(cls.bearer_tokens)
41
return token
42
return cls.decode_token(encoded_token)
42
43
43
44
@classmethod
44
45
async def create_async_generator(
@@ -95,9 +96,11 @@ class LiteIcoding(AsyncGeneratorProvider, ProviderModelMixin):
95
96
response.raise_for_status()
96
97
buffer = ""
97
98
full_response = ""
99
98
100
def decode_content(data):
99
101
bytes_array = bytes([int(b, 16) ^ 255 for b in data.split()])
100
102
return bytes_array.decode('utf-8')
103
101
104
async for chunk in response.content.iter_any():
102
105
if chunk:
103
106
buffer += chunk.decode()