1 package yukihane.inqubus.saccubus_adapter;
4 import java.io.IOException;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7 import nicobrowser.GetFlvResult;
8 import nicobrowser.NicoHttpClient;
9 import nicobrowser.ProgressListener;
10 import nicobrowser.WayBackInfo;
11 import saccubus.ConvertStopFlag;
12 import saccubus.net.CommentInfo;
13 import saccubus.net.NicoClient;
14 import saccubus.net.TextProgressListener;
15 import saccubus.net.VideoInfo;
16 import saccubus.util.FileUtil;
19 * NicoBrowserのニコニコ動画サービスアクセス機能をいんきゅばすから使用するためのアダプタ.
22 public class NicoBrowserAdapter implements NicoClient {
24 private static final Logger logger = Logger.getLogger(NicoBrowserAdapter.class.getName());
25 private final NicoHttpClient client;
26 private final boolean hasLogin;
27 private final ConvertStopFlag stopFlag;
28 private nicobrowser.VideoInfo nicoBrowserVi;
30 public NicoBrowserAdapter(final String mail, final String pass,
31 final ConvertStopFlag flag, final String proxyHost, final int proxyPort) {
33 if (proxyHost != null && proxyHost.length() > 0 && proxyPort >= 0 && proxyPort <= 65535) {
34 this.client = new NicoHttpClient(proxyHost, proxyPort);
36 this.client = new NicoHttpClient();
40 boolean loginned = false;
42 loginned = client.login(mail, pass);
43 } catch (Exception ex) {
44 logger.log(Level.SEVERE, "ログイン処理時に例外発生", ex);
46 this.hasLogin = loginned;
53 public VideoInfo getVideoInfo(String videoId) throws IOException {
54 nicoBrowserVi = client.getVideoInfo(videoId);
55 final nicobrowser.VideoInfo vi = nicoBrowserVi;
57 final VideoInfo.OfficialOption oo =
58 new VideoInfo.OfficialOption(vi.getKeyMap().get("threadkey"), vi.getKeyMap().get("force_184"));
60 return new VideoInfo(FileUtil.safeFileName(vi.getTitleInWatchPage()), vi.getThreadId(), vi.getVideoUrl().
61 toString(), vi.getMessageUrl().toString(), vi.getUserId(), vi.getVideoLength(), oo);
65 public String getWayBackKey(VideoInfo vi) throws IOException {
66 return client.getWayBackKey(nicoBrowserVi);
70 public File getComment(VideoInfo videoInfo, CommentInfo commentInfo, File file, TextProgressListener listener,
73 WayBackInfo wbi = new WayBackInfo(commentInfo.getWayBackKey(), commentInfo.getWayBackTime());
74 return client.getCommentFile(nicoBrowserVi, file.getPath(), wbi);
75 } catch (Exception ex) {
76 logger.log(Level.SEVERE, "コメント取得失敗", ex);
82 public File getTcomment(VideoInfo videoInfo, File file, TextProgressListener listener) {
84 return client.getTCommentFile(nicoBrowserVi, file.getParent());
85 } catch (Exception ex) {
86 logger.log(Level.SEVERE, "投稿者コメント取得失敗", ex);
92 public File getVideo(final VideoInfo videoInfo, File file, final TextProgressListener listener) {
94 final String fileName = FileUtil.removeExtension(file.getPath());
95 GetFlvResult res = client.getFlvFile(nicoBrowserVi, fileName, new ProgressListener() {
98 public void progress(long fileSize, long downloadSize) {
99 final double p = ((double) downloadSize / fileSize) * 100.0;
100 final String msg = String.format("動画ダウンロード:%.2fパーセント完了", p);
101 listener.setText(msg);
105 public boolean getCancel() {
106 return stopFlag.needStop();
110 return res.getFile();
111 } catch (Exception ex) {
112 logger.log(Level.SEVERE, null, ex);
118 public boolean isLoggedIn() {