我知道 VGet 使下载youtube视频变得容易。但是,我只想获取下载链接以在我的其他应用程序(Java Swing)中使用它。可以使用VGet完成吗?
有人可以帮我吗?
谢谢。
最佳答案
这是我的解决方案,(更好的解决方案,不胜感激)
引用VGet之后,我编写了自己的方法来获取youtube url(例如https:www.youtube.com/watch?v = ID)并提供下载链接(例如https:r2 --- sn-ipoxu- u2xl.googlevideo.com/videoplayback?upn=l0CJXtFDQog&itag=43&signature=0C6...&mt=1436339343)。这是代码,
List<String> urlList = new ArrayList<String>();
Pattern urlencod = Pattern.compile("\"url_encoded_fmt_stream_map\":\"([^\"]*)\"");
Matcher urlencodMatch = urlencod.matcher(**html**);
if (urlencodMatch.find()) {
String url_encoded_fmt_stream_map;
url_encoded_fmt_stream_map = urlencodMatch.group(1);
Pattern encod = Pattern.compile("url=(.*)");
Matcher encodMatch = encod.matcher(url_encoded_fmt_stream_map);
if (encodMatch.find()) {
String sline = encodMatch.group(1);
String[] urlStrings = sline.split("url=");
for (String urlString : urlStrings) {
String url = null;
urlString = StringEscapeUtils.unescapeJava(urlString);
Pattern link = Pattern.compile("([^&,]*)[&,]");
Matcher linkMatch = link.matcher(urlString);
if (linkMatch.find()) {
url = linkMatch.group(1);
url = URLDecoder.decode(url, UTF8);
}
urlList.add(url);
}
}
}
其中,html是使用的String,
HttpURLConnection conn = null;
StringBuilder contents = new StringBuilder();
try {
conn = (HttpURLConnection)new URL("https://www.youtube.com/watch?v=SYOarZKipnU").openConnection();
conn.setConnectTimeout(CONNECT_TIMEOUT);
conn.setReadTimeout(READ_TIMEOUT);
InputStream is = conn.getInputStream();
String enc = conn.getContentEncoding();
if (enc == null) {
Pattern p = Pattern.compile("charset=(.*)");
Matcher m = p.matcher(conn.getHeaderField("Content-Type"));
if (m.find()) {
enc = m.group(1);
}
}
if (enc == null)
enc = "UTF-8";
BufferedReader br = new BufferedReader(new InputStreamReader(is, enc));
String line = null;
while ((line = br.readLine()) != null) {
contents.append(line);
contents.append("\n");
}
}catch(IOException e){
}
return contents.toString();
}
谢谢guyzz ....
关于java - 如何使用Java获取YouTube下载链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31261652/