Недавно я попытался загрузить видео с YouTube с помощью специальной программы, которая использует ytdl-core
в NPM. Однако, попробовав несколько URL-адресов, я получил 403 Forbidden
по всем из них.
Пример кода приведен ниже:
import { ytdl } from "ytdl-core";
import * as fs from "node:fs";
// ...
const info = ytdl.getInfo("some-video-id");
const stream = ytdl.downloadFromInfo(info, { filter: 'videoandaudio' });
fs.createWriteStream(`${makeSafe(info.videoDetails.title)}.mp4`);
YouTube недавно выпустил обновление, которое ломает работу большинства загрузчиков видео. Это изменение реализует новые требования, которые в случае неудачи приводят к ответу 403 Forbidden. К сожалению, поскольку ytdl-core
больше не поддерживается активно, рекомендуется переместить в @distube/ytdl-core . Разработчики этого пакета выпустили исправление в коммите 3df824e, которое исправляет проблему, присутствующую здесь. Чтобы переместить, выполните следующие действия:
ytdl-core
, чтобы предотвратить конфликты пакетов с одинаковыми именами.npm uninstall ytdl-core
@distube/ytdl-core
npm install @distube/ytdl-core
@distube/ytdl-core
.Из примера:
import { ytdl } from "@distube/ytdl-core";