我正在用Java编写程序,其中仅给我的程序提供youtube视频的url,但我想输出该URL引用的视频的标题。我可以使用任何API或其他方法来解决此问题吗?谢谢。
答案 0 :(得分:0)
根据官方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"
}
}
]
}
您可以获得所有信息,包括标题。
答案 1 :(得分:0)
如果您必须在没有YouTube API的情况下执行此操作,建议您从网页上抓下<title>
标签-这可能比找到包含标题的div
更容易,尽管您可能会错过一些表情符号或类似的东西。对于纯Java解决方案,我只将内置方法用于http请求java.net.HttpURLConnection
,然后流式传输响应数据,直到到达<title>
,然后将下一部分用作字符串,直到{{1} }。
这是一个简短的示例(您可能想要进行异常处理等)。
- YouTube</title>
答案 2 :(得分:0)
如果您正在使用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]