From e068c9acf06cff7673fadfca686128f6d6d66e20 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期一, 12 八月 2019 11:12:57 +0800 Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div --- fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 38 insertions(+), 16 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java index ff47881..ea2b1cc 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java @@ -1,6 +1,9 @@ package com.yeshi.fanli.util.jd; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLEncoder; @@ -524,26 +527,45 @@ return null; } - + + public static String getJDGoodsJS() { + InputStream input = JDUtil.class.getClassLoader().getResourceAsStream("jdGoods.js"); + StringBuilder sb = new StringBuilder(); + String line; + BufferedReader br = new BufferedReader(new InputStreamReader(input)); + try { + while ((line = br.readLine()) != null) { + sb.append(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + return sb.toString(); + } + + static String jdGoodsJs = null; + static ScriptEngine engine = null; + static { + if (jdGoodsJs == null) + jdGoodsJs = getJDGoodsJS(); + ScriptEngineManager manager = new ScriptEngineManager(); + engine = manager.getEngineByName("javascript"); + try { + engine.eval(jdGoodsJs); + } catch (Exception e) { + } + } + public static String getJDGoodsId(String url) { try { - if (url.startsWith("https://item.m.jd.com/product/") || url.startsWith("http://item.m.jd.com/product/") - || url.startsWith("https://item.jd.com/") || url.startsWith("http://item.jd.com/")) { - String preUrl = url.split("\\?")[0]; - String index = preUrl.split("/")[preUrl.split("/").length - 1]; - index = index.split("\\.")[0]; - return index.trim(); - } else if (url.startsWith("https://item.m.jd.com/ware/view.action?")) { - String preUrl = url.substring(url.indexOf("?") + 1, url.length()); - String[] sts = preUrl.split("&"); - for (String st : sts) { - if (st.startsWith("wareId=")) { - return st.split("=")[1].trim(); - } - } + if (engine instanceof Invocable) { + Invocable in = (Invocable) engine; + String goodsId = in.invokeFunction("getGoodsId", url).toString(); + if (!StringUtil.isNullOrEmpty(goodsId)) + return goodsId.trim(); } - } catch (Exception e) { + e.printStackTrace(); } return null; } -- Gitblit v1.8.0