Я пытаюсь использовать curl для пакетной загрузки на YouTube, следуя спецификации API здесь; Короче говоря, для этого требуется многостраничный запрос POST с метаданными в формате XML и Content-Type application/atom+xml; charset=UTF-8
, за которыми следуют сами видеоданные.
Моя текущая командная строка (извлечение метаданных из upl.xml и видео из upl.mkv) выглядит примерно так:
curl -s -F "[email protected]" -F "[email protected]" -H 'GData-Version: 2' -H 'Authorization: GoogleLogin auth=<AUTH>' -H 'Slug: upl.mkv' -H 'X-GData-Key: key=<KEY>' http://uploads.gdata.youtube.com/feeds/api/users/default/uploads
Когда я проверяю фактический запрос, отправляемый с --trace
, похоже, что оба файла отправляются в правильном порядке, но для Content-Type метаданных установлено значение application/octet-stream
; загрузка завершена, как ожидалось, но YouTube отказывается обрабатывать видео.
Если я попытаюсь отправить upl.xml с --data
, --data-ascii
, --form-string
и т.д., я просто получаю множество других ошибок, что заставляет меня поверить в неправильный Content-Type. Если я игнорирую метаданные и просто отправляю видеофайл, он отлично работает, но, к сожалению, это не решает мою проблему.
Я что-то пропустил здесь, и если это невозможно сделать, не нарушая libcurl?