Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if 'file' in st.session_state and 'row_' in st.session_state:
- if 'file_processed' not in st.session_state:
- st.session_state['file_processed'] = False
- if 'result_file' not in st.session_state:
- st.session_state['result_file'] = None
- if st.button("📤 Обработать файл"):
- with st.spinner("Обрабатываю..."):
- try:
- row = st.session_state['row_']
- # Приводим к row_dict
- # if isinstance(row, pd.DataFrame):
- # row_dict = row.to_dict(orient="records")
- # elif isinstance(row, pd.Series):
- # row_dict = [row.to_dict()]
- # elif isinstance(row, dict):
- # row_dict = [row]
- # elif isinstance(row, list):
- # if all(isinstance(item, dict) for item in row):
- # row_dict = row
- # else:
- # raise ValueError("Список содержит не словари")
- # else:
- # raise ValueError(f"Неподдерживаемый тип данных в st.session_state['row_']: {type(row)}")
- # row_dict = row
- # Чистим данные от 'null' и невалидных значений
- # row_dict = clean_row_dict(row_dict)
- # st.write(json.dumps(row_dict, ensure_ascii=False, indent=2))
- # print(json.dumps(row_dict, ensure_ascii=False, indent=2), type(json.dumps(row_dict, ensure_ascii=False, indent=2)))
- files = {"file": st.session_state['file']}
- data = {"data": json.dumps({"index" : st.session_state["index"]}, ensure_ascii=False)}
- try:
- response_valid = requests.post(
- API_PROCESS_PATH,
- files=files,
- data=data,
- headers={"Authorization": f"Bearer {API_PROCESS_KEY}"}
- )
- except ValueError as e:
- print(e)
- if response_valid.status_code == 200:
- json_dict = response_valid.json()
- file_base64 = json_dict['file_base64']
- file_name = json_dict['file_name']
- import base64
- file_bytes = base64.b64decode(file_base64)
- st.session_state['result_file'] = file_bytes
- st.session_state['result_file_name'] = file_name
- # with open(st.session_state['result_file_name'], 'wb') as f:
- # f.write(st.session_state['result_file'])
- #logs
- print(response_valid.content[:100])
- print(response_valid.status_code)
- print(response_valid.headers.get('Content-Type'))
- st.session_state['file_processed'] = True
- st.success("✅ Файл успешно обработан! Теперь укажите email для отправки.")
- else:
- error_msg = response_valid.json().get('error', 'Неизвестная ошибка')
- st.error(f"❌ Ошибка API: {error_msg}")
- except Exception as e:
- print(e)
- st.exception(e)
- if st.session_state['file_processed']:
- user_email = st.text_input("📧 Введите ваш email")
- if st.button("📨 Отправить файл на email"):
- if not user_email.strip():
- st.warning("⚠️ Email не указан — файл не будет отправлен")
- else:
- try:
- send_result(user_email, st.session_state['result_file'], "updated_file.docx")
- st.success(f"📩 Файл отправлен на {user_email}")
- except Exception as e:
- print(e)
- st.error(f"⚠️ Ошибка отправки: {e}")
Add Comment
Please, Sign In to add comment