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()