【问题标题】:Retrieving YouTube insights via URLs通过 URL 检索 YouTube 洞察
【发布时间】:2012-03-12 21:56:19
【问题描述】:

我正在尝试使用 C# 检索 YouTube 见解。
我已经能够使用下面的代码检索视频 ID, 但是,我无法检索这些见解。我希望那 通过使用视频 ID,我可以在以下 URL 上执行 Get:

https://insight.youtube.com/video-analytics/csvreports?query=VIDEO_ID&type=v&starttime=1330727299&endtime=1331677699&region=world&hl=en_US&userName=USERNAME&password=PASSWORD&token=DEV_TOKEN

虽然这个 URL 似乎不起作用。

有什么想法吗?一个特定的 C# 代码示例将非常宝贵。

public class UnixTime
{
   public static string ToUnixTime(DateTime dateTime)
    {
        return (Math.Round((dateTime - new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime()).TotalSeconds, 0)).ToString() ;
    }
}



public void PrepareAndDownloadFile(string username, string password, string token, 
                                   string channel,  string destination)
{

    YouTubeRequestSettings settings = new YouTubeRequestSettings(channel, token, username, password);
    YouTubeRequest request = new YouTubeRequest(settings);
    string feedUrl = String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads?v=2", channel);
    Feed<Video> videoFeed = request.Get<Video>(new Uri(feedUrl));

    foreach (Video video in videoFeed.Entries)
    {
        StringBuilder url = new StringBuilder();

        url.Append("https://insight.youtube.com/video-analytics/csvreports");
        url.Append(String.Format("?query={0}", video.VideoId));
        url.Append("&type=v");
        url.Append(String.Format("&starttime={0}", UnixTime.ToUnixTime(DateTime.Now.AddDays(SINCE_OFFSET))));
        url.Append(String.Format("&endtime={0}", UnixTime.ToUnixTime(DateTime.Now.AddDays(UNTIL_OFFSET))));
        url.Append("&region=world");
        url.Append("&hl=en_US");
        url.Append(String.Format("&userName={0}", username));
        url.Append(String.Format("&password={0}", password));
        url.Append(string.Format("&token={0}", token));

        // make Http Request here given the new url.

        dynamic rows = GetPath(url.ToString());
        processor.WriteRows(destination, rows);
     }
 }

【问题讨论】:

  • 什么,具体来说,不起作用?你的电脑会炸吗?您收到错误消息了吗?
  • 我应该能够在我的浏览器中输入这个 URL 并检索数据:https : //insight.youtube.com/video-analytics/csvreports?query=VIDEO_ID&type=v&starttime=1330727299&endtime=1331677699&region= world&hl=en_US&userName=USERNAME&password=PASSWORD&token=DEV_TOKEN&alt=json 它应该以 JSON 字符串的形式返回。它没有。第一个问题是检索数据的正确咒语是什么。
  • @WillHughes - 我从 YouTube 得到的错误是 404。

标签: c# youtube


【解决方案1】:

Jeffrey Posnick 发布回复

上午 10:53(1 小时前)

你好,

我没有现成的 C# 代码,但我可以告诉你什么 你做错了。您不应该手动创建 YouTube 洞察 URL。你不能这样做。您似乎在使用您的 YouTube 身份验证令牌作为“token=” URL 参数的值,以及 将您的用户名和密码粘贴在 URL 中以防万一,但 那是完全错误的做法。 Insight URL 是唯一的 由 API 生成并在经过身份验证的请求中公开 该条目所有者的视频条目,在一个元素中。这是 解释在

https://developers.google.com/youtube/2.0/developers_guide_protocol_insight

同样,您不能手动创建 URL。你唯一需要的时候 如果要修改,则根本修改自动生成的 URL user_starttime 或 user_endtime 参数,也包括在内 在文档中。

干杯, -Jeff Posnick,YouTube API 团队 groups.google.com/group/youtube-api-gdata | apiblog.youtube.com | @YouTubeDev

【讨论】:

  • 嗯...有没有人使用过 .Net API 来检索见解?我提供了 YouTube 帐户的电子邮件地址和密码。令牌是开发密钥。从调用 Feed
猜你喜欢
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 2013-04-14
相关资源
最近更新 更多