如何在youtube-api v3中获取"transcript"



我已经使用Java客户端库在Android设备上使用YouTube API的V3。我感兴趣的一些视频具有可以在网络界面上访问的成绩单(例如教育视频)。是否有一种方法可以使用V3 API访问成绩单?

谢谢

我遇到了同样的问题...花了一个星期的时间寻找解决方案,直到我达到这一点:

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

只需在以下方面做一个get请求:http://video.google.com/timedtext?lang= {lang}& v = {videoid}您不需要任何API/OAUTH/等。要访问此。

使用API V3您可以首先使用摘要:

抓住可用的成绩单

https://www.googleapis.com/youtube/v3/captions?videoid = u1e2vnteqm4&part=snippet& amkekekekekekekekekekekekekey=(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=tqxdnlamg84o4bx0q2oahz4nnfwzdyizmorcuwsslypc=

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

此时您需要提供授权密钥。显然,一个简单的密钥还不够。可能是因为:

配额影响:对此方法的调用的配额成本约为200个单位。

请注意URL的轻微差异(/caption//caption?)。

所有可爱的文档都在这里:https://developers.google.com/youtube/v3/docs/captions

我可能是错误的,但是我认为还没有有记录的方法可以通过API的V3获取标题曲目。但是,如果您对OAuth2进行身份验证,则您的身份验证也适用于API的V2,因此您可以快速致电此提要:

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

获取所需的数据。要通过API的V2检索可能的字幕轨道ID列表,请访问此提要:

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

该提要请求还接受一些可选的参数,包括语言,最大值等。有关更多详细信息,以及显示标题轨道列表返回格式的示例,请参见https://developers的文档。google.com/youtube/2.0/developers_guide_protocol_captions#retrieve_caption_setipe

我写了一些代码,这些代码无需使用API即可从任何YouTube视频中获取所有字幕曲目。只需将视频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);
    }
}

相关内容

  • 没有找到相关文章

最新更新