Я запускаю скрипт для загрузки видео с помощью youtube-dl в python
def dl_videos():
while True:
try:
while True:
ydl_opts = {
'ignoreerrors': 'True',
'download_archive': 'archive',
'format': 'bestaudio/best',
'outtmpl': 'mp3downloads/%(playlist_title)s/%(title)s.%(ext)s',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '193',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
with open ('PlaylistOnly', 'r') as r:
d = r.readlines()
for line in d:
ydl.download([line])
time.sleep(24.0 * 60.0 * 60.0)
except(FileNotFoundError):
time.sleep(5)
continue
dl_videos()
, однако я хочу, чтобы этот скрипт обрабатывал разрывы соединения. поэтому, когда я прерываю соединение в середине программы, он полностью выключается с этой ошибкой: [0;31mERROR:[0m Unable to download webpage: <urlopen error [Errno -3] Temporary failure in name resolution> (caused by URLError(gaierror(-3, 'Temporary failure in name resolution')))
Примечание: ошибка возникает только в определенный момент процесса youtube-dl, если онлайн-соединение in lost
Я бы хотел, чтобы программа немного подождала со временем, а затем повторила попытку модуля, но я не уверен, как вообще справиться с этой ошибкой. Идентификатор, если это ошибка особого типа c, которую я могу обработать с исключением. Любая помощь приветствуется
-Edit- (решение)
def dl_videos():
while True:
try:
while True:
ydl_opts = {
'ignoreerrors': 'True',
'download_archive': 'archive',
'format': 'bestaudio/best',
'outtmpl': 'mp3downloads/%(playlist_title)s/%(title)s.%(ext)s',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '193',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
with open ('PlaylistOnly', 'r') as r:
d = r.readlines()
for line in d:
ydl.download([line])
#Checks if there's a connection to youtube.com, if there's none it loops back before the "freeze" which my dumb a didnt realize was just the next time.sleep function
if assets.connect() == False:
time.sleep(10)
continue
time.sleep(24.0 * 60.0 * 60.0)
except(FileNotFoundError):
time.sleep(5)
continue
dl_videos()