今や便利なダウンロードツールが色々あるので、作る意味はあまりないのですが、JavaでYouTube動画とか取るには…と探したらライブラリがあったので、JavaFXと合わせてみました(^^;
注意
ちなみにYouTubeの動画をダウンロードすること自体、本来は(自分の著作物を上げた場合以外は)いけないことですね;利用規約はこちら。「5. お客様によるサイト上のコンテンツの使用」の部分です。
http://www.youtube.com/static?template=terms&hl=ja&gl=JP
その他の参考
http://ihoudownload.chosakuken-kouza.com/q/q2.html
というわけで、今回のブログ、不適切だったら後で削除するかも…です。
ちなみにJavaでYouTubeをダウンロードする、で調べたら海外にわんさか(^^;
自分が参考にしたのは
How to download videos from youtube on java?
でした。で、回答の1つに「vget」なるライブラリがあって簡単そうだったので使ってみました。
https://github.com/axet/vget
このライブラリの内部では他のライブラリを使っているようで、Maven使うのが楽そうです。
で、NetBeans7.3.1を使っていたのですが、MavenのメニューにJavaFXがない!とつぶやいたら@sk44_さんと@aoetkさんからNetBeans7.4から使えます、と教えて頂きました。
というわけで7.4RC1入れていたので(今はもうRC2出てますが)やってみたところ
あった!やったー(^^)/
ということで、MavenでJavaFXプロジェクト作りました。
このvgetというライブラリ、URLがわかればダウンロードできるので、JavaFXのWebView使ってURLを取るようにしただけの雑なサンプルです(^^;
起動するとYouTubeのトップを表示するようにして、検索して目的の動画へ。
自分の著作物であげたものがないので…一時的に堀北さんのCMを試してみました。
ダウンロードボタンを押してしばらくするとwebm形式のファイルを取得。
実行するとこんな感じ!取れてる!
コードは超適当ですが、こんなんで動いてます。
ちなみにViewのFXMLはWebViewとVBox、Buttonだけです。
package maki.makimakidownloader;
import com.github.axet.vget.VGet;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
public class MakiMakiDownloaderController implements Initializable {
@FXML
private WebView webView;
private WebEngine webEngine;
@FXML
private void handleBtnDownloadAction(ActionEvent event) {
try {
URL downloadUrl = new URL(webEngine.getLocation());
VGet vget = new VGet(downloadUrl, new File("D:\\movie\\horikita"));
vget.download();
} catch (MalformedURLException ex) {
System.out.println(ex.getMessage());
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
webEngine = webView.getEngine();
webEngine.load("http://www.youtube.com/?gl=JP&hl=ja");
}
}
真面目に作るなら欲しい機能として
- ダウンロード中はプログレスバーを表示
- 落とせない形式(があるっぽい)の場合にはメッセージダイアログを表示
- 非同期で複数ダウンロードできるようにする
などなど(^^;他にもあるよなぁ。
先日のマキマキビューアも途中だけど、これも真面目に作ってみようかな。って個人で楽しむためのツールですが。
てか、最近JavaFXネタが増えつつある(^^;
Java EEは仕事でガッツリ開発入って今まで使ってないようなものを触らないと中々書くことがない今日この頃。もっとガッツリ開発したいなぁ。