如何通过Youtube Go API实现类似curl请求获取视频上传日期?
用Go调用YouTube API获取视频上传日期的解决方案
别担心,我来帮你理清这个问题!你要实现的操作对应YouTube Data API的Videos.list方法,在Go的SDK里就是Videos.List函数,它会直接返回包含VideoSnippet的视频对象,其中就有你需要的上传日期字段。
步骤1:安装依赖
首先确保你已经安装了YouTube的Go SDK:
go get google.golang.org/api/youtube/v3
步骤2:完整代码示例
下面是可以直接运行的代码,替换你的API密钥和目标视频ID即可:
package main import ( "context" "fmt" "log" "google.golang.org/api/option" "google.golang.org/api/youtube/v3" ) func main() { // 替换为你的Google API密钥(需要启用YouTube Data API v3) apiKey := "YOUR_GOOGLE_API_KEY" // 替换为你要查询的视频ID(比如视频URL里?v=后面的字符串) targetVideoID := "dQw4w9WgXcQ" // 初始化YouTube服务客户端 ctx := context.Background() youtubeService, err := youtube.NewService(ctx, option.WithAPIKey(apiKey)) if err != nil { log.Fatalf("创建YouTube服务客户端失败: %v", err) } // 构造API请求:指定要获取的资源部分为"snippet",传入视频ID videosCall := youtubeService.Videos.List([]string{"snippet"}).Id(targetVideoID) // 执行请求并获取响应 response, err := videosCall.Do() if err != nil { log.Fatalf("获取视频详情失败: %v", err) } // 处理响应结果 if len(response.Items) == 0 { log.Fatal("未找到对应ID的视频") } // 提取上传日期(PublishedAt字段就是视频的上传时间) targetVideo := response.Items[0] uploadDateTime := targetVideo.Snippet.PublishedAt fmt.Printf("视频上传日期: %v\n", uploadDateTime) }
关键部分解释
youtubeService.Videos.List([]string{"snippet"}):对应你curl命令里的part=snippet,告诉API我们需要获取视频的基本信息片段(包含上传日期、标题、描述等).Id(targetVideoID):对应curl里的id=${ID},指定要查询的单个或多个视频ID(多个ID可以用逗号分隔传入)response.Items[0].Snippet.PublishedAt:返回的Video对象里的Snippet就是你在godoc里找到的VideoSnippet,其中PublishedAt字段就是视频的上传日期,类型是*time.Time,可以直接格式化输出
注意事项
- 确保你的API密钥已经在Google Cloud控制台启用了YouTube Data API v3权限
- 如果要批量查询多个视频,只需要把
.Id()的参数改成逗号分隔的ID字符串即可,比如.Id("video1,video2,video3") - 记得处理可能的错误情况,比如API调用限额、视频不存在、权限不足等
内容的提问来源于stack exchange,提问作者hendry
相关产品推荐
相关产品推荐

