Сделал бота, который маленькие видео с ютуба качает.
Пытаюсь привязать к нему
ipv6.
Использую пакет для скачивания видео
yt-dlp.
На сколько я понял, у данного пакета есть функции привязки ipv6, но я пока не понял как, знающие может тут есть и подскажут.
from yt_dlp import YoutubeDL
async def download(self, limit=1):
self.conn.row_factory = sqlite3.Row
cursor = self.conn.cursor()
query = "SELECT * FROM videos WHERE is_downloaded=0 ORDER BY created_at ASC"
if limit is not None:
query += " LIMIT {}".format(limit)
cursor.execute(query)
rows = cursor.fetchall()
if len(rows) == 0:
return
self.log("DOWNLOAD STARTED")
try:
ydl_opts = {
'format': 'mp4',
'outtmpl': f'{self.download_path}/%(id)s.mp4',
'source_address': '1a02:5f00:5:1::9fd0' # подставляем ipv6
}
ydl = YoutubeDL(ydl_opts)
for i in rows:
try:
res = ydl.download('https://youtube.com/watch?v=' + i['video_id'], download=True)
print("По ссылке видео доступно.")
except YoutubeDL.DownloadError:
print("По ссылке видео удалено.")
self.conn.execute("UPDATE videos SET is_downloaded=1, filename=? WHERE is_downloaded=0 AND id=?", (f'{self.download_path}/{i["video_id"]}.mp4', i['id'],))
self.conn.commit()
time.sleep(4)
except (NetworkError, sqlite3.Error, ConnectionError) as e:
self.log(str(e), is_exception=True)
self.log("DOWNLOAD FINISHED")
Добавил я в оптионсы: 'source_address': '1a02:5f00:5:1::9fd0'
Но результат но пока не качает видео, видимо не так сделал.