2012-12-27 4 views
9

Я начал использовать v3 авиалинии YouTube на устройстве Android, используя клиентскую библиотеку java. Некоторые видео, которые меня интересуют, имеют транскрипты, которые я могу получить на веб-интерфейсе (например, образовательные видео). Есть ли способ получить доступ к транскриптам, если они есть, используя v3 apis?Как получить «транскрипт» в youtube-api v3

Благодаря

+0

Вы говорите о сервере api или клиенте api? –

ответ

6

Может быть, я ошибаюсь, но я не думаю, что есть еще документированный способ получить дорожку субтитров через v3 из API. Если вы аутентичности с oauth2, однако, аутентификация также будет хорошо для v2 из API, так что вы можете сделать быстрый вызов на этот канал:

http://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captiondata/[CAPTION TRACKID] 

, чтобы получить данные, которые вы хотите. Чтобы получить список возможных идентификаторов заголовка дорожки с v2 из API, вы получаете доступ этого канала:

https://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captions 

Этого запрос подачи также принимает некоторые дополнительные параметры, включая язык, Макс результаты и т.д. Для получения более подробной информации, а также с образцом, который показывает возвращаемый формат списка дорожек субтитров, обратитесь к документации на https://developers.google.com/youtube/2.0/developers_guide_protocol_captions#Retrieve_Caption_Set

+1

Спасибо за ваш ответ. Как получить тэг [caption trackid]? Я не вижу этого в v3 apis либо .... –

+1

@AliNaddaf - Ответ отредактирован, чтобы ответить на ваш комментарий. – jlmcdonald

+0

Этот API будет удален. Как заменить v3? – Victor

22

у меня была такая же проблема с этим ... и провел около недели в поисках решения, пока я не ударил этого:

https://stackoverflow.com/questions/10036796/how-to-extract-subtitles-from-youtube-videos

Просто выполните запрос GET: http://video.google.com/timedtext?lang= {LANG} & v = {VIDEOID} Вам не нужны никакие api/oauth/etc. для доступа к этому.

+0

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

+1

@streetlogics здесь: http://video.google.com/timedtext?lang=en&v=yJXTXN4xrI8 –

+1

Работал отлично для меня. Отличная работа! –

3

С API v3 вы можете сначала захватить доступные транскриптов с сниппета:

https://www.googleapis.com/youtube/v3/captions?videoId=U1e2VNtEqm4&part=snippet&key=(my_api_key):

{ 
"kind": "youtube#captionListResponse", 
"etag": "\"DsOZ7qVJA4mxdTxZeNzis6uE6ck/aGHflncRxq1Uz6m1akhrOLUWUqU\"", 
"items": [ 
    { 
    "kind": "youtube#caption", 
    "etag": "\"DsOZ7qVJA4mxdTxZeNzis6uE6ck/IC7rNKkn3SQNdovFwR6fEabUYnY\"", 
    "id": "TqXDnlamg84o4bX0q2oaHz4nfWZdyiZMOrcuWsSLyPc=", 
    "snippet": { 
    "videoId": "U1e2VNtEqm4", 
    "lastUpdated": "2016-01-25T21:50:27.142Z", 
    "trackKind": "standard", 
    "language": "en-GB", 
    "name": "", 
    "audioTrackType": "unknown", 
    "isCC": false, 
    "isLarge": false, 
    "isEasyReader": false, 
    "isDraft": false, 
    "isAutoSynced": false, 
    "status": "serving" 
    } 
    }, 
    { 
    "kind": "youtube#caption", 
    "etag": "\"DsOZ7qVJA4mxdTxZeNzis6uE6ck/5UP1qPkmq6mzTUaEVnFC8WqjFgU\"", 
    "id": "TqXDnlamg84o4bX0q2oaHw_Y53ilUWv6vMFbk0RL3XY=", 
    "snippet": { 
    "videoId": "U1e2VNtEqm4", 
    "lastUpdated": "2016-01-25T21:55:07.481Z", 
    "trackKind": "standard", 
    "language": "en-US", 
    "name": "", 
    "audioTrackType": "unknown", 
    "isCC": false, 
    "isLarge": false, 
    "isEasyReader": false, 
    "isDraft": false, 
    "isAutoSynced": false, 
    "status": "serving" 
    } 
    } 
] 
} 

, а затем выбрать расшифровку вы хотите:

https://www.googleapis.com/youtube/v3/captions/id?id=TqXDnlamg84o4bX0q2oaHz4nfWZdyiZMOrcuWsSLyPc=

или

https://www.googleapis.com/youtube/v3/captions/TqXDnlamg84o4bX0q2oaHz4nfWZdyiZMOrcuWsSLyPc=

, в этот момент вам необходимо предоставить ключ авторизации. По-видимому, простого ключа недостаточно. Возможно, потому что:

Влияние квоты: призыв к этому методу имеет стоимость квоты около 200 единиц.

Обратите внимание на небольшую разницу в URL-адресах (/caption/ против /caption?).

Вся прекрасная документация здесь: https://developers.google.com/youtube/v3/docs/captions

+0

не может выбрать транскрипт с использованием идентификатора, отображающего ошибку 404 «Невозможно найти дорожку с надписью. Проверьте значение параметра id, чтобы убедиться в его правильности». – Abhishek

4

Heres некоторый код, который я написал, который захватывает все дорожки с субтитрами из любого видео YouTube без необходимости использовать API. Просто подключите URL-адрес видео в переменной $video_url.

// get video id from url 
$video_url = 'https://www.youtube.com/watch?v=kYX87kkyubk'; 
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $video_url, $matches); 

// get video info from id 
$video_id = $matches[0]; 
$video_info = file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$video_id); 
parse_str($video_info, $video_info_array); 

if (isset($video_info_array['caption_tracks'])) { 
    $tracks = explode(',', $video_info_array['caption_tracks']); 

    // print info for each track (including url to track content) 
    foreach ($tracks as $track) { 
     parse_str($track, $output); 
     print_r($output); 
    } 
} 
+1

Я создал код, основанный на вашей логике титров caption, если вы хотите, мы можем добавить дополнительную поддержку вместе, я добавил, например, данные о переводе. https://github.com/jamesjara/php-transcript-youtube-api-and-xml-parser/blob/master/example/test.php – jamesjara

Смежные вопросы