Spaces:
Running
Running
Update pages/Analysis.py
Browse files- pages/Analysis.py +84 -119
pages/Analysis.py
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
from utils.functions import (
|
3 |
get_phone_info,
|
@@ -188,6 +190,16 @@ def analyze_website(url, language):
|
|
188 |
st.write(get_translation('website_analysis_in_progress', language))
|
189 |
# Tutaj mo偶esz doda膰 logik臋 analizy stron internetowych
|
190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
def show_history(language):
|
192 |
st.subheader(get_translation('history_header', language))
|
193 |
st.write(get_translation('history_in_progress', language))
|
@@ -201,11 +213,33 @@ def show_statistics(language):
|
|
201 |
def get_translation(key, language):
|
202 |
translations = {
|
203 |
'Polish': {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
'sms_analysis_header': "Analiza SMS",
|
205 |
'email_analysis_header': "Analiza E-mail",
|
206 |
'website_analysis_header': "Analiza Strony Internetowej",
|
207 |
-
'
|
208 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
'phone_info': "Informacje o numerze telefonu:",
|
210 |
'country_label': "Kraj",
|
211 |
'operator_label': "Operator",
|
@@ -229,126 +263,37 @@ def get_translation(key, language):
|
|
229 |
'number_already_reported': "Numer zosta艂 ju偶 wcze艣niej zg艂oszony jako oszustwo.",
|
230 |
'invalid_number': "Podany numer telefonu jest nieprawid艂owy.",
|
231 |
'failed_to_parse': "Nie uda艂o si臋 przetworzy膰 numeru telefonu. Upewnij si臋, 偶e jest w poprawnym formacie.",
|
232 |
-
'email_analysis_in_progress': "Funkcja analizy e-maili jest w trakcie implementacji.",
|
233 |
-
'website_analysis_in_progress': "Funkcja analizy stron internetowych jest w trakcie implementacji.",
|
234 |
'history_in_progress': "Funkcja wy艣wietlania historii analiz jest w trakcie implementacji.",
|
235 |
'statistics_in_progress': "Funkcja wy艣wietlania statystyk jest w trakcie implementacji.",
|
236 |
-
'analysis_center_title': "Centrum Analizy Zagro偶e艅",
|
237 |
-
'select_analysis_type': "Wybierz typ analizy:",
|
238 |
-
'additional_info_header': "Dodatkowe Informacje",
|
239 |
-
'frequency_label': "Jak cz臋sto otrzymujesz wiadomo艣ci od tego numeru?",
|
240 |
-
'frequency_options': ('Pierwszy raz', 'Sporadycznie', 'Regularnie'),
|
241 |
-
'last_received_label': "Kiedy ostatnio otrzyma艂e艣 podobn膮 wiadomo艣膰?",
|
242 |
-
'last_received_options': ('Dzi艣', 'W ci膮gu ostatniego tygodnia', 'W ci膮gu ostatniego miesi膮ca', 'D艂u偶ej'),
|
243 |
-
'confidence_level_label': "Jak bardzo jeste艣 pewny, 偶e wiadomo艣膰 jest autentyczna?",
|
244 |
-
'confidence_level_help': "1: Bardzo ma艂o pewny, 5: Bardzo pewny",
|
245 |
-
'unexpected_label': "Czy otrzymanie tej wiadomo艣ci by艂o dla Ciebie niespodziewane?",
|
246 |
-
'unexpected_options': ('Tak', 'Nie'),
|
247 |
-
'additional_notes_label': "Dodatkowe uwagi lub informacje (opcjonalnie)",
|
248 |
-
'analyze_button': "Analizuj",
|
249 |
-
'enter_sms_content': "Wprowad藕 tre艣膰 SMS",
|
250 |
-
'sender_phone_number': "Numer telefonu nadawcy (z kodem kierunkowym kraju, np. +48123456789)",
|
251 |
-
'enter_email_content': "Wprowad藕 tre艣膰 e-maila",
|
252 |
-
'sender_email_address': "Adres e-mail nadawcy",
|
253 |
-
'enter_website_url': "Wprowad藕 adres URL strony do analizy"
|
254 |
-
},
|
255 |
-
'English': {
|
256 |
-
'sms_analysis_header': "SMS Analysis",
|
257 |
-
'email_analysis_header': "Email Analysis",
|
258 |
-
'website_analysis_header': "Website Analysis",
|
259 |
-
'history_header': "Analysis History",
|
260 |
-
'statistics_header': "Statistics",
|
261 |
-
'phone_info': "Phone number information:",
|
262 |
-
'country_label': "Country",
|
263 |
-
'operator_label': "Operator",
|
264 |
-
'unable_to_retrieve': "Unable to retrieve phone number information.",
|
265 |
-
'number_reported_warning': "Warning: This number has been previously reported as fraud!",
|
266 |
-
'red_flags_found': "The following potential red flags were found:",
|
267 |
-
'url_analysis_header': "URL Analysis",
|
268 |
-
'extracted_urls': "Extracted URLs from the message:",
|
269 |
-
'phishtank_warning': "The following URLs are flagged as phishing by PhishTank:",
|
270 |
-
'no_phishtank_threats': "No phishing threats detected by PhishTank.",
|
271 |
-
'api_key_missing': "API key missing for service: {}.",
|
272 |
-
'safe_browsing_warning': "The following URLs are flagged as unsafe by Google Safe Browsing:",
|
273 |
-
'no_safe_browsing_threats': "No threats detected by Google Safe Browsing.",
|
274 |
-
'analyzing_message': "Analyzing message using AI model...",
|
275 |
-
'message_analysis_header': "Message Content Analysis:",
|
276 |
-
'risk_assessment_header': "Fraud Risk Assessment:",
|
277 |
-
'user_recommendations_header': "User Recommendations:",
|
278 |
-
'remember_caution': "馃搶 Remember: Be cautious with messages from unknown senders.",
|
279 |
-
'report_button': "Report number as fraud",
|
280 |
-
'number_reported': "Number has been reported as fraud.",
|
281 |
-
'number_already_reported': "Number has already been reported as fraud.",
|
282 |
-
'invalid_number': "The provided phone number is invalid.",
|
283 |
-
'failed_to_parse': "Failed to parse the phone number. Ensure it is in the correct format.",
|
284 |
-
'email_analysis_in_progress': "Email analysis function is under development.",
|
285 |
-
'website_analysis_in_progress': "Website analysis function is under development.",
|
286 |
-
'history_in_progress': "Analysis history function is under development.",
|
287 |
-
'statistics_in_progress': "Statistics display function is under development.",
|
288 |
-
'analysis_center_title': "Threat Analysis Center",
|
289 |
-
'select_analysis_type': "Select analysis type:",
|
290 |
-
'additional_info_header': "Additional Information",
|
291 |
-
'frequency_label': "How often do you receive messages from this number?",
|
292 |
-
'frequency_options': ('First time', 'Occasionally', 'Regularly'),
|
293 |
-
'last_received_label': "When did you last receive a similar message?",
|
294 |
-
'last_received_options': ('Today', 'Within the last week', 'Within the last month', 'Longer ago'),
|
295 |
-
'confidence_level_label': "How confident are you that the message is authentic?",
|
296 |
-
'confidence_level_help': "1: Very unsure, 5: Very confident",
|
297 |
-
'unexpected_label': "Was receiving this message unexpected for you?",
|
298 |
-
'unexpected_options': ('Yes', 'No'),
|
299 |
-
'additional_notes_label': "Additional notes or information (optional)",
|
300 |
-
'analyze_button': "Analyze",
|
301 |
-
'enter_sms_content': "Enter SMS content",
|
302 |
-
'sender_phone_number': "Sender's phone number (with country code, e.g., +123456789)",
|
303 |
-
'enter_email_content': "Enter email content",
|
304 |
-
'sender_email_address': "Sender's email address",
|
305 |
-
'enter_website_url': "Enter website URL to analyze"
|
306 |
},
|
307 |
-
|
308 |
-
# Dodaj t艂umaczenia dla j臋zyka niemieckiego
|
309 |
-
# Add German translations here
|
310 |
-
}
|
311 |
}
|
312 |
-
return translations.get(language, translations['
|
313 |
|
314 |
def show_analysis(language):
|
315 |
st.title(get_translation('analysis_center_title', language))
|
316 |
-
|
317 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
318 |
get_translation('select_analysis_type', language),
|
319 |
-
|
320 |
-
get_translation('sms_analysis_header', language),
|
321 |
-
get_translation('email_analysis_header', language),
|
322 |
-
get_translation('website_analysis_header', language),
|
323 |
-
get_translation('history_header', language),
|
324 |
-
get_translation('statistics_header', language)
|
325 |
-
)
|
326 |
)
|
327 |
|
328 |
-
if
|
329 |
with st.form("sms_form"):
|
330 |
message = st.text_area(get_translation('enter_sms_content', language), height=150)
|
331 |
phone_number = st.text_input(get_translation('sender_phone_number', language))
|
332 |
|
333 |
-
|
334 |
-
frequency = st.selectbox(
|
335 |
-
get_translation('frequency_label', language),
|
336 |
-
get_translation('frequency_options', language)
|
337 |
-
)
|
338 |
-
last_received = st.selectbox(
|
339 |
-
get_translation('last_received_label', language),
|
340 |
-
get_translation('last_received_options', language)
|
341 |
-
)
|
342 |
-
confidence_level = st.slider(
|
343 |
-
get_translation('confidence_level_label', language),
|
344 |
-
1, 5, 3,
|
345 |
-
help=get_translation('confidence_level_help', language)
|
346 |
-
)
|
347 |
-
unexpected = st.radio(
|
348 |
-
get_translation('unexpected_label', language),
|
349 |
-
get_translation('unexpected_options', language)
|
350 |
-
)
|
351 |
-
additional_notes = st.text_area(get_translation('additional_notes_label', language), height=100)
|
352 |
|
353 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
354 |
|
@@ -358,19 +303,14 @@ def show_analysis(language):
|
|
358 |
elif not phone_number.strip():
|
359 |
st.error(get_translation('sender_phone_number', language))
|
360 |
else:
|
361 |
-
additional_info =
|
362 |
-
**{get_translation('frequency_label', language)}**: {frequency}
|
363 |
-
**{get_translation('last_received_label', language)}**: {last_received}
|
364 |
-
**{get_translation('confidence_level_label', language)}**: {confidence_level}/5
|
365 |
-
**{get_translation('unexpected_label', language)}**: {unexpected}
|
366 |
-
**{get_translation('additional_notes_label', language)}**: {additional_notes}
|
367 |
-
"""
|
368 |
analyze_sms(message, phone_number, additional_info, language)
|
369 |
|
370 |
-
elif
|
371 |
with st.form("email_form"):
|
372 |
email_content = st.text_area(get_translation('enter_email_content', language), height=150)
|
373 |
sender_email = st.text_input(get_translation('sender_email_address', language))
|
|
|
374 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
375 |
|
376 |
if submitted:
|
@@ -381,9 +321,10 @@ def show_analysis(language):
|
|
381 |
else:
|
382 |
analyze_email(email_content, sender_email, language)
|
383 |
|
384 |
-
elif
|
385 |
with st.form("website_form"):
|
386 |
url = st.text_input(get_translation('enter_website_url', language))
|
|
|
387 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
388 |
|
389 |
if submitted:
|
@@ -392,8 +333,32 @@ def show_analysis(language):
|
|
392 |
else:
|
393 |
analyze_website(url, language)
|
394 |
|
395 |
-
elif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
show_history(language)
|
397 |
|
398 |
-
elif
|
399 |
show_statistics(language)
|
|
|
1 |
+
# pages/Analysis.py
|
2 |
+
|
3 |
import streamlit as st
|
4 |
from utils.functions import (
|
5 |
get_phone_info,
|
|
|
190 |
st.write(get_translation('website_analysis_in_progress', language))
|
191 |
# Tutaj mo偶esz doda膰 logik臋 analizy stron internetowych
|
192 |
|
193 |
+
def analyze_image(image_file, language):
|
194 |
+
st.subheader(get_translation('image_analysis_header', language))
|
195 |
+
st.write(get_translation('image_analysis_in_progress', language))
|
196 |
+
# Tutaj mo偶esz doda膰 logik臋 analizy obraz贸w
|
197 |
+
|
198 |
+
def analyze_phone_number(phone_number, language):
|
199 |
+
st.subheader(get_translation('phone_number_analysis_header', language))
|
200 |
+
st.write(get_translation('phone_number_analysis_in_progress', language))
|
201 |
+
# Tutaj mo偶esz doda膰 logik臋 analizy numer贸w telefon贸w
|
202 |
+
|
203 |
def show_history(language):
|
204 |
st.subheader(get_translation('history_header', language))
|
205 |
st.write(get_translation('history_in_progress', language))
|
|
|
213 |
def get_translation(key, language):
|
214 |
translations = {
|
215 |
'Polish': {
|
216 |
+
'analysis_center_title': "Centrum Analizy",
|
217 |
+
'select_analysis_type': "Wybierz typ analizy:",
|
218 |
+
'sms_analysis': "Analiza SMS",
|
219 |
+
'email_analysis': "Analiza E-mail",
|
220 |
+
'website_analysis': "Analiza Strony Internetowej",
|
221 |
+
'phone_number_analysis': "Analiza Numeru Telefonu",
|
222 |
+
'image_analysis': "Analiza Obrazu",
|
223 |
+
'history': "Historia Analiz",
|
224 |
+
'statistics': "Statystyki",
|
225 |
'sms_analysis_header': "Analiza SMS",
|
226 |
'email_analysis_header': "Analiza E-mail",
|
227 |
'website_analysis_header': "Analiza Strony Internetowej",
|
228 |
+
'phone_number_analysis_header': "Analiza Numeru Telefonu",
|
229 |
+
'image_analysis_header': "Analiza Obrazu",
|
230 |
+
'enter_sms_content': "Wprowad藕 tre艣膰 SMS",
|
231 |
+
'sender_phone_number': "Numer telefonu nadawcy (z kodem kierunkowym kraju, np. +48123456789)",
|
232 |
+
'analyze_button': "Analizuj",
|
233 |
+
'enter_email_content': "Wprowad藕 tre艣膰 e-maila",
|
234 |
+
'sender_email_address': "Adres e-mail nadawcy",
|
235 |
+
'enter_website_url': "Wprowad藕 adres URL strony do analizy",
|
236 |
+
'upload_image': "Prze艣lij obraz do analizy",
|
237 |
+
'no_image_selected': "Prosz臋 wybra膰 obraz do analizy.",
|
238 |
+
'enter_phone_number': "Wprowad藕 numer telefonu do analizy",
|
239 |
+
'email_analysis_in_progress': "Funkcja analizy e-maili jest w trakcie implementacji.",
|
240 |
+
'website_analysis_in_progress': "Funkcja analizy stron internetowych jest w trakcie implementacji.",
|
241 |
+
'image_analysis_in_progress': "Funkcja analizy obraz贸w jest w trakcie implementacji.",
|
242 |
+
'phone_number_analysis_in_progress': "Funkcja analizy numer贸w telefon贸w jest w trakcie implementacji.",
|
243 |
'phone_info': "Informacje o numerze telefonu:",
|
244 |
'country_label': "Kraj",
|
245 |
'operator_label': "Operator",
|
|
|
263 |
'number_already_reported': "Numer zosta艂 ju偶 wcze艣niej zg艂oszony jako oszustwo.",
|
264 |
'invalid_number': "Podany numer telefonu jest nieprawid艂owy.",
|
265 |
'failed_to_parse': "Nie uda艂o si臋 przetworzy膰 numeru telefonu. Upewnij si臋, 偶e jest w poprawnym formacie.",
|
|
|
|
|
266 |
'history_in_progress': "Funkcja wy艣wietlania historii analiz jest w trakcie implementacji.",
|
267 |
'statistics_in_progress': "Funkcja wy艣wietlania statystyk jest w trakcie implementacji.",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
},
|
269 |
+
# Dodaj t艂umaczenia dla innych j臋zyk贸w, je艣li potrzebujesz
|
|
|
|
|
|
|
270 |
}
|
271 |
+
return translations.get(language, translations['Polish']).get(key, key)
|
272 |
|
273 |
def show_analysis(language):
|
274 |
st.title(get_translation('analysis_center_title', language))
|
275 |
+
|
276 |
+
analysis_options = [
|
277 |
+
get_translation('sms_analysis', language),
|
278 |
+
get_translation('email_analysis', language),
|
279 |
+
get_translation('website_analysis', language),
|
280 |
+
get_translation('phone_number_analysis', language),
|
281 |
+
get_translation('image_analysis', language),
|
282 |
+
get_translation('history', language),
|
283 |
+
get_translation('statistics', language)
|
284 |
+
]
|
285 |
+
|
286 |
+
selected_analysis = st.radio(
|
287 |
get_translation('select_analysis_type', language),
|
288 |
+
analysis_options
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
)
|
290 |
|
291 |
+
if selected_analysis == get_translation('sms_analysis', language):
|
292 |
with st.form("sms_form"):
|
293 |
message = st.text_area(get_translation('enter_sms_content', language), height=150)
|
294 |
phone_number = st.text_input(get_translation('sender_phone_number', language))
|
295 |
|
296 |
+
# Dodaj dodatkowe pola i informacje, je艣li potrzebujesz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
|
298 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
299 |
|
|
|
303 |
elif not phone_number.strip():
|
304 |
st.error(get_translation('sender_phone_number', language))
|
305 |
else:
|
306 |
+
additional_info = "" # Dodaj dodatkowe informacje, je艣li potrzebujesz
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
analyze_sms(message, phone_number, additional_info, language)
|
308 |
|
309 |
+
elif selected_analysis == get_translation('email_analysis', language):
|
310 |
with st.form("email_form"):
|
311 |
email_content = st.text_area(get_translation('enter_email_content', language), height=150)
|
312 |
sender_email = st.text_input(get_translation('sender_email_address', language))
|
313 |
+
|
314 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
315 |
|
316 |
if submitted:
|
|
|
321 |
else:
|
322 |
analyze_email(email_content, sender_email, language)
|
323 |
|
324 |
+
elif selected_analysis == get_translation('website_analysis', language):
|
325 |
with st.form("website_form"):
|
326 |
url = st.text_input(get_translation('enter_website_url', language))
|
327 |
+
|
328 |
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
329 |
|
330 |
if submitted:
|
|
|
333 |
else:
|
334 |
analyze_website(url, language)
|
335 |
|
336 |
+
elif selected_analysis == get_translation('phone_number_analysis', language):
|
337 |
+
with st.form("phone_number_form"):
|
338 |
+
phone_number = st.text_input(get_translation('enter_phone_number', language))
|
339 |
+
|
340 |
+
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
341 |
+
|
342 |
+
if submitted:
|
343 |
+
if not phone_number.strip():
|
344 |
+
st.error(get_translation('enter_phone_number', language))
|
345 |
+
else:
|
346 |
+
analyze_phone_number(phone_number, language)
|
347 |
+
|
348 |
+
elif selected_analysis == get_translation('image_analysis', language):
|
349 |
+
with st.form("image_form"):
|
350 |
+
image_file = st.file_uploader(get_translation('upload_image', language), type=['png', 'jpg', 'jpeg'])
|
351 |
+
|
352 |
+
submitted = st.form_submit_button(get_translation('analyze_button', language))
|
353 |
+
|
354 |
+
if submitted:
|
355 |
+
if image_file is None:
|
356 |
+
st.error(get_translation('no_image_selected', language))
|
357 |
+
else:
|
358 |
+
analyze_image(image_file, language)
|
359 |
+
|
360 |
+
elif selected_analysis == get_translation('history', language):
|
361 |
show_history(language)
|
362 |
|
363 |
+
elif selected_analysis == get_translation('statistics', language):
|
364 |
show_statistics(language)
|