OSDN Git Service

置換文字設定を削除
[coroid/NicoBrowser.git] / src / nicobrowser / main / Main.java
index 897683c..16cb41f 100644 (file)
@@ -2,7 +2,6 @@
 package nicobrowser.main;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -15,11 +14,13 @@ import javax.persistence.Persistence;
 import javax.persistence.Query;
 import javax.swing.JFrame;
 import javax.swing.SwingUtilities;
-import nicobrowser.Config;
+import nicobrowser.config.Config;
 import nicobrowser.GetFlvResult;
-import nicobrowser.Config.NicoFeed;
+import nicobrowser.NamePattern;
 import nicobrowser.NicoHttpClient;
+import nicobrowser.ProgressListener;
 import nicobrowser.VideoInfo;
+import nicobrowser.config.NicoFeed;
 import nicobrowser.entity.NicoContent;
 import nicobrowser.entity.NicoContent.Status;
 import nicobrowser.gui.config.ConfigFrame;
@@ -30,15 +31,16 @@ import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.commons.io.FilenameUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Main {
 
-    public static final String VERSION = "version 0.4.0";
-    private static Log log = LogFactory.getLog(Main.class);
+    public static final String VERSION = "0.11.0";
+    private static Logger log = LoggerFactory.getLogger(Main.class);
 
-    public static void main(String[] args) throws IOException {
+    public static void main(String[] args) throws Exception {
         final boolean res = Config.createNewConfigFiles();
 
         CommandLineParser parser = new PosixParser();
@@ -73,6 +75,9 @@ public class Main {
         if (args.length > 0 && "sync".equals(args[0])) {
             updater.sync();
             return;
+        } else if (args.length > 0 && "sync4".equals(args[0])) {
+            updater.sync_for_4();
+            return;
         }
         updater.update();
 
@@ -108,7 +113,12 @@ public class Main {
         NicoHttpClient instance = null;
         try {
             log.info("リストを取得します");
-            instance = new NicoHttpClient();
+            if (config.getProxyUse()) {
+                final int port = Integer.parseInt(config.getProxyPort());
+                instance = new NicoHttpClient(config.getProxyHost(), port);
+            } else {
+                instance = new NicoHttpClient();
+            }
             List<NicoFeed> feeds = config.getNicoFeeds();
             for (NicoFeed f : feeds) {
                 List<NicoContent> list = instance.getContentsFromRss(f.getUrl());
@@ -163,8 +173,8 @@ public class Main {
 
             Query query = manager.createQuery("SELECT cont FROM NicoContent AS cont " + "WHERE ?1 <> cont.status").
                     setParameter(1, NicoContent.Status.GET_FILE);
+            @SuppressWarnings("unchecked")
             List<NicoContent> results = query.getResultList();
-            instance.login(config.getNicoMail(), config.getNicoPassword());
             Date prevDate = null;
             for (NicoContent c : results) {
                 if (c.getFailTimes() >= config.getMaxRetry()) {
@@ -184,12 +194,23 @@ public class Main {
                     }
                 }
                 prevDate = Calendar.getInstance().getTime();
-                File saveLocation = new File(config.getSrcSaveDir(), c.getFileName());
+                File saveDir = new File(config.getSrcSaveDir());
+                NamePattern np = new NamePattern(config.getFileNamePattern(), c.getTitle());
                 log.info("ファイルを取得します: " + c.getNicoId() + " " + c.getTitle());
+                final boolean authed = instance.challengeAuth();
+                if (!authed) {
+                    log.info("ログインします");
+                    instance.login(config.getNicoMail(), config.getNicoPassword());
+                }
                 try {
                     VideoInfo vi = instance.getVideoInfo(c.getNicoId());
-                    GetFlvResult result = instance.getFlvFile(vi,
-                            saveLocation.getCanonicalPath(), c.getStatus(), config.needLowFile());
+                    GetFlvResult result = instance.getFlvFile(vi, saveDir, np, c.getStatus(), config.needLowFile(),
+                            ProgressListener.EMPTY_LISTENER);
+
+                    final File f = result.getFile();
+                    if(f != null){
+                        c.setFileName(FilenameUtils.getBaseName(f.toString()));
+                    }
                     c.setAuthor(result.getAuthor());
                     Status status = result.getStatus();
                     c.setStatus(status);
@@ -218,9 +239,10 @@ public class Main {
     private void save(EntityManager manager, NicoContent c) {
         Query query = manager.createQuery("SELECT cont FROM NicoContent AS cont " + "WHERE ?1 = cont.nicoId").
                 setParameter(1, c.getNicoId());
+        @SuppressWarnings("unchecked")
         List<NicoContent> resList = query.getResultList();
         if (resList.isEmpty()) {
-            log.info("NEW! " + c.getNicoId() + " : " + c.getFileName());
+            log.info("NEW! " + c.getNicoId() + " : " + c.getTitle());
             manager.persist(c);
         }
     }