Commit 1dc989fa by leiliangliang

更新微博图标采集程序和新增图标枚举类,枚举转换关系

parent cd6d34ac
package com.zhiwei.searchhotcrawler.bean;
/**
* 类型枚举
* @author
* @date
*/
public enum IconEnum {
/** icon图标转换 */
公益("jian_gongyi","益"),
推荐黄("recom_yellow","推荐黄"),
("boom","爆"),
("fei","沸"),
("hot","热"),
("new","新"),
推荐("jian","商"),
;
IconEnum(String name, String describe) {
this.name = name;
this.describe = describe;
}
/** 图标名 */
private String name;
/** 图标描述 */
private String describe;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
@Override
public String toString() {
return "IconEnum{" +
"name='" + name + '\'' +
", describe='" + describe + '\'' +
'}';
}}
package com.zhiwei.searchhotcrawler.bean;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class IconName {
private static Logger logger = LogManager.getLogger(IconName.class.getName());
/**
* k name
* v describe
* 根据名获取
**/
static Map<String, String> nameDescribeMap;
/**
* k describe
* v name
* 根据describe获取
**/
static Map<String, String> describeNameMap;
/**
* name
* index
* 方便前端取值的内存缓存
**/
static List<Map<String, String>> describeNameMapList = new ArrayList<>();
//为访问速度,增加冗余储存
static {
nameDescribeMap = Arrays.stream(IconEnum.values()).collect(Collectors.toMap(IconEnum::getName,
IconEnum::getDescribe, (k1, k2) -> k1));
describeNameMap = Arrays.stream(IconEnum.values()).collect(Collectors.toMap(IconEnum::getDescribe,
IconEnum::getName, (k1, k2) -> k1));
}
/**
* name
* describe
* 方便前端取值的内存缓存
**/
public List<Map<String, String>> getIndexNameMapList() {
if (describeNameMapList.isEmpty()) {
for (IconEnum iconEnum : IconEnum.values()) {
Map<String, String> map = new HashMap<>();
map.put("name",iconEnum.getName());
map.put("describe",iconEnum.getDescribe());
describeNameMapList.add(map);
}
}
return describeNameMapList;
}
/**
* 各类热搜字段对应
*
* @param describe
* @return
*/
public String describeName(String describe) {
if (describeNameMap.containsKey(describe)) {
return describeNameMap.get(describe);
} else {
logger.error("未找到相应热搜名称,describe={}", describe);
return null;
}
}
/**
* 图标名转换成描述
*
* @param name
* @return
*/
public String nameToDescribe(String name) {
if (nameDescribeMap.containsKey(name)) {
return nameDescribeMap.get(name);
} else {
logger.error("未找到相应热搜名称,name={}", name);
return null;
}
}
}
......@@ -2,6 +2,7 @@ package com.zhiwei.searchhotcrawler.crawler;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......@@ -309,7 +310,15 @@ public class WeiboHotSearchCrawler {
String iconUrl = cardInfo.getString("icon");
String icon = null;
if (StringUtils.isNotBlank(iconUrl)) {
icon = iconUrl.split("_")[1].split(".png")[0];
String[] iconString = iconUrl.split("_");
if (iconString.length==4){
icon =iconString[3].split(".png")[0];
icon =URLDecoder.decode(icon, "utf-8");
}else if (iconString.length==3){
icon =iconString[1]+"_"+iconString[2].split(".png")[0];
}else {
icon = iconString[1].split(".png")[0];
}
}
// String id = "http://s.weibo.com/weibo/" + URLCodeUtil.getURLEncode(name, "utf-8") + "&Refer=top";
String id = cardInfo.getString("scheme");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment