有API v3但没有API密钥的Youtube视频标题?
是否可以在不使用API键的情况下使用带API v3的视频ID获取视频标题?我在API文档中找不到任何获取标题的信息或示例。要获取视频标题,您需要一个API密钥,并且需要请求:有API v3但没有API密钥的Youtube视频标题?,youtube,youtube-api,youtube-data-api,Youtube,Youtube Api,Youtube Data Api,是否可以在不使用API键的情况下使用带API v3的视频ID获取视频标题?我在API文档中找不到任何获取标题的信息或示例。要获取视频标题,您需要一个API密钥,并且需要请求: https://www.googleapis.com/youtube/v3/videos?part=snippet&id={COMMA_DELIMITED_LIST_OF_IDS}&key={YOUR_API_KEY} 在返回的数据包中,标题将位于items.snippet.title 没有API密钥,您
https://www.googleapis.com/youtube/v3/videos?part=snippet&id={COMMA_DELIMITED_LIST_OF_IDS}&key={YOUR_API_KEY}
在返回的数据包中,标题将位于items.snippet.title
没有API密钥,您无法检索任何API数据;所有API请求都在配额系统中,该密钥用于确定对应用程序的每日限额收取多少费用。然而,像上面这样的电话是相当便宜的;总共有3个单元(2个用于代码段,1个用于请求本身)。由于您每天可以获得50000000个单元,并且可以为相同的3个单元检索多达50个代码片段,因此使用API密钥不会带来太大负担。无需API密钥
要获取视频标题,您将而不是需要API密钥,并且您需要请求:
https://www.googleapis.com/youtube/v3/videos?part=snippet&id={COMMA_DELIMITED_LIST_OF_IDS}&key={YOUR_API_KEY}
更改所需视频的YouTube URL
它还可以与Vimeo和许多其他URL一起使用,例如:
细节
如果直接使用API,则不可能在没有API键的情况下使用带API v3的视频ID获取视频标题。YouTube数据API v2已弃用(请参阅:),当前YouTube API不支持(请参阅)
但幸运的是,有一项服务可以让您使用JSONP获取YouTube视频的标题(和其他数据),而无需API密钥
演示
下面是一个使用jQuery获取标题的简单演示:
var id = 'dQw4w9WgXcQ';
var url = 'https://www.youtube.com/watch?v=' + id;
$.getJSON('https://noembed.com/embed',
{format: 'json', url: url}, function (data) {
alert(data.title);
});
请参见JS-Bin上的
另见以下问题:
- 这正是oEmbed协议的含义
oEmbed是一种允许在服务器上嵌入URL表示的格式
第三方网站。简单的API允许网站显示嵌入式
用户发布指向该内容的链接时的内容(如照片或视频)
资源,而不必直接解析资源
此文档存储在上
有关格式的更多信息,请访问:
样本输出:
{
"version": "1.0",
"type": "video",
"provider_name": "YouTube",
"provider_url": "http://youtube.com/",
"width": 425,
"height": 344,
"title": "Amazing Nintendo Facts",
"author_name": "ZackScott",
"author_url": "http://www.youtube.com/user/ZackScott",
"html":
"<object width=\"425\" height=\"344\">
<param name=\"movie\" value=\"http://www.youtube.com/v/M3r2XDceM6A&fs=1\"></param>
<param name=\"allowFullScreen\" value=\"true\"></param>
<param name=\"allowscriptaccess\" value=\"always\"></param>
<embed src=\"http://www.youtube.com/v/M3r2XDceM6A&fs=1\"
type=\"application/x-shockwave-flash\" width=\"425\" height=\"344\"
allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed>
</object>",
}
请注意,这并不意味着此网站上启用了
这些数据主要用于在服务器端进行解析
大多数信息也可以通过解析给定页面的打开图html属性来获得
有关打开的图形的信息,请参阅 是的,您可以在没有任何API的情况下只请求一个re模块
Python代码:
输出:
[+]视频标题:艾伦·沃克-唱《让我入睡》是的,这是可能的
我对Python进行了一些修改,并在Python上编写了以下代码段:
import urllib, urllib.request, json
input = "C:\\urls.txt"
output = "C:\\tracks.csv"
urls=[line.strip() for line in open(input)]
for url in urls:
ID = url.split('=')
VideoID = ID[1]
params = {"format": "json", "url": "https://www.youtube.com/watch?v=%s" % VideoID}
url = "https://www.youtube.com/oembed"
query_string = urllib.parse.urlencode(params)
url = url + "?" + query_string
with urllib.request.urlopen(url) as response:
response_text = response.read()
try:
data = json.loads(response_text.decode())
except ValueError as e:
continue # skip faulty url
if data is not None:
author = data['author_name'].split(' - ')
author = author[0].rstrip()
f = open(output, "a", encoding='utf-8')
print(author, ',', data['title'], sep="", file=f)
它选择一个包含Youtube URL列表的文本文件:
https://www.youtube.com/watch?v=F_Vfgdfgg
https://www.youtube.com/watch?v=RndfgdfN8
...
并返回带有艺术家标题对的CSV文件:
Beyonce,Pretty hurts
Justin Timberlake,Cry me a river
片段中的p.S.文件路径格式适用于Windows,对于Linux,只需使用~/tracks.csv
太好了,视频长度字段已从API v3中删除。为什么他们要打破谷歌那些家伙的工作模式(它并没有消失,只是在一个不同的“部分”——主要是为了让不需要持续时间的人不需要为配额付费(V3更模块化,而V2只是将大量XML文件返回给所有内容,结果非常浪费)。视频持续时间在contentDetails部分,所以像这样的请求:{video_ID}&key={你的API密钥}将允许您访问items.contentDetails.duration参数。请注意,该值是ISO-8601-duration格式的,因此您可能需要对其进行转换。这是一个很好的答案,它不需要api密钥,也不依赖于第三方服务。这非常有效。是否也有方法执行搜索?抱歉,@Suncatcher,但是如果是这样呢TAN标题包含逗号?只需在标题上使用逗号即可。在编写CSV期间,这应该不会有问题,在解析生成的CSV期间,也不应该有问题,您可以将标题用引号括起来,如print(author,“,”,data['title'],“'”,“sep=”“,file=f)
或应用您想要的任何规则
https://www.youtube.com/watch?v=F_Vfgdfgg
https://www.youtube.com/watch?v=RndfgdfN8
...
Beyonce,Pretty hurts
Justin Timberlake,Cry me a river