我正在用Java编写程序,其中仅给我的程序提供youtube视频的url,但我想输出该URL引用的视频的标题。我可以使用任何API或其他方法来解决此问题吗?谢谢。
hushilan325 回答:如何仅从URL获得youtube视频的标题?
根据官方youtube api docs。首先,您需要获取您的API_KEY。然后点击以下端点(使用YOUR_API_KEY和YOUR_VIDEO_ID)
https://www.googleapis.com/youtube/v3/videos?id=YOUR_VIDEO_ID&key=YOUR_API_KEY
&part=snippet,contentDetails,statistics,status
您将收到一个JSON对象作为这样的响应
{
"kind": "youtube#videoListResponse","etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"","videos": [
{
"id": "7lCDEYXw3mM","kind": "youtube#video","etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"","snippet": {
"publishedAt": "2012-06-20T22:45:24.000Z","channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw","title": "Google I/O 101: Q&A On Using Google APIs","description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.","thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg"
},"medium": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg"
},"high": {
"url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg"
}
},"categoryId": "28"
},"contentDetails": {
"duration": "PT15M51S","aspectRatio": "RATIO_16_9"
},"statistics": {
"viewCount": "3057","likeCount": "25","dislikeCount": "0","favoriteCount": "17","commentCount": "12"
},"status": {
"uploadStatus": "STATUS_PROCESSED","privacyStatus": "PRIVACY_PUBLIC"
}
}
]
}
您可以获得所有信息,包括标题。
,如果您必须在没有YouTube API的情况下执行此操作,建议您从网页上抓下<title>
标签-这可能比找到包含标题的div
更容易,尽管您可能会错过一些表情符号或类似的东西。对于纯Java解决方案,我只将内置方法用于http请求java.net.HttpURLConnection
,然后流式传输响应数据,直到到达<title>
,然后将下一部分用作字符串,直到{{1} }。
这是一个简短的示例(您可能想要进行异常处理等)。
- YouTube</title>
,
如果您正在使用maven并想使用Jsoup,请添加这些添加依赖项
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
</dependency>
或,否则,只需将找到的here的jar添加到类路径中,以便它可用于您的代码。
然后它很简单,如下所示:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Test {
public static void main(String[] args) throws IOException {
Document document = Jsoup.connect("https://www.youtube.com/watch?v=eIrMbAQSU34").get();
String title = document.title().replaceAll(" - YouTube$","");
System.out.println(title);
}
}
在这种情况下,它会打印:
Java初学者教程[2019]