import os, http.client, mimetypes, uuid, ssl
# Данные для входа
HOST = "main.atb.su"
URL = "/api/v1/documents"
TOKEN = "Bearer ТВОЙ_ТОКЕН"
CERT = "gigachat_user.pem"
KEY = "gigachat_user.key"
def upload(file_path):
name = os.path.basename(file_path)
mime, _ = mimetypes.guess_type(file_path)
boundary = uuid.uuid4().hex
# Читаем байты, чтобы "приклеить" их к HTTP-запросу
with open(file_path, 'rb') as f:
file_bytes = f.read()
# Собираем запрос
body = (f"--{boundary}\r\n"
f'Content-Disposition: form-data; name="file"; filename="{name}"\r\n'
f"Content-Type: {mime or 'application/octet-stream'}\r\n\r\n").encode() + \
file_bytes + f"\r\n--{boundary}--\r\n".encode()
# Настройка SSL (verify=False + твои серты)
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
context.load_cert_chain(certfile=CERT, keyfile=KEY)
conn = http.client.HTTPSConnection(HOST, context=context)
conn.request("POST", URL, body=body, headers={
"Authorization": TOKEN,
"Content-Type": f"multipart/form-data; boundary={boundary}"
})
print(f"[{conn.getresponse().status}] {name}")
conn.close()
# Запускаем по списку из папки
folder = "Ready_To_Upload"
for file in os.listdir(folder):
upload(os.path.join(folder, file))