Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -17,14 +17,6 @@ col1, col2 = st.columns([4, 1])
|
|
| 17 |
with col1:
|
| 18 |
youtube_url = st.text_input('Enter YouTube video URL')
|
| 19 |
|
| 20 |
-
with col2:
|
| 21 |
-
if st.button('์๋ก๊ณ ์นจ'):
|
| 22 |
-
st.session_state.clear() # ์ธ์
์ด๊ธฐํ
|
| 23 |
-
st.experimental_rerun() # ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ฌ์คํ
|
| 24 |
-
|
| 25 |
-
if 'confirmed' not in st.session_state:
|
| 26 |
-
st.session_state.confirmed = False
|
| 27 |
-
|
| 28 |
def fetch_video_info(youtube_url):
|
| 29 |
ydl_opts = {'nocheckcertificate': True}
|
| 30 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
|
@@ -42,16 +34,16 @@ def get_available_formats(info_dict):
|
|
| 42 |
formats[resolution] = f"{resolution} - {filesize_mb} MB"
|
| 43 |
return list(formats.values())
|
| 44 |
|
|
|
|
| 45 |
if st.button('ํ์ธ'):
|
| 46 |
if youtube_url:
|
| 47 |
try:
|
| 48 |
-
#
|
| 49 |
if 'youtube_url' in st.session_state and st.session_state.youtube_url != youtube_url:
|
| 50 |
st.session_state.confirmed = False # ์ธ์
์ด๊ธฐํ
|
| 51 |
st.session_state.pop('info_dict', None)
|
| 52 |
st.session_state.pop('thumbnail_url', None)
|
| 53 |
st.session_state.pop('formats', None)
|
| 54 |
-
st.session_state.pop('youtube_url', None)
|
| 55 |
|
| 56 |
st.session_state.youtube_url = youtube_url
|
| 57 |
info_dict = fetch_video_info(youtube_url)
|
|
@@ -64,7 +56,7 @@ if st.button('ํ์ธ'):
|
|
| 64 |
else:
|
| 65 |
st.warning('Please enter a valid YouTube video URL')
|
| 66 |
|
| 67 |
-
if st.session_state.confirmed:
|
| 68 |
st.image(st.session_state.thumbnail_url, caption='Video Thumbnail', use_column_width=True)
|
| 69 |
|
| 70 |
# ํด์๋ ์ ํ
|
|
@@ -98,5 +90,10 @@ if st.session_state.confirmed:
|
|
| 98 |
file_name='downloaded_video.mp4',
|
| 99 |
mime='video/mp4'
|
| 100 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
except Exception as e:
|
| 102 |
st.error(f"An error occurred during download: {e}")
|
|
|
|
| 17 |
with col1:
|
| 18 |
youtube_url = st.text_input('Enter YouTube video URL')
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
def fetch_video_info(youtube_url):
|
| 21 |
ydl_opts = {'nocheckcertificate': True}
|
| 22 |
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
|
|
|
| 34 |
formats[resolution] = f"{resolution} - {filesize_mb} MB"
|
| 35 |
return list(formats.values())
|
| 36 |
|
| 37 |
+
# "ํ์ธ" ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฒ๋ฆฌํ ๋ก์ง
|
| 38 |
if st.button('ํ์ธ'):
|
| 39 |
if youtube_url:
|
| 40 |
try:
|
| 41 |
+
# ์ธ์
์ํ ์ด๊ธฐํ ๋ฐ URL ๋ณ๊ฒฝ ํ์ธ
|
| 42 |
if 'youtube_url' in st.session_state and st.session_state.youtube_url != youtube_url:
|
| 43 |
st.session_state.confirmed = False # ์ธ์
์ด๊ธฐํ
|
| 44 |
st.session_state.pop('info_dict', None)
|
| 45 |
st.session_state.pop('thumbnail_url', None)
|
| 46 |
st.session_state.pop('formats', None)
|
|
|
|
| 47 |
|
| 48 |
st.session_state.youtube_url = youtube_url
|
| 49 |
info_dict = fetch_video_info(youtube_url)
|
|
|
|
| 56 |
else:
|
| 57 |
st.warning('Please enter a valid YouTube video URL')
|
| 58 |
|
| 59 |
+
if 'confirmed' in st.session_state and st.session_state.confirmed:
|
| 60 |
st.image(st.session_state.thumbnail_url, caption='Video Thumbnail', use_column_width=True)
|
| 61 |
|
| 62 |
# ํด์๋ ์ ํ
|
|
|
|
| 90 |
file_name='downloaded_video.mp4',
|
| 91 |
mime='video/mp4'
|
| 92 |
)
|
| 93 |
+
|
| 94 |
+
# ์ถ์ถ๋ ์์ ์ ๋ณด ์ถ๋ ฅ
|
| 95 |
+
st.write(f"**์ ๋ชฉ:** {st.session_state.info_dict['title']}")
|
| 96 |
+
st.write(f"**์ฑ๋๋ช
:** {st.session_state.info_dict['uploader']}")
|
| 97 |
+
st.write(f"**์
๋ก๋ ๋ ์ง:** {st.session_state.info_dict['upload_date']}")
|
| 98 |
except Exception as e:
|
| 99 |
st.error(f"An error occurred during download: {e}")
|