Невозможно загрузить скрытые субтитры в Youtube API v3

Я использую пример кода PHP, приведенный в Youtube API v3: https://developers.google.com/youtube/v3/docs/captions/download , чтобы загрузить субтитры от сторонних общедоступных видео YouTube в моем веб-приложении, т.е. я НЕ загружал контент на Youtube.

Я могу получить доступ к списку дорожек субтитров, но не могу загрузить субтитры, используя идентификатор дорожки субтитров из полученного списка.

Ошибка, которая появляется при попытке СКАЧАТЬ:

Ошибка при вызове GET https://www.googleapis.com/youtube/v3/captions/Lw0e5xDNU17GFafOl8DcyeOtwzWJTf9V?tfmt=srt&alt=media: (404) Не найдено

(Я попытался удалить tfmt (необязательный параметр), но все равно выдает ошибку.)

Но ошибка отличается при попытке УДАЛИТЬ подписи:

Ошибка при вызове DELETE https://www.googleapis.com/youtube/v3/captions?id=Lw0e5xDNU17GFafOl8DcyeOtwzWJTf9V: (403) Запрещено

Поэтому кажется, что captions.download НЕ запрещен для пользователей, кроме владельца (точно так же, как captions.list НЕ запрещен), и поэтому я хотел бы использовать эти данные для своего веб-приложения.

Любая помощь принимается с благодарностью.

Спасибо,

Нихил


person Nikhil Kulkarni    schedule 28.05.2015    source источник
comment
Попробуйте использовать формат URL-адреса для вызова удаления с идентификатором в качестве параметра запроса вместо того, который вы используете. Их документация по URL-адресу получения может быть неправильной. Также ниже упоминается, что ID является параметром запроса.   -  person Brian from state farm    schedule 28.05.2015
comment
Я хорошо заметил, что они упоминают идентификатор в качестве параметра запроса в документации. Все еще пробовал, что Брайан, и получил ошибку, например Неподдерживаемый формат вывода. Точное сообщение об ошибке будет обновлено здесь через некоторое время.   -  person Nikhil Kulkarni    schedule 29.05.2015
comment
Вы нашли какое-либо решение по этой проблеме, прямо сейчас я получаю такую ​​​​же проблему, и я не мог с ней справиться.   -  person manish1706    schedule 03.01.2018


Ответы (2)


Я только что попробовал указанный вами URL-адрес в браузере и в проводнике API, и в обоих случаях я получил 401, когда у меня не было токена oAuth, и 403, когда у меня был токен доступа (поскольку я не владелец), поэтому конечные точки действуют как задумано; согласно документации, для загрузки субтитров требуется согласие oAuth от владельца видео.

Возможно, если вместо этого вы получаете 404, проблема в библиотеке PHP?

person jlmcdonald    schedule 29.05.2015
comment
В методах удаления, вставки или загрузки ожидается ошибка 403, если вы не являетесь владельцем, но я уверен, что вы не получите ошибку 403 Forbidden при использовании заголовков списка. Точно так же я ожидаю, что download.captions будут работать и для тех, кто не является владельцем. Кроме того, в документации нигде не сказано, что субтитры может загружать только владелец. Единственная проблема, о которой я мог подумать в библиотеке PHP (Google/Service/Youtube.php), связана с передачей идентификатора в качестве параметра пути. Я попытался изменить его на запрос, но все равно возникла ошибка, говорящая о неподдерживаемом формате вывода. Затем я удалил параметр tmft=srt, но он все равно не работает. - person Nikhil Kulkarni; 29.05.2015
comment
В документации именно это и сказано о загрузке титров: Этот запрос требует авторизации по крайней мере в одной из следующих областей (подробнее об аутентификации и авторизации). googleapis.com/auth/youtube.force-ssl – это область применения который дает приложению согласие на управление учетной записью пользователя YouTube, тем самым указывая, что только владелец видео может сделать запрос. Более того, если вы проверите в проводнике API, вы увидите, что если вы авторизуетесь на видео, которое у вас есть, вы получите 200. Обратите внимание, что это также было поведение в версии 2 API. - person jlmcdonald; 29.05.2015
comment
После просмотра этих ответов на вопросы о stackoverflow показалось, что подписи могут могут быть загружены третьей стороной (т.е. не владельцами) также в v3 API. Та же строка, которую вы упомянули, также существует в разделе подписей к списку здесь: developers.google. com/youtube/v3/docs/captions/list , но это работает нормально. Также не появляется ошибка 403, как в методе удаления, что дает дополнительную надежду на то, что субтитры будут загружены третьей стороной. - person Nikhil Kulkarni; 29.05.2015
comment
Вопрос SO, на который вы ссылаетесь, ясно демонстрирует, что пользователь не смог загрузить субтитры. В обновлении Ибрагима к его ответу просто говорится, что V3 наконец-то получил конечную точку субтитров, а не то, что пользователи могут загружать их для видео, которыми они не владеют. По сути, конечная точка загрузки работает точно так, как описано в документации; поэтому бага нет (с другой стороны, в списке endpoint есть, потому что по документации он тоже должен требовать авторизацию). Вы всегда можете отправить запрос функции, поскольку, безусловно, есть варианты использования подписей, но пока это не подходит. - person jlmcdonald; 29.05.2015

Я нашел другой способ получить доступ к данным заголовков любого видео на YouTube. Код написан на Руби.

Чтение расшифровки (титров) любого общедоступного видео на Youtube

Отлично работает, мне просто нужно найти способ интегрировать это с моим веб-приложением.

person Nikhil Kulkarni    schedule 11.06.2015