import gradio as gr import requests # requests 라이브러리 추가 def execute_get_request(token, virtual): """Generates a GET request URL for Blynk API and executes the request.""" url = "https://blynk.cloud/external/api/get?token=" + token + '&' + virtual try: response = requests.get(url) response.raise_for_status() # 에러 발생 시 HTTPError 예외 발생 response_text = response.text # 응답 텍스트 추출 except requests.exceptions.RequestException as e: response_text = f"요청 실패: {e}" # 에러 메시지 return url, response_text # URL과 응답 텍스트 반환 def create_push_url(token, virtual,value): """Generates a PUSH request URL for Blynk API.""" url = "https://blynk.cloud/external/api/update?token=" + token + '&' + virtual + '=' + str(value) try: response = requests.get(url) response.raise_for_status() # 에러 발생 시 HTTPError 예외 발생 response_text = response.text # 응답 텍스트 추출 except requests.exceptions.RequestException as e: response_text = f"요청 실패: {e}" # 에러 메시지 return url with gr.Blocks() as demo: gr.Markdown("# Blynk 쉽게 사용하는 웹앱") with gr.Row(): with gr.Column(): gr.Markdown("### 값 가져오기 (GET)") # Section title for GET get_token_textbox = gr.Textbox(label='토큰 값 (Token Value):') # Input for GET Token get_virtual_pin_radio = gr.Radio(['V0','V1','V2','V3','V4'], label='Virtual Pin 선택 (Virtual Pin Selection):') # Radio for GET Virtual Pin generate_get_url_button = gr.Button("GET 요청 실행 (Execute GET Request)") # Button to trigger GET request (버튼 이름 변경) get_url_output_textbox = gr.Textbox(label='생성된 GET URL (Generated GET URL):',show_copy_button=True) # Output textbox for GET URL get_response_textbox = gr.Textbox(label='GET 응답 (GET Response):',show_copy_button=True) # 응답 텍스트를 보여줄 텍스트 박스 추가 generate_get_url_button.click( fn=execute_get_request, # 함수 이름 변경 (요청 실행 함수로 변경) inputs=[get_token_textbox, get_virtual_pin_radio], outputs=[get_url_output_textbox, get_response_textbox] # outputs에 응답 텍스트 박스 추가 ) with gr.Column(): gr.Markdown("### 값 설정 (PUSH)") # Section title for PUSH push_token_textbox = gr.Textbox(label='토큰 값 (Token Value):') # Input for PUSH Token push_virtual_pin_radio = gr.Radio(['V0','V1','V2','V3','V4'], label='Virtual Pin 선택 (Virtual Pin Selection):') # Radio for PUSH Virtual Pin push_value = gr.Slider(1, 255, label='Virtual Pin 값 선택') generate_push_url_button = gr.Button("PUSH URL 생성 (Generate PUSH URL)") # Button to trigger PUSH URL generation push_url_output_textbox = gr.Textbox(label='생성된 PUSH URL (Generated PUSH URL):',show_copy_button=True) # Output textbox for PUSH URL generate_push_url_button.click( fn=create_push_url, # PUSH URL 생성 함수는 그대로 사용 inputs=[push_token_textbox, push_virtual_pin_radio,push_value], outputs=push_url_output_textbox ) demo.launch()