2f98be7d shared you an app

ich habe nach der trnaksiotn den text eidtiert aber der originalre und nicht der editierte text wurden an airtable übertragen.... ds ist der code dazu: import streamlit as st import requests import dropbox import os from dotenv import load_dotenv # Lade Umgebungsvariablen aus der .env Datei load_dotenv() # Greife auf die Schlüssel aus den Umgebungsvariablen zu OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') AIRTABLE_API_KEY = os.getenv('AIRTABLE_API_KEY') AIRTABLE_BASE_ID = os.getenv('AIRTABLE_BASE_ID') AIRTABLE_TABLE_NAME = os.getenv('AIRTABLE_TABLE_NAME') DROPBOX_ACCESS_TOKEN = os.getenv('DROPBOX_ACCESS_TOKEN') # Initialize Dropbox client dbx = dropbox.Dropbox(DROPBOX_ACCESS_TOKEN) # Airtable URL airtable_url = f"https://api.airtable.com/v0/{AIRTABLE_BASE_ID}/{AIRTABLE_TABLE_NAME}" def upload_to_dropbox(file, dropbox_path): try: dbx.files_upload(file.read(), dropbox_path, mode=dropbox.files.WriteMode.overwrite) shared_link_metadata = dbx.sharing_create_shared_link_with_settings(dropbox_path) return shared_link_metadata.url except Exception as e: st.error(f"Fehler beim Hochladen der Datei zu Dropbox: {e}") return None # Funktion zur Transkription von Audio def transcribe_audio(file): headers = { "Authorization": f"Bearer {OPENAI_API_KEY}", } files = {'file': file, 'model': (None, 'whisper-1')} response = requests.post('https://api.openai.com/v1/audio/transcriptions', headers=headers, files=files) if response.status_code == 200: transcription = response.json().get('text', '') return transcription else: st.error("Fehler bei der Transkription der Audioaufnahme.") st.write("Detailed response:", response.json()) return None # Funktion zur Übersetzung von Text def translate_text(text): headers = { "Authorization": f"Bearer {OPENAI_API_KEY}", "Content-Type": "application/json" } data = { "model": "gpt-4", "messages": [ {"role": "system", "content": "Du bist ein Übersetzer."}, {"role": "user", "content": f'Übersetze den folgenden Text ins Deutsche: "{text}"'} ], "max_tokens": 1000 } response = requests.post('https://api.openai.com/v1/chat/completions', headers=headers, json=data) if response.status_code == 200: translation = response.json().get('choices', [])[0].get('message', {}).get('content', '').strip() return translation else: st.error("Fehler bei der Übersetzung des Textes.") st.write("Detailed response:", response.json()) return None # Initialize session state if 'transcription_value' not in st.session_state: st.session_state['transcription_value'] = "" if 'translation_value' not in st.session_state: st.session_state['translation_value'] = "" # Funktion zur Verarbeitung der Transkription und Übersetzung def handle_transcription_and_translation(file): transcription = transcribe_audio(file) if transcription: translation = translate_text(transcription) st.session_state['transcription_value'] = transcription st.session_state['translation_value'] = translation # Streamlit app st.title("Einreichung Schadensbericht") # Formular zur Eingabe with st.form("survey_form", clear_on_submit=False): datum_einmeldung = st.date_input("Datum der Einmeldung") datum_schaden = st.date_input("Datum des Schadens") eingereicht_von = st.selectbox("Eingereicht von", ["Mitarbeiter:in A", "Mitarbeiter:in B", "Mitarbeiter:in C"]) stelle_schaden = st.text_input("Stelle des Schadens") gefahr_vorhanden = st.selectbox("Gefahr vorhanden?", ["Ja", "Nein"]) bild_upload_1 = st.file_uploader("Bild Upload 1 (Totale)", type=["jpg", "jpeg", "png"]) bild_upload_2 = st.file_uploader("Bild Upload 2 (Details)", type=["jpg", "jpeg", "png"]) bild_upload_3 = st.file_uploader("Bild Upload 3 (weitere Details)", type=["jpg", "jpeg", "png"]) # Audio-Datei hochladen audio_file = st.file_uploader("Audio Datei hochladen (wav, m4a, mp3)", type=["wav", "m4a", "mp3"]) transcribe_button = st.form_submit_button("Transkribieren und Übersetzen") # Textfelder für Transkription und Übersetzung (editable by default) transcription_value = st.text_area("Transkription der Spracheingabe", value=st.session_state['transcription_value']) translation_value = st.text_area("Übersetzung Text", value=st.session_state['translation_value']) submit_button = st.form_submit_button(label="Einreichen") # Verarbeite die Transkription und Übersetzung if transcribe_button and audio_file: handle_transcription_and_translation(audio_file) if submit_button: try: # Bereite die Felderdaten vor fields = { "Datum der Einmeldung": datum_einmeldung.strftime('%Y-%m-%d') if datum_einmeldung else None, "Datum des Schadens": datum_schaden.strftime('%Y-%m-%d') if datum_schaden else None, "Eingereicht von": eingereicht_von, "Stelle des Schadens": stelle_schaden if stelle_schaden else "N/A", "Gefahr vorhanden?": gefahr_vorhanden if gefahr_vorhanden else "N/A", "Transkription der Spracheingabe": st.session_state.get('transcription_value', ""), "Übersetzung Text": st.session_state.get('translation_value', "") } st.write("Felder, die an Airtable gesendet werden:", fields) # Lade Dateien zu Dropbox hoch und erhalte URLs if bild_upload_1: dropbox_path_1 = f"/Wartungsumfrage/{bild_upload_1.name}" url_1 = upload_to_dropbox(bild_upload_1, dropbox_path_1) if url_1: fields["Bild Upload 1 (Totale)"] = [{"url": url_1}] if bild_upload_2: dropbox_path_2 = f"/Wartungsumfrage/{bild_upload_2.name}" url_2 = upload_to_dropbox(bild_upload_2, dropbox_path_2) if url_2: fields["Bild Upload 2 (Details)"] = [{"url": url_2}] if bild_upload_3: dropbox_path_3 = f"/Wartungsumfrage/{bild_upload_3.name}" url_3 = upload_to_dropbox(bild_upload_3, dropbox_path_3) if url_3: fields["Bild Upload 3 (weitere Details)"] = [{"url": url_3}] # Bereite das vollständige Datenpaket für Airtable vor data = { "fields": fields } st.write("Daten, die an Airtable gesendet werden:", data) # Sende die Daten an Airtable headers = { "Authorization": f"Bearer {AIRTABLE_API_KEY}", "Content-Type": "application/json" } response = requests.post(airtable_url, headers=headers, json=data) if response.status_code == 200: st.success("Datensatz erfolgreich zu Airtable hinzugefügt!") else: st.error("Fehler beim Hinzufügen des Datensatzes zu Airtable.") st.write("Detailed response:", response.json()) except Exception as e: st.error("Ein Fehler ist aufgetreten:") st.write(str(e)) nut musste ich den buttin transkriberen und üersetzen ein zweites mal klicken damit die transkirptn in der box unten angzeeigt wird..... mach so dass man den buttin nicht 2mal klickenmuss..

Please login to use this app.