Spaces:
Sleeping
Sleeping
import gradio as gr | |
from googleapiclient.discovery import build | |
from google_auth_oauthlib.flow import InstalledAppFlow | |
# YouTube API ์ธ์ฆ ๋ฐ ํด๋ผ์ด์ธํธ ์ด๊ธฐํ | |
def authenticate_youtube(): | |
flow = InstalledAppFlow.from_client_secrets_file('client_secrets.json', ['https://www.googleapis.com/auth/youtube.force-ssl']) | |
creds = flow.run_local_server(port=0) | |
return build('youtube', 'v3', credentials=creds) | |
# ํ์ฌ ๋์์ ์ค๋ช ๊ฐ์ ธ์ค๊ธฐ | |
def get_video_description(video_id): | |
youtube = authenticate_youtube() | |
request = youtube.videos().list(part='snippet', id=video_id) | |
response = request.execute() | |
if not response['items']: | |
return 'Video not found.' | |
video = response['items'][0] | |
snippet = video['snippet'] | |
return snippet['description'] | |
# ๋์์ ์ค๋ช ์ ๋ฐ์ดํธ | |
def update_video_description(video_id, additional_text): | |
youtube = authenticate_youtube() | |
request = youtube.videos().list(part='snippet', id=video_id) | |
response = request.execute() | |
if not response['items']: | |
return 'Video not found.' | |
video = response['items'][0] | |
snippet = video['snippet'] | |
snippet['description'] += f"\n\n{additional_text}" | |
youtube.videos().update(part='snippet', body={'id': video_id, 'snippet': snippet}).execute() | |
return 'Successfully updated the video description.' | |
# Gradio ์ธํฐํ์ด์ค ์ค์ | |
with gr.Blocks() as app: | |
gr.Markdown("YouTube Video Description Manager") | |
with gr.Row(): | |
video_id_input = gr.Textbox(label="Video ID") | |
get_desc_button = gr.Button("Get Description") | |
description_output = gr.Textbox(label="Current Description", lines=4, interactive=False) | |
additional_text_input = gr.Textbox(label="Additional Text to Add", lines=4) | |
update_button = gr.Button("Update Description") | |
result_output = gr.Textbox(label="Result", interactive=False) | |
get_desc_button.click(fn=get_video_description, inputs=video_id_input, outputs=description_output) | |
update_button.click(fn=update_video_description, inputs=[video_id_input, additional_text_input], outputs=result_output) | |
app.launch() | |