YouTube動画をmp3ファイルとしてダウンロードできるプログラムを作ろうとしています。それを達成するために、このサイトyoutube-mp3.orgを使用しました。それで、www.youtube-mp3.org /?c#v=sTbd2e2EyTk のコンテンツをダウンロードしました。ここで、sTbd2e2EyTk はビデオ ID です。次に、mp3 ファイルへのリンクを取得する必要があります (この場合はhttp://www.youtube-mp3.org /get?video_id..... ) しかし、ダウンロードしたコンテンツにはリンクがありません。Chrome 開発者ツール (ctrl+shift+j、タブ要素) は、chrome のリンクとビュー ソース (ctrl+u) オプションが、Java を使用してページをダウンロードすることによって得られるのと同じ結果をもたらすことを示していることに気付きました。どうすればそのリンクを取得できますか? JSoap を使用してデータをフェッチしようとしましたが、必要なデータがすぐにページにロードされないため、取得できません。
次のコードは、Web ページのコンテンツをダウンロードするためのものです...
URL tU = new URL("http://www.youtube-mp3.org/?c#v=sTbd2e2EyTk");
HttpURLConnection conn = (HttpURLConnection) tU.openConnection();
InputStream ins = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(ins));
String line;
StringBuffer content = new StringBuffer();
while ((line = rd.readLine()) != null) {
content.append(line);
}
System.out.println(content.toString());
ファイルを取得するためにこの方法を使用しましたが、リンクが必要です..
private static void downloadStreamData(String url, String fileName) throws Exception {
URL tU = new URL(url);
HttpURLConnection conn = (HttpURLConnection) tU.openConnection();
String type = conn.getContentType();
InputStream ins = conn.getInputStream();
FileOutputStream fout = new FileOutputStream(new File(fileName));
byte[] outputByte = new byte[4096];
int bytesRead;
int length = conn.getContentLength();
int read = 0;
while ((bytesRead = ins.read(outputByte, 0, 4096)) != -1) {
read += bytesRead;
System.out.println(read + " out of " + length);
fout.write(outputByte, 0, bytesRead);
}
fout.flush();
fout.close();
}