c# - 如何使用 YouTube API 获取随机 YouTube 视频?

标签 c# .net youtube-api youtube.net-api

我需要一种方法来获取完全随机的 YouTube 视频。没有限制。

如何使用 YouTube API?

** 编辑 * OK,这里是我到目前为止所尝试的:

1 - 在 youtube 开发站点上浏览了 api 和示例。 http://www.youtube.com/dev/没有运气找到正确的 API 或在那里做它的方法。

2 - 当然是谷歌搜索 ;) 得到了 http://randomyoutubevideo.net/但他们只提供 THEM 的 api,供我和 youtube 之间使用。 <这让我希望这实际上是可能的。

3 - 甚至查看了 youtube 应用程序库 http://youtube-gallery.appspot.com/看看是否有人在这样做。以及如何。

我还将做的是在 youtube 讨论页面上提问。也许有人可以提供帮助。

最佳答案

#第 1 步:创建 API key

  1. 创建一个谷歌帐户
  2. 访问:https://console.developers.google.com/
  3. 创建一个新项目:点击头部菜单中的 Create new Project 并为其命名
  4. 现在激活 YouTube 数据 API:点击它并启用它。
  5. 插入您的应用信息
  6. 点击“创建凭证”
  7. 点击我需要什么?
  8. 记下您的 API key

现在您可以访问 YouTube-API。

#第 2 步:使用 YouTube-API 抓取视频

在这一步中,我们使用 YouTube-API 来获取随机的 VideoId。使用以下代码示例,您将从 YouTube 搜索中获得 50 个随机视频。这是最大值。您可以将它们存储在数据库中或直接返回随机 ID。

注意:限制为 30,000 单位/秒/用户和每天 1,000,000。

Codesamples


[C#-Example]

using System;
using System.Linq;
using System.Net;
using Newtonsoft.Json;

namespace YouTube
{
   class Program
   {
    private static Random random = new Random();

    public static string RandomString(int length)
    {
        const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        return new string(Enumerable.Repeat(chars, length)
          .Select(s => s[random.Next(s.Length)]).ToArray());
    }

    static void Main(string[] args)
    {
        var count = 50;
        var API_KEY = "YOUR KEY";
        var q = RandomString(3);
        var url = "https://www.googleapis.com/youtube/v3/search?key=" + API_KEY + "&maxResults="+count+"&part=snippet&type=video&q=" +q;

        using (WebClient wc = new WebClient())
        {
            var json = wc.DownloadString(url);
            dynamic jsonObject = JsonConvert.DeserializeObject(json);
            foreach (var line in jsonObject["items"])
            {
                Console.WriteLine(line["id"]["videoId"]);
                /*store your id*/
            }
            Console.Read();
        }
    }
}
}

[PHP-Example]

function crawlVideos($count = 50)
{
    $q = $this->generateRandomString(3);
    $url = "https://www.googleapis.com/youtube/v3/search?key=" . self::API_KEY . "&maxResults=$count&part=snippet&type=video&q=" . $q;
    $JSON = file_get_contents($url);
    $JSON_Data_search = json_decode($JSON);
    foreach ($JSON_Data_search->{"items"} as $result) {
        $videoId = ($result->{"id"}->{"videoId"});
        /*Insert video to your database*/
    }
}

function generateRandomString($length = 10)
{
    return substr(str_shuffle(str_repeat($x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length / strlen($x)))), 1, $length);
}

[Python-Example]

import json
import urllib.request
import string
import random

count = 50
API_KEY = 'your_key'
random = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(3))

urlData = "https://www.googleapis.com/youtube/v3/search?key={}&maxResults={}&part=snippet&type=video&q={}".format(API_KEY,count,random)
webURL = urllib.request.urlopen(urlData)
data = webURL.read()
encoding = webURL.info().get_content_charset('utf-8')
results = json.loads(data.decode(encoding))

for data in results['items']:
    videoId = (data['id']['videoId'])
    print(videoId)
    #store your ids

#第 3 步:生成/返回您的视频 URL

现在从数据库中读取一个随机 ID,例如:

SELECT 'id' 
FROM yttable
WHERE 1 ORDER BY RAND() LIMIT 1

您的随机视频是:

https://www.youtube.com/embed/[random ID]

玩得开心!

关于c# - 如何使用 YouTube API 获取随机 YouTube 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315416/

相关文章:

c# - 是否有任何解决方案来处理 TestCaseSource 的数据类型? [Nunit 框架]

c# - 第三方类的 TypeConverter 属性

google-api - YouTube API 请求因 "Access Not Configured"(也为 : "queries per day" quota is locked to 0))而失败

javascript - Google YouTube API 3 OAuth 在第二次登录时不会请求用户许可

android - 在 Android TV 中使用 Youtube API

c# - Visual Studio 中的圈复杂度

c# - 增加使用 Azure 部署的 K8s 集群中的最大文件上传大小(使用 C# 和 React 的 ASP.NET Core 中的项目)

c# - 为什么我的报告在设置报告参数时抛出异常?

.NET - 对单个列表(T)的多线程迭代 - 我需要注意什么?

c# - 如何使用 LINQ 优化多个 if else