Spaces:
Running
Running
Commit ·
2e57f71
1
Parent(s): 4cd2605
progress more (3.7)
Browse files
app.py
CHANGED
|
@@ -18,24 +18,10 @@ import pdfkit
|
|
| 18 |
from jinja2 import Template
|
| 19 |
|
| 20 |
|
| 21 |
-
def create_download_section(excel_data,
|
| 22 |
st.markdown("""
|
| 23 |
-
<style>
|
| 24 |
-
.download-container {
|
| 25 |
-
padding: 20px;
|
| 26 |
-
background-color: #f0f2f6;
|
| 27 |
-
border-radius: 10px;
|
| 28 |
-
margin: 20px 0;
|
| 29 |
-
}
|
| 30 |
-
.download-header {
|
| 31 |
-
color: #0066cc;
|
| 32 |
-
font-size: 18px;
|
| 33 |
-
font-weight: bold;
|
| 34 |
-
margin-bottom: 10px;
|
| 35 |
-
}
|
| 36 |
-
</style>
|
| 37 |
<div class="download-container">
|
| 38 |
-
<div class="download-header">📥 Результаты анализа
|
| 39 |
</div>
|
| 40 |
""", unsafe_allow_html=True)
|
| 41 |
|
|
@@ -54,20 +40,17 @@ def create_download_section(excel_data, output_capture):
|
|
| 54 |
st.error("Ошибка при создании Excel файла")
|
| 55 |
|
| 56 |
with col2:
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
st.error("Ошибка при создании протокола")
|
| 69 |
-
except Exception as e:
|
| 70 |
-
st.error(f"Ошибка при создании протокола: {str(e)}")
|
| 71 |
|
| 72 |
def display_sentiment_results(row, sentiment, impact=None, reasoning=None):
|
| 73 |
if sentiment == "Negative":
|
|
@@ -114,6 +97,8 @@ def generate_pdf_report(texts):
|
|
| 114 |
import pdfkit
|
| 115 |
from jinja2 import Template
|
| 116 |
|
|
|
|
|
|
|
| 117 |
html_content = """
|
| 118 |
<html>
|
| 119 |
<head>
|
|
@@ -137,11 +122,14 @@ def generate_pdf_report(texts):
|
|
| 137 |
rendered_html = template.render(texts=texts)
|
| 138 |
|
| 139 |
# Create PDF in memory
|
| 140 |
-
|
|
|
|
|
|
|
| 141 |
return pdf_data
|
| 142 |
|
| 143 |
except Exception as e:
|
| 144 |
st.warning(f"Не удалось создать PDF отчет: {str(e)}")
|
|
|
|
| 145 |
# Return the text as bytes if PDF generation fails
|
| 146 |
return '\n'.join(texts).encode('utf-8')
|
| 147 |
|
|
@@ -359,16 +347,27 @@ def process_file(uploaded_file):
|
|
| 359 |
reasoning if sentiment == "Negative" else None)
|
| 360 |
|
| 361 |
|
| 362 |
-
|
|
|
|
| 363 |
|
| 364 |
-
#
|
| 365 |
excel_output = create_output_file(df, uploaded_file)
|
| 366 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 367 |
# Show success message
|
| 368 |
-
st.success(f"✅ Обработка и анализ завершены за
|
| 369 |
|
| 370 |
# Create download section
|
| 371 |
-
create_download_section(excel_output,
|
| 372 |
|
| 373 |
return df
|
| 374 |
|
|
@@ -496,7 +495,7 @@ def main():
|
|
| 496 |
unsafe_allow_html=True
|
| 497 |
)
|
| 498 |
|
| 499 |
-
st.title("::: анализ мониторинга новостей СКАН-ИНТЕРФАКС (v.3.
|
| 500 |
|
| 501 |
if 'processed_df' not in st.session_state:
|
| 502 |
st.session_state.processed_df = None
|
|
|
|
| 18 |
from jinja2 import Template
|
| 19 |
|
| 20 |
|
| 21 |
+
def create_download_section(excel_data, pdf_data):
|
| 22 |
st.markdown("""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
<div class="download-container">
|
| 24 |
+
<div class="download-header">📥 Результаты анализа доступны для скачивания:</div>
|
| 25 |
</div>
|
| 26 |
""", unsafe_allow_html=True)
|
| 27 |
|
|
|
|
| 40 |
st.error("Ошибка при создании Excel файла")
|
| 41 |
|
| 42 |
with col2:
|
| 43 |
+
if pdf_data is not None:
|
| 44 |
+
st.download_button(
|
| 45 |
+
label="📄 Скачать PDF протокол",
|
| 46 |
+
data=pdf_data,
|
| 47 |
+
file_name="протокол_анализа.pdf",
|
| 48 |
+
mime="application/pdf",
|
| 49 |
+
key="pdf_download"
|
| 50 |
+
)
|
| 51 |
+
else:
|
| 52 |
+
st.error("Ошибка при создании PDF файла")
|
| 53 |
+
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
def display_sentiment_results(row, sentiment, impact=None, reasoning=None):
|
| 56 |
if sentiment == "Negative":
|
|
|
|
| 97 |
import pdfkit
|
| 98 |
from jinja2 import Template
|
| 99 |
|
| 100 |
+
st.write("Подготовка PDF...")
|
| 101 |
+
|
| 102 |
html_content = """
|
| 103 |
<html>
|
| 104 |
<head>
|
|
|
|
| 122 |
rendered_html = template.render(texts=texts)
|
| 123 |
|
| 124 |
# Create PDF in memory
|
| 125 |
+
st.write("Конвертация в PDF...")
|
| 126 |
+
pdf_data = pdfkit.from_string(rendered_html, False) # False means return PDF as bytes
|
| 127 |
+
st.write("PDF успешно создан")
|
| 128 |
return pdf_data
|
| 129 |
|
| 130 |
except Exception as e:
|
| 131 |
st.warning(f"Не удалось создать PDF отчет: {str(e)}")
|
| 132 |
+
st.write("Создание текстового отчета вместо PDF...")
|
| 133 |
# Return the text as bytes if PDF generation fails
|
| 134 |
return '\n'.join(texts).encode('utf-8')
|
| 135 |
|
|
|
|
| 347 |
reasoning if sentiment == "Negative" else None)
|
| 348 |
|
| 349 |
|
| 350 |
+
# Generate all output files
|
| 351 |
+
st.write("Генерация отчетов...")
|
| 352 |
|
| 353 |
+
# 1. Generate Excel
|
| 354 |
excel_output = create_output_file(df, uploaded_file)
|
| 355 |
|
| 356 |
+
# 2. Generate PDF
|
| 357 |
+
st.write("Создание PDF протокола...")
|
| 358 |
+
pdf_data = generate_pdf_report(output_capture.texts)
|
| 359 |
+
|
| 360 |
+
# Save PDF to disk
|
| 361 |
+
if pdf_data:
|
| 362 |
+
with open("result.pdf", "wb") as f:
|
| 363 |
+
f.write(pdf_data)
|
| 364 |
+
st.success("PDF протокол сохранен как 'result.pdf'")
|
| 365 |
+
|
| 366 |
# Show success message
|
| 367 |
+
st.success(f"✅ Обработка и анализ завершены за {formatted_time}.")
|
| 368 |
|
| 369 |
# Create download section
|
| 370 |
+
create_download_section(excel_output, pdf_data)
|
| 371 |
|
| 372 |
return df
|
| 373 |
|
|
|
|
| 495 |
unsafe_allow_html=True
|
| 496 |
)
|
| 497 |
|
| 498 |
+
st.title("::: анализ мониторинга новостей СКАН-ИНТЕРФАКС (v.3.7):::")
|
| 499 |
|
| 500 |
if 'processed_df' not in st.session_state:
|
| 501 |
st.session_state.processed_df = None
|