diff --git a/chopperbot-barrage/src/main/java/org/example/api/BarrageScoreCurvePluginApi.java b/chopperbot-barrage/src/main/java/org/example/api/BarrageScoreCurvePluginApi.java new file mode 100644 index 0000000..4c105f9 --- /dev/null +++ b/chopperbot-barrage/src/main/java/org/example/api/BarrageScoreCurvePluginApi.java @@ -0,0 +1,83 @@ +package org.example.api; + +import org.example.bean.BarrageCurveVO; +import org.example.bean.LiverKeyword; +import org.example.config.BarrageModuleConfig; +import org.example.core.bgevnet.BarrageEvent; +import org.example.core.bgevnet.bgscore.BarragePoint; +import org.example.core.bgevnet.bgscore.BarrageScoreCurvePlugin; +import org.example.service.LiverKeywordService; +import org.example.util.ConfigFileUtil; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author Genius + * @date 2023/10/13 16:45 + **/ +@Component +public class BarrageScoreCurvePluginApi { + + @Resource + private BarrageScoreCurvePlugin barrageScoreCurvePlugin; + + @Resource + private LiverKeywordService keywordService; + + public List curveVOList(){ + List curveVOList = new ArrayList<>(); + barrageScoreCurvePlugin.getBarragePointMap().forEach( + (k,v)->{ + curveVOList.add(new BarrageCurveVO(k,v)); + } + ); + return curveVOList; + } + + public BarrageCurveVO generateCurve(String filePath){ + BarrageEvent event = new BarrageEvent(); + event.setFileName(filePath); + List points = barrageScoreCurvePlugin.generateCurve(event); + return new BarrageCurveVO(filePath,points); + } + + public BarrageCurveVO generateCurve(String filePath,String liver){ + BarrageEvent event = new BarrageEvent(); + event.setFileName(filePath); + event.setLiver(liver); + List points = barrageScoreCurvePlugin.generateCurve(event); + return new BarrageCurveVO(filePath,points); + } + + public List getKeyWords(String anchor){ + return barrageScoreCurvePlugin.getKetWords(anchor); + } + + public List getKeyWords(){ + return keywordService.getGlobalKeyWords(); + } + + public boolean updateKeyWord(LiverKeyword keyword){ + return keywordService.updateKeyWord(keyword); + } + + public boolean addKeyWord(LiverKeyword keyword){ + return keywordService.addKeyWord(keyword); + } + + public boolean deleteKeyWord(String anchor,String keyword){ + return keywordService.deleteKeyWord(anchor,keyword); + } + + public void changeSetting(Map settings){ + ConfigFileUtil.changeSetting(settings,BarrageModuleConfig.getFullFilePath(),"barrageScoreCurve"); + } + + public Object getSetting(){ + return ConfigFileUtil.getSetting(BarrageModuleConfig.getFullFilePath(),"barrageScoreCurve"); + } +} diff --git a/chopperbot-barrage/src/main/java/org/example/bean/BarrageCurveVO.java b/chopperbot-barrage/src/main/java/org/example/bean/BarrageCurveVO.java new file mode 100644 index 0000000..4dd14a6 --- /dev/null +++ b/chopperbot-barrage/src/main/java/org/example/bean/BarrageCurveVO.java @@ -0,0 +1,21 @@ +package org.example.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.example.core.bgevnet.bgscore.BarragePoint; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author Genius + * @date 2023/10/13 16:46 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BarrageCurveVO { + private String filePath; + private List points; +} diff --git a/chopperbot-barrage/src/main/java/org/example/core/bgevnet/BarrageEvent.java b/chopperbot-barrage/src/main/java/org/example/core/bgevnet/BarrageEvent.java index 6653750..f5b2bf9 100644 --- a/chopperbot-barrage/src/main/java/org/example/core/bgevnet/BarrageEvent.java +++ b/chopperbot-barrage/src/main/java/org/example/core/bgevnet/BarrageEvent.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import org.example.bean.Barrage; import org.example.constpool.BarrageModuleConstPool; import org.example.constpool.FileNameBuilder; @@ -24,6 +25,7 @@ import java.util.stream.Collectors; * @date 2023/09/13 18:21 **/ @Data +@NoArgsConstructor public class BarrageEvent { private String platform; @@ -63,6 +65,9 @@ public class BarrageEvent { } public String getBarrageFilePath(){ + if(platform==null||action==null){ + return fileName; + } return Paths.get(BarrageSaveFile.fileRoot(action,platform), fileName).toString(); } diff --git a/chopperbot-barrage/src/main/java/org/example/core/bgevnet/bgscore/BarrageScoreCurvePlugin.java b/chopperbot-barrage/src/main/java/org/example/core/bgevnet/bgscore/BarrageScoreCurvePlugin.java index 2d655c2..43567bc 100644 --- a/chopperbot-barrage/src/main/java/org/example/core/bgevnet/bgscore/BarrageScoreCurvePlugin.java +++ b/chopperbot-barrage/src/main/java/org/example/core/bgevnet/bgscore/BarrageScoreCurvePlugin.java @@ -14,6 +14,7 @@ import org.example.core.bgevnet.bgscore.split.SplitStrategyFactory; import org.example.plugin.SpringBootPlugin; import org.example.service.LiverKeywordService; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; @@ -55,12 +56,15 @@ public class BarrageScoreCurvePlugin extends SpringBootPlugin { String liver = event.getLiver(); String path = event.getBarrageFilePath(); long duration = Long.parseLong(fileCache.get("barrageScoreCurve", "duration").toString()); - List liverKeyWords = service.getLiverKeyWords(liver); + + List liverKeyWords = getKetWords(liver); + Map liverKeywordMap = generateKeyMap(liverKeyWords); String splitType = (String) fileCache.get("barrageScoreCurve", "splitStrategy"); String scoreType = (String) fileCache.get("barrageScoreCurve", "scoreStrategy"); AbstractScoreStrategy scoreStrategy = ScoreStrategyFactory.build(scoreType, liverKeywordMap); + if(scoreType!=null){ AbstractSplitStrategy splitStrategy = SplitStrategyFactory.build(splitType, scoreStrategy, barrages, duration,liverKeywordMap); if(splitStrategy!=null){ @@ -112,4 +116,8 @@ public class BarrageScoreCurvePlugin extends SpringBootPlugin { public static boolean isBan(String barrage,Map map){ return isBan0(barrage,globalKeywordMap)||isBan0(barrage,map); } + + public List getKetWords(String liver){ + return StringUtils.hasText(liver)?service.getLiverKeyWords(liver):new ArrayList<>(); + } }