Python, пакет yt-dlp, скачивание видео с ютуба, не качает

Цена договорная
29 февраля 2024, 07:52 • 3 отклика • 60 просмотров
Кто шарит в данном пакете yt-dlp.

Вопрос, а сколько ботов можно запустить на одном сервере с данным пакетом yt-dlp?

Как можно направить скачивание через ipv6.

Пробовал такое:
ydl_opts = {
'format': 'mp4',
'outtmpl': f'{self.download_path}/%(id)s.mp4',
'source_address': '1a05:5f00:4:1::9fd0',
'force_ipv6': True
}
--------------------------------------------

Перестал
работать, не качает видео, обновил до последний версии, ошибку не
пишет, просто не качает, не могу понять в чем проблема.

Если в
консоле пишу команду yt-dlp "тут ссылка на видео", качает без проблем, и
видео есть в корне скрипта, я сначала думал, что бан по ip, но нет, раз
качает на прямую по ссылке, тут дело в скрипте, скрипт почему-то не
качает.

Может тут, что не так.


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': '1a05:5f00:7:1::9fd1',
'force_ipv6': True
}
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")