diff --git a/README.md b/README.md index b09e88a..7d10950 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,6 @@ ============ 适合里站,表站未知(访问不了~囧)。 -百度网盘:[egdownloader0.55.exe](http://pan.baidu.com/s/1sjmatxr) 下载。 +百度网盘:[egdownloader0.60.exe](http://pan.baidu.com/s/1i3ioXmt) 下载。 ![结构](./ui.png) diff --git a/script/search.js b/script/search.js index 2b6601d..357cd22 100644 --- a/script/search.js +++ b/script/search.js @@ -9,7 +9,7 @@ var mark = {//标志符 date : ['white-space:nowrap">', ''],//类型 btUrl : ['', "return popUp('", "', 610, 590)"],//bt地址 - uploader : ['http://exhentai.org/uploader', '/', '">']//上传者 + uploader : ['http://exhentai.org/uploader', '>', '']//上传者 }; function parseJsonArray(array){ @@ -89,7 +89,7 @@ function parse(source){ } //上传者 var uploaderTemp = subFromSource(source, mark.uploader[0]); - task.uploader = unescape(interceptFromSource(uploaderTemp, mark.uploader[1], mark.uploader[2])); + task.uploader = interceptFromSource(uploaderTemp, mark.uploader[1], mark.uploader[2]); tasks.push(task); source = subFromSource(source, prefix); i ++; diff --git a/script/version b/script/version index 0991f5b..c6f52b4 100644 --- a/script/version +++ b/script/version @@ -1 +1 @@ -V.2015.03.25 \ No newline at end of file +V.2015.03.26 \ No newline at end of file diff --git a/script/version.properties b/script/version.properties new file mode 100644 index 0000000..bb91675 --- /dev/null +++ b/script/version.properties @@ -0,0 +1,5 @@ +script_create_url=https://raw.githubusercontent.com/dipoo/egdownloader/master/script/createTasks2.js +script_collect_url=https://raw.githubusercontent.com/dipoo/egdownloader/master/script/collectPicture.js +script_download_url=https://raw.githubusercontent.com/dipoo/egdownloader/master/script/download.js +script_search_url=https://raw.githubusercontent.com/dipoo/egdownloader/master/script/search.js +script_version_url=https://raw.githubusercontent.com/dipoo/egdownloader/master/script/version \ No newline at end of file diff --git a/src/org/arong/egdownloader/model/ScriptParser.java b/src/org/arong/egdownloader/model/ScriptParser.java index b904b18..a6aa056 100644 --- a/src/org/arong/egdownloader/model/ScriptParser.java +++ b/src/org/arong/egdownloader/model/ScriptParser.java @@ -263,7 +263,7 @@ public static String[] search(String source, Setting setting) throws ConnectTime Map param = new HashMap(); param.put("htmlSource", source); Object result = parseJsScript(param, getSearchScriptFile(setting.getSearchScriptPath())); - return result.toString().split("\\###"); + return result == null ? null : result.toString().split("\\###"); } public static void testScript(String url, JTextArea resultArea, Setting setting, boolean create, boolean collect, boolean download){ diff --git a/src/org/arong/egdownloader/ui/ComponentConst.java b/src/org/arong/egdownloader/ui/ComponentConst.java index efa88c9..4d2a84e 100644 --- a/src/org/arong/egdownloader/ui/ComponentConst.java +++ b/src/org/arong/egdownloader/ui/ComponentConst.java @@ -1,9 +1,12 @@ package org.arong.egdownloader.ui; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import org.arong.egdownloader.spider.WebClient; import org.arong.egdownloader.ui.window.EgDownloaderWindow; @@ -60,11 +63,11 @@ public final class ComponentConst { public static String countHtml; - public final static String SCRIPT_CREATE_URL = "https://raw.githubusercontent.com/dipoo/egdownloader/master/script/createTask.js"; - public final static String SCRIPT_COLLECT_URL = "https://raw.githubusercontent.com/dipoo/egdownloader/master/script/collectPicture.js"; - public final static String SCRIPT_DOWNLOAD_URL = "https://raw.githubusercontent.com/dipoo/egdownloader/master/script/download.js"; - public final static String SCRIPT_SEARCH_URL = "https://raw.githubusercontent.com/dipoo/egdownloader/master/script/search.js"; - public final static String SCRIPT_VERSION_URL = "https://raw.githubusercontent.com/dipoo/egdownloader/master/script/version"; + public static String SCRIPT_CREATE_URL = "http://raw.githubusercontent.com/dipoo/egdownloader/master/script/createTask.js"; + public static String SCRIPT_COLLECT_URL = "http://raw.githubusercontent.com/dipoo/egdownloader/master/script/collectPicture.js"; + public static String SCRIPT_DOWNLOAD_URL = "http://raw.githubusercontent.com/dipoo/egdownloader/master/script/download.js"; + public static String SCRIPT_SEARCH_URL = "http://raw.githubusercontent.com/dipoo/egdownloader/master/script/search.js"; + public static String SCRIPT_VERSION_URL = "http://raw.githubusercontent.com/dipoo/egdownloader/master/script/version"; static{ InputStream s = null; @@ -97,6 +100,30 @@ public final class ComponentConst { countHtml = "没有找到" + RESOURCES_PATH + "count.html文件"; } + Properties scriptProp = new Properties(); + try { + scriptProp.load(new FileReader("script/version.properties")); + if(scriptProp.get("script_create_url") != null){ + SCRIPT_CREATE_URL = scriptProp.get("script_create_url").toString(); + } + if(scriptProp.get("script_collect_url") != null){ + SCRIPT_COLLECT_URL = scriptProp.get("script_collect_url").toString(); + } + if(scriptProp.get("script_download_url") != null){ + SCRIPT_DOWNLOAD_URL = scriptProp.get("script_download_url").toString(); + } + if(scriptProp.get("script_search_url") != null){ + SCRIPT_SEARCH_URL = scriptProp.get("script_search_url").toString(); + } + if(scriptProp.get("script_version_url") != null){ + SCRIPT_VERSION_URL = scriptProp.get("script_version_url").toString(); + } + } catch (FileNotFoundException e) { + + } catch (IOException e) { + + } + SKIN_ICON.put("add", "_add.png"); SKIN_ICON.put("delete", "_delete.png"); SKIN_ICON.put("setting", "_setting.png"); diff --git a/src/org/arong/egdownloader/ui/table/SearchTasksTable.java b/src/org/arong/egdownloader/ui/table/SearchTasksTable.java index 7fd6612..5cff0cd 100644 --- a/src/org/arong/egdownloader/ui/table/SearchTasksTable.java +++ b/src/org/arong/egdownloader/ui/table/SearchTasksTable.java @@ -92,7 +92,7 @@ public Component getTableCellRendererComponent(JTable table, Object value, if(column == 0){//类型 tc.setPreferredWidth(105); tc.setMaxWidth(105); - JLabel l = new AJLabel("", tasks.get(row).getType() == null ? "" : (tasks.get(row).getType() + ".png"), c, JLabel.LEFT); + JLabel l = new AJLabel("", tasks.get(row).getType() == null ? "" : (tasks.get(row).getType().toLowerCase() + ".png"), c, JLabel.LEFT); return l; }else if(column == 1){//名称 tc.setPreferredWidth(700); @@ -111,7 +111,7 @@ public Component getTableCellRendererComponent(JTable table, Object value, }else if(column == 2){//上传者 tc.setPreferredWidth(100); tc.setMaxWidth(150); - final JLabel l = new AJLabel(value.toString(), c, font, JLabel.LEFT); + JLabel l = new AJLabel(value.toString(), c, font, JLabel.LEFT); l.setForeground(uploaderColor); l.setToolTipText("点击搜索该上传者的上传的漫画"); return l; diff --git a/src/org/arong/egdownloader/ui/window/InitWindow.java b/src/org/arong/egdownloader/ui/window/InitWindow.java index 7cc1138..0b48cd1 100644 --- a/src/org/arong/egdownloader/ui/window/InitWindow.java +++ b/src/org/arong/egdownloader/ui/window/InitWindow.java @@ -21,7 +21,6 @@ import org.arong.egdownloader.model.Setting; import org.arong.egdownloader.model.Task; import org.arong.egdownloader.spider.WebClient; -import org.arong.egdownloader.spider.WebClientException; import org.arong.egdownloader.ui.ComponentConst; import org.arong.egdownloader.ui.swing.AJLabel; import org.arong.egdownloader.ui.table.TaskingTable; @@ -107,9 +106,9 @@ public int compare(Task o1, Task o2) { textLabel.setText(Version.NAME + "-检测远程脚本"); //检测脚本是否发生变化 try { - scriptVersion = WebClient.postRequest(ComponentConst.SCRIPT_VERSION_URL); + scriptVersion = WebClient.getRequestUseJava(ComponentConst.SCRIPT_VERSION_URL, null); String currentVersion = FileUtil.getTextFromReader(new FileReader("script/version")); - if(!currentVersion.equals(scriptVersion)){ + if(scriptVersion != null && !currentVersion.equals(scriptVersion)){ int r = JOptionPane.showConfirmDialog(null, "远程脚本发生变化,是否同步?"); this.toFront(); if(r == JOptionPane.YES_OPTION){ @@ -120,8 +119,6 @@ public int compare(Task o1, Task o2) { }else{ startMain(); } - }catch (WebClientException e) { - startMain(); }catch (SocketTimeoutException e) { startMain(); }catch (ConnectTimeoutException e) { diff --git a/src/org/arong/egdownloader/ui/window/SearchComicWindow.java b/src/org/arong/egdownloader/ui/window/SearchComicWindow.java index df76134..c153f6b 100644 --- a/src/org/arong/egdownloader/ui/window/SearchComicWindow.java +++ b/src/org/arong/egdownloader/ui/window/SearchComicWindow.java @@ -102,16 +102,16 @@ public void keyPressed(KeyEvent e) { optionPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); optionPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(new Color(Integer.parseInt("bababa", 16)), 1), "条件过滤")); optionPanel.setBounds(6, 55, ComponentConst.CLIENT_WIDTH - 23, 65); - JCheckBox c1 = new AJCheckBox("DOUJINSHI", Color.BLUE, font, false); - JCheckBox c2 = new AJCheckBox("MANGA", Color.BLUE, font, false); - JCheckBox c3 = new AJCheckBox("ARTISTCG", Color.BLUE, font, false); - JCheckBox c4 = new AJCheckBox("GAMECG", Color.BLUE, font, false); - JCheckBox c5 = new AJCheckBox("WESTERN", Color.BLUE, font, false); + JCheckBox c1 = new AJCheckBox("DOUJINSHI", Color.BLUE, font, true); + JCheckBox c2 = new AJCheckBox("MANGA", Color.BLUE, font, true); + JCheckBox c3 = new AJCheckBox("ARTISTCG", Color.BLUE, font, true); + JCheckBox c4 = new AJCheckBox("GAMECG", Color.BLUE, font, true); + JCheckBox c5 = new AJCheckBox("WESTERN", Color.BLUE, font, true); JCheckBox c6 = new AJCheckBox("NON-H", Color.BLUE, font, true); - JCheckBox c7 = new AJCheckBox("IMAGESET", Color.BLUE, font, false); - JCheckBox c8 = new AJCheckBox("COSPLAY", Color.BLUE, font, false); - JCheckBox c9 = new AJCheckBox("ASIANPORN", Color.BLUE, font, false); - JCheckBox c10 = new AJCheckBox("MISC", Color.BLUE, font, false); + JCheckBox c7 = new AJCheckBox("IMAGESET", Color.BLUE, font, true); + JCheckBox c8 = new AJCheckBox("COSPLAY", Color.BLUE, font, true); + JCheckBox c9 = new AJCheckBox("ASIANPORN", Color.BLUE, font, true); + JCheckBox c10 = new AJCheckBox("MISC", Color.BLUE, font, true); final JComboBox language = new JComboBox(new String[]{"全部", "中文", "英文", "韩文", "法文", "西班牙"}); language.setSelectedIndex(1); language.addActionListener(new ActionListener() { diff --git a/src/org/arong/egdownloader/ui/window/SettingWindow.java b/src/org/arong/egdownloader/ui/window/SettingWindow.java index a3904da..87598bb 100644 --- a/src/org/arong/egdownloader/ui/window/SettingWindow.java +++ b/src/org/arong/egdownloader/ui/window/SettingWindow.java @@ -96,6 +96,7 @@ public SettingWindow(JFrame mainWindow) { settingTabPanel.setBounds(20, 0, 780, 450); + /* 基本配置 */ basicPanel = new JPanel(); basicPanel.setLayout(null); diff --git a/src/org/arong/egdownloader/ui/work/SearchComicWorker.java b/src/org/arong/egdownloader/ui/work/SearchComicWorker.java index 6350e6d..00a8966 100644 --- a/src/org/arong/egdownloader/ui/work/SearchComicWorker.java +++ b/src/org/arong/egdownloader/ui/work/SearchComicWorker.java @@ -33,14 +33,14 @@ protected Void doInBackground() throws Exception { try { String source = WebClient.postRequestWithCookie(this.url, mainWindow.setting.getCookieInfo()); String[] result = ScriptParser.search(source, mainWindow.setting); - String json = result[1]; - if(result.length > 2){ - for(int i = 2; i < result.length; i ++){ - json += "###" + result[i]; + if(result != null){ + String json = result[1]; + if(result.length > 2){ + for(int i = 2; i < result.length; i ++){ + json += "###" + result[i]; + } } - } - List searchTasks = JsonUtil.jsonArray2beanList(SearchTask.class, json); - if(!"null".equals(result[1])){ + List searchTasks = JsonUtil.jsonArray2beanList(SearchTask.class, json); String totalTasks = result[0].split(",")[0]; //总页数 String totalPage = result[0].split(",")[1];//Spider.getTextFromSource(source, "+Math.min(", ", Math.max("); @@ -56,7 +56,6 @@ protected Void doInBackground() throws Exception { } searchComicWindow.datas.get(searchComicWindow.key).put((currentPage) + "", searchTasks); searchComicWindow.showResult(totalPage, currentPage); - }else{ searchComicWindow.totalLabel.setText("搜索不到相关内容"); searchComicWindow.hideLoading(); diff --git a/src/org/arong/egdownloader/ui/work/UpdateScriptWorker.java b/src/org/arong/egdownloader/ui/work/UpdateScriptWorker.java index 08ecd59..584418d 100644 --- a/src/org/arong/egdownloader/ui/work/UpdateScriptWorker.java +++ b/src/org/arong/egdownloader/ui/work/UpdateScriptWorker.java @@ -78,7 +78,7 @@ protected Void doInBackground() throws Exception { }catch (Exception e) { } - JOptionPane.showMessageDialog(null, "同步完成"); + JOptionPane.showMessageDialog(mainWindow.settingWindow, "同步完成"); } }catch (ConnectTimeoutException e) { JOptionPane.showMessageDialog(null, "更新脚本出错,建议手动更新"); @@ -90,6 +90,11 @@ protected Void doInBackground() throws Exception { if(initWindow != null){ initWindow.startMain(); } + }catch (Exception e) { + JOptionPane.showMessageDialog(null, "更新脚本出错,建议手动更新"); + if(initWindow != null){ + initWindow.startMain(); + } }finally{ if(mainWindow != null){ SettingWindow settingWindow = (SettingWindow) mainWindow.settingWindow; diff --git a/ui.png b/ui.png index bf92c69..15845c9 100644 Binary files a/ui.png and b/ui.png differ