Загрузка данных


import os
import shutil

# Настройки
source_dir = "Downloads_Bank_Docs"
target_dir = "Ready_To_Upload"
start_from_batch = 23

if not os.path.exists(target_dir):
    os.makedirs(target_dir)

print(f"--- Начинаю сбор файлов начиная с Batch_{start_from_batch} ---")

count = 0
# Проходим по всем папкам внутри source_dir
for folder_name in os.listdir(source_dir):
    folder_path = os.path.join(source_dir, folder_name)
    
    # Проверяем, что это папка и в названии есть номер батча
    if os.path.isdir(folder_path) and "Batch_" in folder_name:
        try:
            # Извлекаем номер из названия (например, из 'Upload_Batch_25' достаем 25)
            batch_num = int(''.join(filter(str.isdigit, folder_name)))
            
            if batch_num >= start_from_batch:
                print(f"Обработка {folder_name}...")
                for file_name in os.listdir(folder_path):
                    # Берем только документы
                    if file_name.lower().endswith(('.pdf', '.docx')):
                        old_file_path = os.path.join(folder_path, file_name)
                        new_file_path = os.path.join(target_dir, file_name)
                        
                        # Копируем (или перемещаем shutil.move)
                        shutil.copy2(old_file_path, new_file_path)
                        count += 1
        except ValueError:
            continue

print(f"\nГотово! Собрано файлов: {count}. Все они лежат в '{target_dir}'")


import os
import http.client
import mimetypes
import uuid

# --- НАСТРОЙКИ ---
FOLDER_PATH = "Ready_To_Upload"
SERVER_HOST = "main.atb.su"         # Хост (без http://)
API_ENDPOINT = "/api/v1/documents"  # Путь к API
AUTH_TOKEN = "Bearer ТВОЙ_ТОКЕН"    # Вставь актуальный токен
# -----------------

def upload_single_file(file_path):
    file_name = os.path.basename(file_path)
    mime_type, _ = mimetypes.guess_type(file_path)
    mime_type = mime_type or 'application/octet-stream'
    boundary = uuid.uuid4().hex

    with open(file_path, 'rb') as f:
        file_content = f.read()

    # Формируем тело запроса по стандартам HTTP
    body = (
        f"--{boundary}\r\n"
        f'Content-Disposition: form-data; name="file"; filename="{file_name}"\r\n'
        f"Content-Type: {mime_type}\r\n\r\n"
    ).encode('utf-8') + file_content + f"\r\n--{boundary}--\r\n".encode('utf-8')

    headers = {
        "Authorization": AUTH_TOKEN,
        "Content-Type": f"multipart/form-data; boundary={boundary}",
        "Content-Length": str(len(body))
    }

    # Отправляем через стандартную библиотеку
    conn = http.client.HTTPSConnection(SERVER_HOST) # Используй HTTPConnection если нет SSL
    try:
        conn.request("POST", API_ENDPOINT, body=body, headers=headers)
        response = conn.getresponse()
        print(f"[{response.status}] {file_name} -> {response.reason}")
    except Exception as e:
        print(f"[!] Ошибка {file_name}: {e}")
    finally:
        conn.close()

def start_upload():
    if not os.path.exists(FOLDER_PATH):
        print("Папка не найдена!")
        return

    files = [f for f in os.listdir(FOLDER_PATH) if os.path.isfile(os.path.join(FOLDER_PATH, f))]
    print(f"Начинаю загрузку {len(files)} файлов...")

    for i, name in enumerate(files, 1):
        print(f"({i}/{len(files)}) ", end="")
        upload_single_file(os.path.join(FOLDER_PATH, name))

if __name__ == "__main__":
    start_upload()