Генератор команд yt-dlp для X (Twitter)
Соберите команду yt-dlp для видео в X — с предсказуемыми именами файлов и опциями, которые требует чувствительное содержимое.
Что учесть с X
Работают адреса и x.com, и twitter.com. То, что в X называют GIF, на самом деле короткие видео MP4, поэтому они скачиваются как любое другое видео; если нужен настоящий GIF, конвертируйте потом.
Публикации с чувствительным содержимым требуют авторизованной сессии с включённой соответствующей настройкой. Шаблон по умолчанию называет файлы по автору и id публикации, так что папка, полная таких файлов, остаётся обозримой.
X несколько раз менял поверхность своего API, и практическое следствие в том, что исправления extractor приезжают в обновлениях yt-dlp за считаные дни — установки старше пары недель и есть то место, где живут большинство репортов «X сломался». Обновитесь, прежде чем отлаживать: yt-dlp -U. Гостевой доступ появляется и исчезает; когда его отбирают, рабочая дорога — залогиненная сессия с cookies, и это же единственная дорога к чувствительному контенту.
В ветках и цитирующих постах URL путаются. Твит с видео встраивает его; та же видеозапись во вкладке медиа профиля — отдельный элемент. Для целого аккаунта URL вкладки медиа забирает всё, что публиковалось с медиа, с разбивкой на страницы, а файл архива плюс продолжение после ошибок разбирается с удалёнными постами, которые активный аккаунт неизбежно накапливает. Скачивание по URL поиска здесь намеренно не поддерживается: результаты дрейфуют между запросами, и архив по движущейся выдаче бессмыслен.
X отдаёт видео как HLS-фрагменты с MP4-фолбэком в большинстве случаев, поэтому объединения часты, и ffmpeg — первая зависимость для проверки. Посты «GIF» — исключение, которое стоит знать: они приходят MP4, как всё остальное, а конвертация в настоящий GIF — работа для ffmpeg, не для yt-dlp — зацикленный WebM обычно ближе к тому, что имел в виду отправитель.
Посты с возрастным ограничением и чувствительным контентом — жёсткая стена: настройка живёт в аккаунте, а не в команде. Один раз войдите через браузер, включите настройку чувствительного контента, передайте cookies — и всё работает — обхода без cookies не существует, потому что X проверяет сессию на сервере. Удалённые посты ведут себя как везде: пропало — пропало, а зеркала, хранившие копии, закрылись много лет назад.