标签: youtube-data-api

如何使用 YouTube API v3 和 Python 从视频中获取评论?

我一直在尝试使用 Python 从 YouTube 上的给定视频中获取评论(线程和回复)(作为学习语言的练习)。

根据官方网站(https://developers.google.com/youtube/v3/docs/commentThreads/list)上给出的示例,我能够得到一些评论,但不是全部。我尝试添加一些代码来处理多个页面,但是我无法获得只有一个页面的视频的评论。

例如,https://www.youtube.com/watch?v=Gd_L7DVKTA8有 17 条评论(包括回复),但我只能获得 7 个线程和 2 个回复。有趣的是,我使用上面链接中提供的 API Explorer 得到了相同的结果(只有 7 个线程)。

我的代码如下:

#!/usr/bin/python

# Usage:
# python scraper.py --videoid='<video_id>'

from apiclient.errors import HttpError
from oauth2client.tools import argparser
from apiclient.discovery import build

YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
DEVELOPER_KEY = 'key'


def get_comment_threads(youtube, video_id, comments):
   threads = []
   results = youtube.commentThreads().list(
     part="snippet",
     videoId=video_id,
     textFormat="plainText",
   ).execute()

  #Get the first set of comments
  for item in results["items"]:
    threads.append(item)
    comment = item["snippet"]["topLevelComment"]
    text …
Run Code Online (Sandbox Code Playgroud)

python youtube youtube-data-api

6
推荐指数
1
解决办法
2万
查看次数

没有 api 密钥的 Youtube 视频标题和持续时间

如何在不使用 api 密钥的情况下获取 youtube 视频标题和持续时间?

我在没有 API 密钥的情况下使用 API v3检查了Youtube 视频标题?链接但这只给出标题而不是持续时间。

那么我怎样才能在没有 api 密钥的情况下获得持续时间呢?

youtube youtube-api youtube-data-api

6
推荐指数
1
解决办法
2191
查看次数

Youtube Data Api 在 1000 个结果后停止

我一直在尝试检索我的 YouTube 频道的所有订阅者的列表。我正在使用以下格式的查询:

https://content.googleapis.com/youtube/v3/subscriptions?mySubscribers=true&maxResults=50&part=subscriberSnippet&access_token=xxxx

但是,在 1000 个结果之后(例如,20 页@每页 50 条,或 50 页@每页 20 条),它会停止。在文档中,它说它myRecentSubscribers只能检索 1000 个,但mySubscribers没有限制。有什么不成文的限制吗?

youtube youtube-api youtube-data-api

6
推荐指数
1
解决办法
347
查看次数

YouTube API 和品牌帐户

很长一段时间以来,我一直在使用 Google 脚本访问我的 YouTube 频道,从中获取和修改一些信息,并将一些数据保存在 Google 表格中。

它总是运行良好,但是大约一周前,Google 以某种方式在我的普通帐户(主电子邮件)和我的 YouTube 帐户(使用不同的昵称)之间分配了我的访问权限。

即使是最简单的命令,我也找不到运行的方法:

var my_playlists = YouTube.Playlists.list('snippet', {
    mine: true,
    maxResults: 50,
})
.items; 
Run Code Online (Sandbox Code Playgroud)

问题是谷歌现在提示我一个授权页面,我可以在 2 个帐户之间进行选择。一个是我的主要帐户,另一个是 YouTube 帐户。如果我选择我的主帐户,代码会运行,但我看不到 YouTube 帐户的数据。

如果我选择 YouTube,我仍然无法访问我想要的数据,并且每次运行代码时它都会请求许可。

我知道这两个渠道之间存在授权问题,但我之前没有,也找不到任何解决方案。

我能解决什么问题?

google-apps-script youtube-data-api google-signin

6
推荐指数
1
解决办法
1848
查看次数

Java 示例代码示例 youtube 数据 api v3 和授权方法作为 api 密钥

我是 google apis 的新手。为 youtube 频道创建项目。我已经为项目创建了 api 并生成了 api 密钥。在项目上启用 Youtube api。我到处都在获取 OAUTH 授权的代码示例,但找不到任何用于使用 api 密钥授权的视频或 Java 代码示例。你能帮我将我重定向到适当的链接吗?

还想知道这两种方法之间是否有任何功能差异?

youtube-api youtube-data-api

6
推荐指数
1
解决办法
3606
查看次数

直接链接到 YouTube 评论

有没有办法直接链接到 YouTube 页面的评论部分?

我知道这可以使用 anchors 和 div ids来完成,但是当我将它应用到 YouTube URL 时这并不成功,因为 YouTube 在页面加载时去掉了正斜杠。

例如,https://www.youtube.com/watch?v=eRsGyueVLvQ/#comments变成?v=eRsGyueVLvQ#comments

这是可能的,还是应该将其归结为功能请求?

html youtube youtube-api youtube-data-api

6
推荐指数
2
解决办法
9335
查看次数

Youtube v3 API 字幕下载

我正在尝试使用他们的 nuget 包从 Youtube 上的一些视频下载字幕。这是一些代码:

var request = _youtube.Search.List("snippet,id");
request.Q = "Bill Gates";
request.MaxResults = 50;
request.Type = "video";
var results = request.Execute();
foreach (var result in results.Items)
{
    var captionListRequest = _youtube.Captions.List("id,snippet", result.Id.VideoId);
    var captionListResponse = captionListRequest.Execute();
    var russianCaptions =
        captionListResponse.Items.FirstOrDefault(c => c.Snippet.Language.ToLower() == "ru");
    if (russianCaptions != null)
    {
        var downloadRequest = _youtube.Captions.Download(russianCaptions.Id);
        downloadRequest.Tfmt = CaptionsResource.DownloadRequest.TfmtEnum.Srt;
        var ms = new MemoryStream();
        downloadRequest.Download(ms);
    }
}
Run Code Online (Sandbox Code Playgroud)

当 Download 方法被调用时,我收到一个奇怪的 Newtonsoft.JSON 异常,它说:

    Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: T. Path …
Run Code Online (Sandbox Code Playgroud)

.net c# youtube-api youtube-data-api

6
推荐指数
1
解决办法
4331
查看次数

存储 Google 授权代码以自动上传 Youtube

在每次尝试上传 Youtube 时,Google 都会催我点击 oauth2 页面并要求我提供授权码,如下图。授权码不会经常更改。那么,有没有一种方法可以存储授权代码并重用它来自动上传到我自己的 Youtube 帐户?如果可能,我如何存储它以及我要将存储的身份验证字符串放在我的代码中的什么位置?

有一段代码,我已将其从Google 的 Youtube 上传示例转换为 Python3 :

#!/usr/bin/python

import argparse
import http.client
import httplib2
import os
import random
import time

import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload
from google_auth_oauthlib.flow import InstalledAppFlow
import google_auth_httplib2

# Explicitly tell the underlying HTTP transport library not to retry, since
# we are handling retry logic ourselves.
httplib2.RETRIES = 1

# Maximum number of times to retry …
Run Code Online (Sandbox Code Playgroud)

python google-api google-oauth google-api-python-client youtube-data-api

6
推荐指数
0
解决办法
1555
查看次数

Youtube API v3:使用服务帐户访问 YouTube 视频

我正在尝试使用 Google 服务帐户在 .NET 中列出来自 YouTube Data API v3 的视频。我已经激活了 YouTube API,创建了帐户服务,但每当我尝试列出我的频道中的视频时,即使我确实上传了视频,它也会显示 0 个视频。能否请你帮忙 ?谢谢。

这是代码 -

string[] scopes = new string[] 
{    
    YouTubeAnalyticsService.Scope.YtAnalyticsReadonly, 
    YouTubeAnalyticsService.Scope.YtAnalyticsMonetaryReadonly, 
    "https://www.googleapis.com/auth/youtube.force-ssl" 
};

// service account credential
GoogleCredential credential = GoogleCredential.FromFile(SecretPath).CreateScoped(scopes);

var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = channelinfo.AnalyticsAPIFileDataStore
});

Dictionary<string, DateTime?> videoIds = new Dictionary<string, DateTime?>();

var channelResourcesList = youtubeService.Channels.List("contentDetails");
channelResourcesList.Id = channelinfo.ChannelId;
var listResult = channelResourcesList.Execute();
string playListId = listResult.Items[0]?.ContentDetails.RelatedPlaylists.Uploads;

var listOfVideos = youtubeService.PlaylistItems.List("snippet");

listOfVideos.PlaylistId = playListId;
var nextPageToken …
Run Code Online (Sandbox Code Playgroud)

.net youtube-api service-accounts youtube-data-api

6
推荐指数
1
解决办法
4991
查看次数

如何通过 HTTP 请求将视频上传到 YouTube?

我几个小时以来一直在试图解决这个问题。查阅官方文档它说我需要向https://www.googleapis.com/upload/youtube/v3/videos内容类型标头设置为video/*application/octet-stream(我使用了后者)发出发布请求。事实证明,如果我只是将视频文件的缓冲区发布到该网址,它就会起作用。但文档还说我可以指定有关视频的一大堆选项(标题、描述、标签等)。但是,它说将该信息附加到请求正文!我对如何在同一请求中发送视频字节和选项感到困惑。也许它不应该是相同的请求,但他们没有提到任何有关使用多个的内容。

http youtube-api youtube-data-api

6
推荐指数
1
解决办法
5324
查看次数