当前位置: 首页 > 编程语言 > C#

如何使用YouTubeAPI获取随机YouTube视频?Share

时间:2023-04-10 16:42:56 C#

如何使用YouTubeAPI获取随机YouTube视频?我需要一种方法来获取完全随机的YouTube视频。没有限制。如何使用YouTubeAPI?**编辑*好的,这里要问的是我到目前为止尝试过的内容:1-在youtube开发站点上浏览api和示例。http://www.youtube.com/dev/没有运气找到正确的api或在那里做它的方法。2-当然是谷歌搜索;)得到了http://randomyoutubevideo.net/但他们只提供他们在我和youtube之间使用的API。<这让我希望这真的可以做到。3-甚至检查了youtube应用程序库http://youtube-gallery.appspot.com/看看是否有其他人这样做过。如何。我还做的是在youtube讨论页面上提问。也许有人可以提供帮助。似乎没有办法做到这一点,但有一些方法可以估计您要查找的内容。看到这里的想法。这些页面的基本思路是使用最新的上传源(如果你不关心内容何时上传)或者只是转储所有YouTube视频并随机选择这些视频中的URL。在第一个链接中引用youtubeAPI的人:正如其他人提到的,我们可以提供任何数据转储等。您与YouTube的所有交互都需要通过标准API完成。我不能说我有足够的统计背景来建议您如何检索真正随机的视频样本。我确实认为尝试生成11个字符的YouTubevideoID可能是错误的方法,但是有很多不存在的videoID,你会遇到它,我认为这不是最好的用途API的数量以在X%的时间内发出将返回HTTP404响应的请求。使用API搜索“随机”选择的单词或短语并对结果进行抽样可能会更好。如果这样做,您应该考虑使用orderby=URL参数的值。默认排序是“相关性”,这将导致顶部结果是我们的算法认为与您的搜索词最相关的结果。如果您总是抓住第一个条目或类似的东西,这可能会扭曲您的结果。您也可以通过“已发布”来订购,这将按时间倒序为您提供视频。干杯,-JeffPosnick,YouTubeAPI团队关于randomyoutubevideo.net,网站的“关于”页面是这样说的:那么我们如何才能提供真正随机的YouTubevideo链接呢?事实证明,YouTube编程接口(API)提供了额外的功能来发现更多随机视频。使用大量技巧,结合对时空碎片的一些操作,我们设法创建了一个过程,可以随机真实地链接到YouTube视频。此页面上的随机YouTube功能目前使用数据库的一个子集。我们将随着时间的推移扩展此数据库,并根据需要通过API免费提供。我理解这意味着他们一直在从API中提取大量视频,并为他们的随机选择制作一个数据库。作为http://www.youtuberandomvideo.com/的所有者,我只是随机生成一些字符,然后搜索v=并返回所有以videoID开头的视频。得到结果后,我会随机选择不同的视频。第1步:创建API密钥创建一个谷歌帐户访问:https://console.developers.google.com/创建一个新项目:单击头部菜单中的创建新项目并为其命名现在激活YoutTubeDataAPI:单击它并启用它。插入您的应用程序信息单击“创建凭据”单击我需要什么?记下您的API密钥现在您可以访问YouTube-API。第2步:使用YouTube-API抓取视频在这一步中,我们使用YouTube-API来获取随机的VideoId。使用以下代码示例,您将从YouTube搜索中获得50个随机Apis。这是最大的。您可以将它们存储在数据库中或直接返回随机id。注意:限制为每天30,000个单位/秒和每天1,000,000个。Codesamples[C#–实施例]使用系统;使用System.Linq;使用System.Net;使用Newtonsoft.Json;命名空间YouTube{classProgram{privatestaticRandomrandom=newRandom();publicstaticstringRandomString(intlength){conststringchars="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";返回新字符串(Enumerable.Repeat(字符,长度)。选择(s=>s[random.Next(s.Length)])。ToArray());}staticvoidMain(string[]args){varcount=50;varAPI_KEY="你的密钥";varq=RandomString(3);varurl="https://www.googleapis.com/youtube/v3/search?key="+API_KEY+"&maxResults="+count+"&part=snippet&type=video&q="+q;使用(WebClientwc=newWebClient()){varjson=wc.DownloadString(url);动态jsonObject=JsonConvert.DeserializeObject(json);foreach(varlineinjsonObject["items"]){Console.WriteLine(line["id"]["videoId"]);/*存储你的id*/}Console.Read();}}}}[PHP-演示]函数crawlVideos($count=50){$q=$this->generateRandomString(3);$url="https://www.googleapis.com/youtube/v3/search?key=".自我::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"});/*将视频插入数据库*/}}functiongenerateRandomString($length=10){returnsubstr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',ceil($length/strlen($x)))),1,$长度);}[Python的示例]importjsonimporturllib.requestimportstringimportrandomcount=50API_KEY='your_key'random=''.join(random.choice(string.ascii_uppercase+string.digits)for_inrange(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))fordatainresults['items']:videoId=(data['id']['videoId'])print(videoId)#storeyourids第3步:生成/返回你的videourl现在从数据库中读取一个随机ID,如:SELECT'id'FROMyttableWHERE1ORDERBYRAND()LIMIT1您的随机视频是:https://www.youtube.com/embed/[randomID]玩得开心!获得随机视频ID的最佳方法是使用Google的Youtube-API的VideoSearch-Request生成您自己的数据库。只需生成一个搜索查询,如“v=SEARCH_STRING”,然后将您获得的视频插入数据库。searchstring应该是随机生成的字符串。我发现,字符串的长度应为4个字符,以便从请求中获取大部分视频,而无需多次重复结果。如果您的数据库准备就绪,您可以随机获取一行。我已经在自己的网站(random-video.net)上完成了此操作,并在几个小时内完成了超过200万次。没有真正的限制-只是数据库的大小。肮脏的爬虫是一种选择吗?因为我使用了一个简单的随机youtubevid链接生成器。这只是为了积累大量的视频,而不是为了制作。这似乎(非常)类似于他描述的“youtuberandomvideo.com”方法。importre,urllibfromrandomimportrandintdefrandom_str(str_size):res=""foriinxrange(str_size):x=randint(0,25)c=chr(ord('a')+x)res+=creturnresdeffind_watch(text,pos):start=text.find("watch?v=",pos)if(start<0):returnNone,Noneend=text.find("",start)if(end<0):returnNone,Noneif(end-start>200):#sillyheuristics,可能不是必须returnNone,Nonereturntext[start:end-1],startdeffind_instance_links():base_url='https://www.youtube.com/results?search_query='url=base_url+random_str(3)#printurlr=urllib.urlopen(url).read()links={}pos=0whileTrue:link,pos=find_watch(r,pos)iflink==Noneorpos==None:breakpos+=1#printlinkif(";"inlink):continue链接[链接]=1items_list=links.items()list_size=len(items_list)selected=randint(list_size/2,list_size-1)returnitems_list[selected][0]foriinxrange(1000):link=find_instance_links()printlink你可以看到它相当简单,可能很多容易破解决方案,但IIRC我设法快速获得了数千个随机视频链接,这就是我所需要的,而且只有几行代码......代码的一些解释:(随机->伪随机......)1。随机生成Searchquery(此处为3个字母长)2.从视频链接的下半部分随机选择一些链接(动机是为了避免广告)注意:代码很乱-它应该只是作为该技术的一个基本示例,不正确的代码设计和/或优雅的python代码AFAIK:搜索v=没有任何有意义的影响。如果您搜索v=LadyGaga,您会找到LadyGaga的视频。YouTube的搜索算法按描述、标题等查找-如果视频链接到其描述中的另一个视频(又名?v=..),则更有可能发出此搜索请求。另请参阅https://developers.google.com/youtube/v3/docs/search/list。随机选择在Google的YoutubeDataAPI中尚不可用。我所做的是查询https://www.googleapis.com/youtube/v3/search?part=id&maxResults=50&type=video&q=QUERYSTRING&key=KEY,QUERYSTRING是videoID语法中的随机5个字符串。如果结果集中包含1到50个视频,其中至少一个id包含该字符串,则将找到一个随机视频。这种方法通常需要尝试1-5次。需要进行最终检查。示例:随机字符串是ydoat。使用上面的url查询此结果只会导致ID为VEBt0Hxp5Q8的视频不合适。该视频的描述中可能有一个字符串。如果我通过https://www.youtube.com/results?q=ydoat搜索ydoat,我找不到任何结果。搜索v%3Dydoat(v=ydoat)会产生相同的结果。看到它在行动@http://cor-forum.de/randomtube/编辑。php中的源代码:https://github.com/phil294/-Php-Randomtube-random-YouTube-video-generator-和Anton一样,我发现4个随机字符最有效。我知道这有点离题,但我可以提供以下bash脚本。我在我的RaspberryPi上使用它,效果很好。#!/bin/shwhile[true];做searchresult=""while[-z"$searchresult"];dorand=$(先决条件是你安装了googler和youtube-dl。我最初的想法是生成随机化11个字符串并将它们附加到YouTube视频的基本URL。但是,可能的排列数量是巨大的(26大写字母+26个小写字母+10个数字+连字符+下划线=64个字符;64^11=7.38x10^19排列)如果地球上的每个人都上传,将用完100亿个视频。这就是随机生成完整的11个字符标识符的原因这不是一种实用的方法。我的脚本生成随机的5个字符的字符串(变量“rand”)并将它们作为搜索查询传递给Googler。Google在YouTube网站上搜索这些随机字符串,并且在大多数情况下它返回结果(变量“searchresult")")。如果没有结果,则使用另一个随机字符串重复搜索,依此类推,直到成功为止。通常需要一到三次尝试。我尝试了不同长度的搜索字符串--4可能不够独特并且6太长并且可能需要多次尝试才能获得结果我观察到如果脚本在短时间内发送超过10个搜索请求,谷歌会暂时阻止我进一步搜索。在下一步中,脚本从搜索结果中提取指向YouTube视频的超链接,并将它们放入变量“urls”中。然后随机选择其中一个播放(变量“url”)并传递给播放器-在我的例子中是omxplayer,但你可以用任何你想要的播放器替换它。Omxplayer在RaspberryPi上很不错,因为它使用硬件加速并通过hdmi直接输出到我的电视。如果我将“-ohdmi”更改为“-olocal”,音频将通过3.5毫米立体声插孔发送到外部放大器。在播放过程中按“q”将停止当前视频,下一个随机视频将自动开始播放。它将继续,直到您按Ctrl-C停止脚本。其他提示稍加修改,您就可以获得给定主题的随机视频。例如,如果我们添加“DeepPurple”作为附加搜索词,我们将获得DeepPurple的随机音乐视频:#!/bin/shwhile[true];做searchresult=""while[-z"$searchresult"];dorand=$(请注意,在上一个示例中,我将随机因子减少为2个字符的字符串,因为在包含搜索词“DeepPurple”的所有YouTube视频的相对较小的子集中,很难找到5字符串匹配”。此外,我将googler返回的搜索结果数量限制为10以保持其相关性。如果是100,我也会得到不太相关的结果,例如尝试玩DeepPurple的业余爱好者。下一个脚本将仅随机播放在过去12小时:#!/bin/shwhile[true];dosearchresult=$(googler-C-n100--np-th12-x-whttps://www.youtube.com"")urls=$(echo"$searchresult"|grep-o"https://www.youtube.com/watch?v=........")url=$(shuf-e-n1$urls)echo"$url"omxplayer-ohdmi$(youtube-dl-fmp4-g"$url")done您可以设置不同的时间限制。有关更多详细信息,请参阅googler的文档。获取包含数百或数千个单词的单词列表。然后随机选择2个单词并用它作为查询。如果你想对其随机性进行一些控制,这也很有用。例如,您可以有一个英语单词列表或一个德语单词列表。或者有一个较小的精选单词列表,这些单词仅与您感兴趣的主题相关。我使用YouTube数据APIv3Python脚本编写了一个。一般来说,它会根据一个小关键字技巧找到随机视频。比如你拍了一段视频,手机保存为“IMG20180815”,那么搜索这些默认文件名(IMGXXXX-XX-XX),得到其中一个随机选择的搜索结果的ID,就得到了Random和看不见的视频。https://github.com/n1rv4n4/random-youtube-video-generator示例项目网址:https://www.randomyoutubevideo.com以上是C#学习教程:如何使用YouTubeAPI获取随机YouTube视频?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: