import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
+import java.util.concurrent.FutureTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingUtilities;
import nicobrowser.entity.NicoContent;
+import nicobrowser.main.Main;
import org.apache.commons.lang.StringUtils;
import saccubus.ConvertStopFlag.State;
-import saccubus.converter.profile.FfmpegOption;
-import saccubus.converter.profile.NgSetting;
+import saccubus.converter.classic.profile.FfmpegOption;
+import saccubus.converter.classic.profile.NgSetting;
import saccubus.net.TextProgressListener;
import saccubus.properties.BasicSetting;
import saccubus.properties.ConvertSetting;
import saccubus.properties.OutputVideoSetting;
import saccubus.util.FileDropTarget;
import saccubus.util.PopupRightClick;
+import saccubus.util.WayBackTimeParser;
+import yukihane.Util;
import yukihane.nicovideo.NicoDBFinder;
/**
private static final long serialVersionUID = 2564486741331062989L;
public static final String PRODUCT_NAME = "いんきゅばす";
- public static final String VERSION = "1.7.0";
+ public static final String VERSION = "1.7.2 (NicoBrowser" + Main.VERSION + ")";
public static final Image WinIcon = Toolkit.getDefaultToolkit().createImage(saccubus.MainFrame.class.getResource(
"icon32.png"));
// TODO GUIが無いためフィールドに保持.
JTabbedPane mainTabbedPane = new JTabbedPane();
JPanel SavingInfoTabPanel = new JPanel();
JPanel FFMpegTabPanel = new JPanel();
- JPanel VideoInfoPanel = new JPanel();
- JTextField VideoID_TextField = new JTextField();
- JButton DoButton = new JButton();
+ // メインウィンドウ
+ private JPanel videoInfoPanel = new JPanel();
+ private JPanel opPanel = new JPanel();
+ private JLabel videoIdLabel = new JLabel();
+ private JTextField videoIdField = new JTextField();
+ private JLabel wayBackLabel = new JLabel();
+ private JTextField wayBackField = new JTextField();
+ private JCheckBox reduceCommentCheckBox = new JCheckBox();
+ private JButton doButton = new JButton();
public static final String DoButtonDefString = "変換";
public static final String DoButtonStopString = "停止";
public static final String DoButtonWaitString = "待機";
}
/**
+ * メイン画面最上部(ID/URL, 過去ログ, 変換ボタン)のパネルを初期化します.
+ */
+ private void initVideoInfoPanel() {
+
+ videoIdLabel.setText("URL/ID");
+ wayBackLabel.setText("過去ログ");
+ videoIdField.setText("http://www.nicovideo.jp/watch/");
+ reduceCommentCheckBox.setText("旧仕様コメント数");
+
+ final GroupLayout oppLayout = new GroupLayout(opPanel);
+ opPanel.setLayout(oppLayout);
+
+ oppLayout.setHorizontalGroup(oppLayout.createSequentialGroup()
+ .addGroup(oppLayout.createParallelGroup()
+ .addComponent(videoIdLabel)
+ .addComponent(wayBackLabel))
+ .addGroup(oppLayout.createParallelGroup()
+ .addComponent(videoIdField)
+ .addGroup(oppLayout.createSequentialGroup()
+ .addComponent(wayBackField)
+ .addComponent(reduceCommentCheckBox)))
+ );
+
+ oppLayout.setVerticalGroup(oppLayout.createSequentialGroup()
+ .addGroup(oppLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(videoIdLabel)
+ .addComponent(videoIdField))
+ .addGroup(oppLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(wayBackLabel)
+ .addComponent(wayBackField)
+ .addComponent(reduceCommentCheckBox))
+ );
+
+ doButton.setText(DoButtonDefString);
+ doButton.addActionListener(new MainFrame_DoButton_actionAdapter(this));
+
+ final GroupLayout vipLayout = new GroupLayout(videoInfoPanel);
+ videoInfoPanel.setLayout(vipLayout);
+
+ vipLayout.setHorizontalGroup(vipLayout.createSequentialGroup()
+ .addComponent(opPanel).addComponent(doButton));
+
+ vipLayout.setVerticalGroup(vipLayout.createParallelGroup()
+ .addComponent(opPanel).addComponent(doButton, 10, 20, 50));
+ }
+
+ /**
* コンポーネントの初期化。
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
+
+ initVideoInfoPanel();
+
GridBagConstraints gridBagConstraints74 = new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, new Insets(0, 0, 0, 5), 0, 0);
gridBagConstraints74.gridwidth = 2;
ShadowKindLabel = new JLabel();
ShadowKindLabel.setText("影の種類");
ShadowKindLabel.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
- GridBagConstraints gridBagConstraints71 = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
- GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 6);
- gridBagConstraints71.fill = GridBagConstraints.BOTH;
- gridBagConstraints71.ipady = 0;
- GridBagConstraints gridBagConstraints70 = new GridBagConstraints();
- gridBagConstraints70.fill = GridBagConstraints.HORIZONTAL;
- gridBagConstraints70.gridy = 1;
- gridBagConstraints70.ipadx = 0;
- gridBagConstraints70.ipady = 0;
- gridBagConstraints70.weightx = 1.0;
- gridBagConstraints70.insets = new Insets(0, 0, 0, 0);
- gridBagConstraints70.gridx = 1;
- GridBagConstraints gridBagConstraints69 = new GridBagConstraints();
- gridBagConstraints69.gridx = 0;
- gridBagConstraints69.ipadx = 0;
- gridBagConstraints69.ipady = 0;
- gridBagConstraints69.insets = new Insets(0, 5, 0, 5);
- gridBagConstraints69.anchor = GridBagConstraints.WEST;
- gridBagConstraints69.gridy = 1;
- GridBagConstraints gridBagConstraints68 = new GridBagConstraints();
- gridBagConstraints68.fill = GridBagConstraints.BOTH;
- gridBagConstraints68.gridy = 0;
- gridBagConstraints68.ipady = 0;
- gridBagConstraints68.weightx = 1.0;
- gridBagConstraints68.insets = new Insets(0, 0, 0, 0);
- gridBagConstraints68.gridx = 1;
- GridBagConstraints gridBagConstraints67 = new GridBagConstraints();
- gridBagConstraints67.gridx = 0;
- gridBagConstraints67.ipadx = 0;
- gridBagConstraints67.ipady = 0;
- gridBagConstraints67.insets = new Insets(0, 5, 0, 5);
- gridBagConstraints67.anchor = GridBagConstraints.WEST;
- gridBagConstraints67.gridy = 0;
GridBagConstraints gridBagConstraints66 = new GridBagConstraints();
gridBagConstraints66.gridx = 0;
gridBagConstraints66.insets = new Insets(0, 5, 5, 5);
jMenuHelpAbout.setText("バージョン情報");
jMenuHelpAbout.addActionListener(new MainFrame_jMenuHelpAbout_ActionAdapter(
this));
- VideoInfoPanel.setLayout(gridBagLayout1);
- VideoID_TextField.setText("http://www.nicovideo.jp/watch/");
- DoButton.setText(DoButtonDefString);
- DoButton.addActionListener(new MainFrame_DoButton_actionAdapter(this));
SavingInfoTabPanel.setLayout(new GridLayout());
UserInfoPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "ユーザ設定"));
UserInfoPanel.setLayout(gridBagLayout3);
avfilterOptionLabel.setText("avfilterオプション");
FontIndexLabel.setText("フォント番号");
- VideoID_Label.setText("URL/ID");
- WayBackLabel.setText("過去ログ");
- OpPanel.setLayout(new GridBagLayout());
BasicInfoTabPanel.setLayout(gridBagLayout12);
jMenuBar1.add(jMenuFile);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(mainTabbedPane, java.awt.BorderLayout.CENTER);
- contentPane.add(VideoInfoPanel, java.awt.BorderLayout.NORTH);
+ contentPane.add(videoInfoPanel, java.awt.BorderLayout.NORTH);
UserInfoPanel.add(passwordField, new GridBagConstraints(1, 1, 1, 1,
1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 5, 5, 5), 0, 0));
setFFMpegOptionCheckbox();
- VideoInfoPanel.add(DoButton, gridBagConstraints71);
- VideoInfoPanel.add(OpPanel, new GridBagConstraints(0, 0, 1, 1, 1.0,
- 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 0), 0, 0));
- OpPanel.add(VideoID_Label, gridBagConstraints67);
- OpPanel.add(VideoID_TextField, gridBagConstraints68);
- OpPanel.add(WayBackLabel, gridBagConstraints69);
- OpPanel.add(WayBackField, gridBagConstraints70);
mainTabbedPane.add(BasicInfoTabPanel, "基本設定");
mainTabbedPane.add(SavingInfoTabPanel, "保存設定");
ffmpegPathField.addMouseListener(new PopupRightClick(
this.ffmpegPathField));
vhookPathField.addMouseListener(new PopupRightClick(this.vhookPathField));
- VideoID_TextField.addMouseListener(new PopupRightClick(
- this.VideoID_TextField));
+ videoIdField.addMouseListener(new PopupRightClick(
+ this.videoIdField));
viewCommentField.addMouseListener(new PopupRightClick(
this.viewCommentField));
fontPathField.addMouseListener(new PopupRightClick(this.fontPathField));
mailAddressField.addMouseListener(new PopupRightClick(this.mailAddressField));
passwordField.addMouseListener(new PopupRightClick(this.passwordField));
- WayBackField.addMouseListener(new PopupRightClick(this.WayBackField));
+ wayBackField.addMouseListener(new PopupRightClick(this.wayBackField));
proxyTextField.addMouseListener(new PopupRightClick(this.proxyTextField));
proxyPortTextField.addMouseListener(new PopupRightClick(
// FFmpegの設定 ここまで
private JLabel FontIndexLabel = new JLabel();
private JTextField fontIndexField = new JTextField();
- private JLabel VideoID_Label = new JLabel();
- private JLabel WayBackLabel = new JLabel();
- private JTextField WayBackField = new JTextField();
- private GridBagLayout gridBagLayout1 = new GridBagLayout();
- private JPanel OpPanel = new JPanel();
private JPanel BasicInfoTabPanel = new JPanel();
private GridBagLayout gridBagLayout12 = new GridBagLayout();
private JPanel ConvertingSettingPanel = null;
if (info != null) {
url = info.getNicoId();
} else {
+ // TODO これはダメ…だけどそのうちこの処理自体削除になる
url = "";
}
} catch (Exception ex) {
return;
}
} else {
- url = VideoID_TextField.getText();
+ url = videoIdField.getText();
}
TextProgressListener sl = new TextProgressListener() {
public void run() {
switch (s) {
case STOPPING:
- DoButton.setText(DoButtonWaitString);
+ doButton.setText(DoButtonWaitString);
break;
case FINISHED:
- DoButton.setText(DoButtonDefString);
+ doButton.setText(DoButtonDefString);
}
}
});
}
};
- Converter = new Converter(url, WayBackField.getText(), getSetting().toProfile(), sl,
+ final String id = Util.getVideoId(url);
+ Converter = new Converter(id, getSetting().toProfile(), sl,
new ConvertStopFlag(scl));
- DoButton.setText(DoButtonStopString);
- new Thread(Converter).start();
+ doButton.setText(DoButtonStopString);
+ FutureTask<Boolean> task = new FutureTask<Boolean>(Converter);
+ new Thread(task).start();
}
NGWordSettingPanel = new JPanel();
NGWordSettingPanel.setLayout(new GridBagLayout());
NGWordSettingPanel.setBorder(BorderFactory.createTitledBorder(null,
- "NGワード・ID設定"));
+ "NGワード・ID設定(半角スペース区切りで複数入力)"));
NGWordSettingPanel.add(NGWordLabel, gridBagConstraints2);
NGWordSettingPanel.add(getNGWordTextField(), gridBagConstraints3);
NGWordSettingPanel.add(NGIDLabel, gridBagConstraints4);
String folder = savePanel.getCommentSavedFolderField().getText();
boolean adjustNumOfCom = savePanel.getFixCommentNumCheckBox().isSelected();
+ final String txt = wayBackField.getText();
+ long backLogPoint;
+ try {
+ backLogPoint = (StringUtils.isNotBlank(txt)) ? WayBackTimeParser.parse(txt) : -1;
+ } catch (IOException ex) {
+ backLogPoint = -1;
+ }
return new InputCommentSetting(download, autoNaming, new File(folder), new File(file), delete, adjustNumOfCom,
- back_comment);
+ back_comment, reduceCommentCheckBox.isSelected(), backLogPoint);
}
/**
private void mask(boolean b) {
final VideoSaveInfoPanel panel = videoSaveInfoPanel;
- VideoID_TextField.setEditable(b);
+ videoIdField.setEditable(b);
panel.getDelVideoCheckBox().setEnabled(b);
panel.getSaveFolderRadioButton().setEnabled(b);