视频自定义标签插件

This commit is contained in:
userA
2023-10-23 01:16:18 +08:00
parent baa844c5f0
commit 5fec3f8196
52 changed files with 924 additions and 447 deletions

16
.idea/compiler.xml generated
View File

@@ -13,6 +13,7 @@
<module name="chopperbot-publish" />
<module name="chopperbot-console" />
<module name="chopperbot-file" />
<module name="chopperbot-test" />
<module name="chopperbot-live" />
<module name="chopperbot-creeper" />
<module name="chopperbot-barrage" />
@@ -20,21 +21,6 @@
<module name="chopperbot-section-work" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="AccountModule" target="11" />
<module name="BarrageModule" target="11" />
<module name="chopperbot-test" target="11" />
<module name="common" target="11" />
<module name="console" target="11" />
<module name="CreeperModule" target="11" />
<module name="FileModule" target="11" />
<module name="HotModule" target="11" />
<module name="LiveRecordModule" target="11" />
<module name="PublishModule" target="11" />
<module name="SectionModule" target="9" />
<module name="SectionWorkModule" target="11" />
<module name="VideoSectionModule" target="11" />
</bytecodeTargetLevel>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">

View File

@@ -17,12 +17,6 @@
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
@@ -33,22 +27,16 @@
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-file</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-publish</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>

View File

@@ -14,6 +14,8 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Date 2023/10/12
@@ -56,6 +58,15 @@ public class ChatGPTPlugin extends SpringBootPlugin {
return null;
}
public String getCommonRes(JSONObject resp){
Pattern pattern = Pattern.compile("\\[(.*?)]");
Matcher matcher = pattern.matcher(resp.getJSONArray("choices").getJSONObject(0).getJSONObject("message").getString("content"));
if (matcher.find()) return matcher.group(1);
return "";
}
private RequestBody buildBody(String msg){
return RequestBody.create(msg, MediaType.parse("application/json"));
}
@@ -87,8 +98,8 @@ public class ChatGPTPlugin extends SpringBootPlugin {
" \"model\" TEXT NOT NULL\n" +
")",mapper = GPTKeyMapper.class)
public List<GPTKey> sqlInit() {
return List.of(new GPTKey("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"
,"https://api.misakanetwork.com.cn/v1/chat/completions"
,"gpt-3.5-turbo-16k-0613"));
return List.of(new GPTKey("sk-xgUDtOdRgQLigz2D0e4cA665441e4287AfCf8458B1C21b0f"
,"https://oneapi.a9.gay/v1/chat/completions"
,"gpt-3.5-turbo"));
}
}

View File

@@ -0,0 +1,62 @@
package org.example.core.label;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.example.mapper.LabelMapper;
import org.example.plugin.SpringBootPlugin;
import org.example.pojo.VideoLabel;
import org.example.sql.annotation.SQLInit;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.awt.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Genius
* @date 2023/10/23 00:10
**/
@Component
public class LabelManagerPlugin extends SpringBootPlugin {
@Resource
LabelMapper mapper;
@Override
public boolean init() {
return super.init();
}
@Override
@SQLInit(table = "video_label",tableSQL = "CREATE TABLE \"video_label\" (\n" +
"\t\"id\"\tINTEGER NOT NULL,\n" +
"\t\"label\"\tTEXT NOT NULL UNIQUE,\n" +
"\tPRIMARY KEY(\"id\" AUTOINCREMENT)\n" +
")",mapper = LabelMapper.class)
public List<?> sqlInit() {
return List.of(new VideoLabel(null,"搞笑"),
new VideoLabel(null,"破防"),new VideoLabel(null,"泪目"),
new VideoLabel(null,"精彩操作"));
}
public List<String> labelStrList(){
return mapper.selectList(new QueryWrapper<>()).stream().map(VideoLabel::getLabel).collect(Collectors.toList());
}
public List<VideoLabel> labelList(){
return mapper.selectList(new QueryWrapper<>());
}
public boolean addLabel(VideoLabel label){
return mapper.insert(label)>0;
}
public boolean deleteLabel(String label){
return mapper.deleteByMap(Map.of("label",label))>0;
}
public boolean updateLabel(VideoLabel label){
return mapper.update(label,new QueryWrapper<VideoLabel>().eq("id",label.getId()))>0;
}
}

View File

@@ -0,0 +1,25 @@
package org.example.init;
import org.example.constpool.ModuleName;
import org.example.constpool.PluginName;
import org.example.core.gpt.ChatGPTPlugin;
import org.example.core.label.LabelManagerPlugin;
import org.example.plugin.SpringBootPlugin;
import org.example.plugin.annotation.Plugin;
import org.springframework.stereotype.Component;
/**
* @author Genius
* @date 2023/10/23 00:13
**/
@Plugin(moduleName = ModuleName.ACCOUNT,
pluginName = PluginName.LABEL_MANAGER,
pluginName_CN = "视频标签管理插件",
needPlugin = {},
pluginClass= LabelManagerPlugin.class,
springBootPlugin = true
)
@Component
public class LabelManagerPluginInitMachine extends SpringPlugInitMachine {
}

View File

@@ -0,0 +1,8 @@
package org.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.example.pojo.Video;
import org.example.pojo.VideoLabel;
public interface LabelMapper extends BaseMapper<VideoLabel> {
}

View File

@@ -0,0 +1,19 @@
package org.example.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Genius
* @date 2023/10/22 22:54
**/
@Data
@TableName("video_label")
@AllArgsConstructor
@NoArgsConstructor
public class VideoLabel {
private Integer id;
private String label;
}

View File

@@ -9,12 +9,15 @@ import org.example.core.bgevnet.bgscore.BarrageScoreCurvePlugin;
import org.example.service.LiverKeywordService;
import org.example.util.ConfigFileUtil;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static org.example.constpool.BarrageModuleConstPool.GLOBAL_KEY_WORD;
/**
* @author Genius
* @date 2023/10/13 16:45
@@ -47,7 +50,13 @@ public class BarrageScoreCurvePluginApi {
}
public List<LiverKeyword> getKeyWords(String anchor){
return barrageScoreCurvePlugin.getKetWords(anchor);
if(anchor.equals(GLOBAL_KEY_WORD)){
return keywordService.getGlobalKeyWords();
}else if(StringUtils.hasText(anchor)){
return keywordService.getLiverKeyWords(anchor);
}else{
return keywordService.getLiverKeyWords();
}
}
public List<LiverKeyword> getKeyWords(){

View File

@@ -7,6 +7,8 @@ import java.util.List;
public interface LiverKeywordService extends IService<LiverKeyword> {
List<LiverKeyword> getLiverKeyWords();
List<LiverKeyword> getLiverKeyWords(String liver);
List<LiverKeyword> getGlobalKeyWords();

View File

@@ -22,6 +22,11 @@ public class LiverKeywordServiceImpl extends ServiceImpl<LiverKeywordMapper, Liv
@Resource
private LiverKeywordMapper mapper;
@Override
public List<LiverKeyword> getLiverKeyWords() {
return query().list();
}
@Override
public List<LiverKeyword> getLiverKeyWords(String liver) {
return query().eq("liver",liver).list();

View File

@@ -18,4 +18,6 @@ public class ModuleName {
public static final String LIVE = ConstPool.LIVE_RECORD;
public static final String SECTION = ConstPool.SECTION;
public static final String ACCOUNT = ConstPool.ACCOUNT;
public static final String SECTION_WORK = ConstPool.SECTION_WORK;
}

View File

@@ -49,6 +49,7 @@ public class PluginName {
public static final String ACCOUNT_MANAGER = "AccountManager";
public static final String LABEL_MANAGER = "LabelManager";
public static final String LIVE_CONFIG_PLUGIN= "LiveConfig";

View File

@@ -12,7 +12,8 @@ public enum LoggerType {
Barrage("Barrage "),
LiveRecord("LiveRecord "),
Account("Account "),
Section("Section ");
Section("Section "),
SectionWork("SectionWork");
private String loggerName;
LoggerType(String name){

View File

@@ -57,6 +57,11 @@
<artifactId>chopperbot-section</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-section-work</artifactId>
</dependency>
<dependency>
<groupId>io.github.969025903</groupId>
<artifactId>assistant</artifactId>

View File

@@ -46,11 +46,7 @@ public class BarrageController {
@CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN})
@GetMapping("/barrageScoreCurve/keywords")
public Result getKeyWords(@RequestParam(required = false) String liver) {
if (StringUtils.hasText(liver)) {
return Result.success(Map.of("list", barrageService.barrageScoreCurvePluginApi().getKeyWords(liver)));
} else {
return Result.success(Map.of("list", barrageService.barrageScoreCurvePluginApi().getKeyWords()));
}
return Result.success(Map.of("list", barrageService.barrageScoreCurvePluginApi().getKeyWords(liver)));
}
@CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN})

View File

@@ -1,5 +1,6 @@
package org.example.service;
import org.example.api.SystemFileApi;
import org.example.pojo.vo.ConfigVO;
import org.example.util.Result;
@@ -18,4 +19,6 @@ public interface FileService {
//获取所有文件
List<ConfigVO> getAllConfigs();
SystemFileApi systemFileApi();
}

View File

@@ -1,5 +1,6 @@
package org.example.service.impl;
import org.example.api.SystemFileApi;
import org.example.cache.FileCache;
import org.example.cache.FileCacheManagerInstance;
import org.example.bean.FileType;
@@ -43,4 +44,9 @@ public class FileServiceImpl implements FileService {
}
return configVOList;
}
@Override
public SystemFileApi systemFileApi() {
return null;
}
}

View File

@@ -0,0 +1,47 @@
package org.example.api;
import org.example.constpool.GlobalFileCache;
import org.example.constpool.ModuleName;
import org.example.init.InitPluginRegister;
import org.example.pojo.vo.FileVO;
import org.example.util.FileUtil;
import org.springframework.stereotype.Component;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Genius
* @date 2023/10/20 23:51
**/
@Component
public class SystemFileApi {
public List<FileVO> videoFileList(){
String src = GlobalFileCache.ModuleSrcConfigFile.get("src", ModuleName.LIVE).toString();
List<FileVO> fileVOS = FileUtil.listFiles(src, new ArrayList<>());
return fileVOS.stream().filter(fileVO -> {
return fileVO.getFileName().endsWith(".flv");
}).collect(Collectors.toList());
}
public List<FileVO> barrageFileList(){
String src = GlobalFileCache.ModuleSrcConfigFile.get("src", ModuleName.BARRAGE).toString();
List<FileVO> fileVOS = new ArrayList<>();
fileVOS.addAll(FileUtil.listFiles(Path.of(src,"online").toString(), new ArrayList<>()));
fileVOS.addAll(FileUtil.listFiles(Path.of(src,"record").toString(), new ArrayList<>()));
return fileVOS;
}
public List<FileVO> logFileList(){
String src = GlobalFileCache.ModuleSrcConfigFile.get("src", ModuleName.CREEPER).toString();
return FileUtil.listFiles(Path.of(src, "log").toString(), new ArrayList<>());
}
public boolean deleteFile(String url){
return FileUtil.deleteFile(url);
}
}

View File

@@ -0,0 +1,19 @@
package org.example.pojo.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Genius
* @date 2023/10/20 23:27
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileVO {
private String fileName;
private String fileUrl;
private String createTime;
private Long fileSize;
}

View File

@@ -6,6 +6,7 @@ package org.example.util;
**/
import org.example.method.FileCondition;
import org.example.pojo.vo.FileVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -15,6 +16,9 @@ import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 文件工具类
@@ -165,4 +169,45 @@ public class FileUtil {
public static String convertTimeToFile(String time){
return time.replace(":", "_");
}
public static List<FileVO> listFiles(String dirPath,List<FileVO> fileVOS){
return listFiles(new File(dirPath),fileVOS);
}
public static List<FileVO> listFiles(File folder,List<FileVO> fileVOS) {
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
// 处理文件
FileVO fileVO;
if ((fileVO=processFile(file))!=null) {
fileVOS.add(fileVO);
}
} else if (file.isDirectory()) {
// 递归处理子文件夹
listFiles(file,fileVOS);
}
}
}
}
return fileVOS;
}
public static FileVO processFile(File file) {
if (file.isFile()) {
String fileName = file.getName();
long fileSize = file.length();
String createTime = TimeUtil.getFormatDate(file.lastModified());
return new FileVO(fileName, file.getPath(), createTime, fileSize);
}
return null;
}
public static void main(String[] args) {
List<FileVO> fileVOS = FileUtil.listFiles("./config/LiveRecord/", new ArrayList<>());
System.out.println(fileVOS.stream().filter(fileVO -> {
return fileVO.getFileName().endsWith(".flv");
}).collect(Collectors.toList()));
}
}

View File

@@ -18,6 +18,35 @@
</properties>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-common</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>chopperbot-account</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -3,7 +3,6 @@ package org.example.core.analysis;
import lombok.Data;
import org.example.bean.Barrage;
import org.example.pojo.AnalysisScheme;
import org.jdom2.output.EscapeStrategy;
import java.util.List;
@@ -18,10 +17,6 @@ public class AnalysisSchemeBuilder {
private List<Barrage> barrages;
public AnalysisSchemeBuilder labels(String msg){
scheme.setLabels(msg);
return this;
}
public AnalysisSchemeBuilder system(String msg){
scheme.setSystem(msg);

View File

@@ -4,12 +4,17 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import org.example.bean.Barrage;
import org.example.constpool.PluginName;
import org.example.core.gpt.ChatGPTMsgBuilder;
import org.example.core.gpt.ChatGPTPlugin;
import org.example.core.label.LabelManagerPlugin;
import org.example.init.InitPluginRegister;
import org.example.mapper.AnalysisSchemeMapper;
import org.example.plugin.SpringBootPlugin;
import org.example.pojo.AnalysisScheme;
import org.example.pojo.VideoLabel;
import org.example.sql.annotation.SQLInit;
import org.example.util.ExceptionUtil;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -64,38 +69,30 @@ public class EmotionAnalysisPlugin extends SpringBootPlugin {
public String analysis(List<Barrage> barrages){
try {
barrage = List.of(barrages.stream().map(Barrage::getContent).collect(Collectors.toList())).toString();
List<String> list = InitPluginRegister.getPlugin(PluginName.LABEL_MANAGER, LabelManagerPlugin.class).labelStrList();
ChatGPTMsgBuilder builder = new ChatGPTMsgBuilder().model(chatGPTPlugin.getKey().getModel())
.system(this.scheme.getSystem())
.system(this.scheme.getSystem(list.toString()))
.user("弹幕:" + barrage)
.stream(false);
JSONObject object = chatGPTPlugin.reqGPT(builder);
// System.out.println(object.getJSONArray("choices").getJSONObject(0).getJSONObject("message").getString("content"));
Pattern pattern = Pattern.compile("\\[(.*?)]");
Matcher matcher = pattern.matcher(object.getJSONArray("choices").getJSONObject(0).getJSONObject("message").getString("content"));
if (matcher.find()) return matcher.group(1);
return chatGPTPlugin.getCommonRes(object);
} catch (Exception e){
throw new RuntimeException("analysis failed!please check or try again!");
this.error("标题生成失败", String.format("标题生成失败,原因:%s", ExceptionUtil.getCause(e)),true);
return "";
}
return "";
}
@Override
@SQLInit(table = "analysis_scheme",tableSQL = "CREATE TABLE \"analysis_scheme\" (\n" +
" \"id\" integer NOT NULL,\n" +
" \"labels\" TEXT NOT NULL,\n" +
" \"system\" text NOT NULL,\n" +
" \"comment\" TEXT,\n" +
" PRIMARY KEY (\"id\")\n" +
")",mapper = AnalysisSchemeMapper.class)
public List<AnalysisScheme> sqlInit() {
return List.of(new AnalysisScheme(null,"搞笑,秀操作,破防,泪目",
return List.of(new AnalysisScheme(null,
"请你作为一个专门看直播的观众,对下列的观众发送的弹幕内容进行分析,然后根据弹幕内容返回从以下几个标签返回给我最合适的一个标签来形容这段内容",
"方案一"));
}

View File

@@ -1,5 +1,5 @@
package org.example.core.auto;
public interface AutoGenerator <T>{
T generate();
T generate(Object data);
}

View File

@@ -0,0 +1,61 @@
package org.example.core.auto.video.title;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.example.constpool.PluginName;
import org.example.exception.plugin.PluginDependOnException;
import org.example.exception.plugin.PluginNotRegisterException;
import org.example.init.InitPluginRegister;
import org.example.mapper.TitleSchemeMapper;
import org.example.pojo.TitleScheme;
import org.example.sql.annotation.SQLInit;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author Genius
* @date 2023/10/22 18:03
**/
@Component
public class GptTitleGenerator implements TitleGenerator{
@Resource
TitleSchemeMapper titleSchemeMapper;
private List<TitleScheme> schemeList;
public GptTitleGenerator() {
this.schemeList = new ArrayList<>();
}
@Override
public String generate(Object data) {
return null;
}
@Override
@SQLInit(table = "title_scheme",tableSQL = "CREATE TABLE \"title_scheme\" (\n" +
"\t\"id\"\tINTEGER NOT NULL,\n" +
"\t\"system\"\tTEXT NOT NULL,\n" +
"\t\"type\"\tTEXT,\n" +
"\tPRIMARY KEY(\"id\" AUTOINCREMENT)\n" +
")",mapper = TitleSchemeMapper.class)
public Object preGenerate() {
if (!InitPluginRegister.isRegister(PluginName.CHAT_GPT)) {
throw PluginDependOnException.MissingFatherPlugin(PluginName.CHAT_GPT,"");
}
try {
schemeList = titleSchemeMapper.selectList(new QueryWrapper<>());
}catch (Exception e){
throw new RuntimeException("读取title_scheme表失败");
}
return List.of(new TitleScheme(null,"请你学习以下标题风格并对这种风格做出总结。命名为风格A\n" +
"标题一:姿态被搞到破防崩溃,上演大型红温现场,这次生气不像演的感觉要掉小珍珠了!\n" +
"标题二:PDD节食减肥高光时刻回顾饭后猛炫6只去皮鸡腿 \n" +
"标题三:BLG击败FNC外战一把不输外战幻神BLG武器神Bin天降晕四个斩获三杀 \n" +
"标题四:前有TheShy天神下凡一锤四今有刚神下凡一斩四海龟剑姬jjking荣归故里吊打小代\n" +
"标题五:属于男生的综艺来了!姿态最新惩罚局,一手辅助维克托上演“超鬼”"
,"global"));
}
}

View File

@@ -0,0 +1,28 @@
package org.example.core.auto.video.title;
import org.example.core.auto.AutoGenerator;
import org.example.plugin.SpringBootPlugin;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author Genius
* @date 2023/10/22 17:53
**/
@Component
public class TitleGeneratePlugin extends SpringBootPlugin {
private TitleGenerator autoGenerator;
@Override
public boolean init() {
return super.init();
}
public String generate(Object data) {
autoGenerator.preGenerate();
return autoGenerator.generate(data);
}
}

View File

@@ -0,0 +1,8 @@
package org.example.core.auto.video.title;
import org.example.core.auto.AutoGenerator;
public interface TitleGenerator extends AutoGenerator<String> {
Object preGenerate();
}

View File

@@ -3,7 +3,6 @@ package org.example.init;
import org.example.constpool.ModuleName;
import org.example.constpool.PluginName;
import org.example.core.analysis.EmotionAnalysisPlugin;
import org.example.core.gpt.ChatGPTPlugin;
import org.example.plugin.annotation.Plugin;
import org.springframework.stereotype.Component;
@@ -11,11 +10,11 @@ import org.springframework.stereotype.Component;
* @Date 2023/10/16
* @Author xiaochun
*/
@Plugin(moduleName = ModuleName.ACCOUNT,
@Plugin(moduleName = ModuleName.SECTION_WORK,
pluginName = PluginName.EMOTION_ANALYSIS,
pluginName_CN = "情感分析插件",
pluginDescription = "根据弹幕内容,分析其情感倾向,并给出对应的情感标签",
needPlugin = {PluginName.CHAT_GPT},
needPlugin = {PluginName.CHAT_GPT,PluginName.LABEL_MANAGER},
pluginClass= EmotionAnalysisPlugin.class,
springBootPlugin = true,
ignore=true

View File

@@ -0,0 +1,24 @@
package org.example.init.module;
import org.example.constpool.ModuleName;
import org.example.init.ModuleInitMachine;
import org.example.log.ChopperLogFactory;
import org.example.log.LoggerType;
import org.example.plugin.annotation.Module;
import java.util.List;
/**
* <p>用于初始化弹幕模块所需</p>
*
* @author welsir
* @date 2023/7/31 10:11
*/
@Module
public class SectionWorkModuleInitMachine extends ModuleInitMachine {
public SectionWorkModuleInitMachine() {
super(List.of(ModuleName.ACCOUNT),ChopperLogFactory.getLogger(LoggerType.SectionWork),
ModuleName.SECTION_WORK);
}
}

View File

@@ -0,0 +1,7 @@
package org.example.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.example.pojo.TitleScheme;
public interface TitleSchemeMapper extends BaseMapper<TitleScheme> {
}

View File

@@ -18,13 +18,11 @@ public class AnalysisScheme {
@TableId(value = "id")
private Long id;
private String labels;
private String system;
private String comment;
public String getSystem(){
return system + " 标签:[" + labels + "]";
public String getSystem(String labels){
return system + " 标签:" + labels;
}
}

View File

@@ -0,0 +1,23 @@
package org.example.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Genius
* @date 2023/10/22 17:52
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("title_scheme")
public class TitleScheme {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String system;
private String type;
}

View File

@@ -0,0 +1,11 @@
package org.example.core.section;
import org.springframework.stereotype.Component;
/**
* @author Genius
* @date 2023/10/22 20:56
**/
@Component
public class SectionParking {
}

View File

@@ -2,6 +2,8 @@ package org.example.core.section;
import lombok.Data;
import java.util.List;
/**
* @author Genius
* @date 2023/09/19 19:37
@@ -14,6 +16,7 @@ public class SectionRequest {
private long startTime;
private long endTime;
private List<String> barrages;
private String platform;
private String liver;

View File

@@ -1,17 +1,24 @@
package org.example.core.section;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.example.bean.Barrage;
import java.util.ArrayList;
import java.util.List;
/**
* @author Genius
* @date 2023/09/19 19:39
**/
@Data
@TableName("section_parking")
public class VideoSection {
private String videoPath;
private String tag;
private String liver;
private List<Barrage> barrages;
private String platform;
public VideoSection(String videoPath, String tag, String liver, String platform) {
@@ -19,5 +26,6 @@ public class VideoSection {
this.tag = tag;
this.liver = liver;
this.platform = platform;
barrages = new ArrayList<>();
}
}

View File

@@ -7,12 +7,14 @@ import org.example.constpool.ConstPool;
import org.example.constpool.FileNameBuilder;
import org.example.constpool.GlobalFileCache;
import org.example.plugin.SpringGuardPlugin;
import org.example.sql.annotation.SQLInit;
import org.example.util.FileUtil;
import org.example.util.TimeUtil;
import org.example.util.VideoUtil;
import org.springframework.stereotype.Component;
import java.nio.file.Paths;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
@@ -82,10 +84,18 @@ public class VideoSectionWorkShop extends SpringGuardPlugin {
}
}
public static void main(String[] args) {
String s1 = "2023-09-20 00:22:45";
long timeNaos = TimeUtil.getTimeNaos(s1);
String s = VideoUtil.formatTimeToFFMpeg((1695140913000L-timeNaos)/1000);
System.out.println(s);
@Override
@SQLInit(table = "section_parking",tableSQL = "CREATE TABLE \"section_parking\" (\n" +
"\t\"id\"\tINTEGER NOT NULL,\n" +
"\t\"video_name\"\tTEXT NOT NULL,\n" +
"\t\"liver\"\tTEXT NOT NULL,\n" +
"\t\"barrages\"\tTEXT NOT NULL,\n" +
"\t\"tag\"\tTEXT NOT NULL,\n" +
"\t\"date\"\tTEXT NOT NULL,\n" +
"\t\"platform\"\tTEXT,\n" +
"\tPRIMARY KEY(\"id\" AUTOINCREMENT)\n" +
")")
public List<?> sqlInit() {
return null;
}
}

View File

@@ -1,361 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="chopperbot-common" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.75" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.19" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.1" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.9" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.36.0.3" level="project" />
<orderEntry type="module" module-name="chopperbot-section" />
<orderEntry type="module" module-name="chopperbot-file" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.4" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.10.2" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ecs:4.2.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-kms:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacv:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:opencv:4.6.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:ffmpeg:5.1.2-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:flycapture:2.13.3.31-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:libdc1394:2.2.6-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:libfreenect:0.5.7-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:libfreenect2:0.2.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:librealsense:1.12.4-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:librealsense2:2.50.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:videoinput:0.200-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:artoolkitplus:2.3.1-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:flandmark:1.07-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:leptonica:1.82.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:tesseract:5.2.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:11" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:win:11" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:11" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:win:11" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86_64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86_64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:ffmpeg:linux-x86_64-gpl:5.1.2-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:ffmpeg:windows-x86_64-gpl:5.1.2-1.5.8" level="project" />
<orderEntry type="library" name="Maven: net.bramp.ffmpeg:ffmpeg:0.6.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.10" level="project" />
<orderEntry type="library" name="Maven: org.modelmapper:modelmapper:0.7.7" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:opencv-platform-gpu:4.6.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas-platform:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp-platform:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-arm64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:android-x86_64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-arm64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:ios-x86_64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-armhf:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-arm64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-ppc64le:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:linux-x86:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-arm64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:macosx-x86_64:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:windows-x86:1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-arm64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:android-x86_64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-arm64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:ios-x86_64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-x86_64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-armhf:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-arm64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:linux-ppc64le:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-arm64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:macosx-x86_64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:openblas:windows-x86_64:0.3.21-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:opencv:linux-x86_64-gpu:4.6.0-1.5.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:opencv:windows-x86_64-gpu:4.6.0-1.5.8" level="project" />
<orderEntry type="module" module-name="chopperbot-console" />
<orderEntry type="module" module-name="chopperbot-account" />
<orderEntry type="library" name="Maven: com.rabbitmq:amqp-client:5.9.0" level="project" />
<orderEntry type="module" module-name="chopperbot-publish" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.28" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.11.4" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.1" level="project" />
<orderEntry type="module" module-name="chopperbot-creeper" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.14.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="module" module-name="chopperbot-barrage" />
<orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.26" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt-api:0.11.5" level="project" />
<orderEntry type="library" name="Maven: com.tencent.tars:tars-client:1.7.2" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: com.tencent.tars:tars-net:1.7.2" level="project" />
<orderEntry type="library" name="Maven: com.tencent.tars:tars-context:1.7.2" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.reporter2:zipkin-sender-kafka11:2.7.4" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.reporter2:zipkin-reporter:2.7.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:kafka-clients:2.5.1" level="project" />
<orderEntry type="library" name="Maven: com.github.luben:zstd-jni:1.4.4-7" level="project" />
<orderEntry type="library" name="Maven: org.lz4:lz4-java:1.7.1" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.7.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.zipkin2:zipkin:2.9.4" level="project" />
<orderEntry type="library" name="Maven: io.opentracing.brave:brave-opentracing:0.31.1" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.31.0" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave:5.1.0" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-tests:5.1.0" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.reporter2:zipkin-sender-kafka08:2.7.4" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.reporter2:zipkin-sender-urlconnection:2.7.4" level="project" />
<orderEntry type="library" name="Maven: io.github.969025903:assistant:1.0.6" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.jsonwebtoken:jjwt-impl:0.11.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt-gson:0.11.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.6.2" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
<orderEntry type="library" name="Maven: oro:oro:2.0.8" level="project" />
<orderEntry type="module" module-name="chopperbot-hot" />
<orderEntry type="module" module-name="chopperbot-live" />
<orderEntry type="library" name="Maven: us.codecraft:webmagic-core:0.8.0" level="project" />
<orderEntry type="library" name="Maven: us.codecraft:xsoup:0.3.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
<orderEntry type="library" name="Maven: us.codecraft:webmagic-extension:0.8.0" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:3.3.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.8.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.14" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.14" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.14" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20210307" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:5.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.20" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.apache.santuario:xmlsec:2.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.woodstox:woodstox-core:5.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.codehaus.woodstox:stax2-api:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-all:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.13" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-constants:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.13" level="project" />
<orderEntry type="library" name="Maven: xalan:xalan:2.7.2" level="project" />
<orderEntry type="library" name="Maven: xalan:serializer:2.7.2" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-extension:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gui-util:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-i18n:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-rasterizer-ext:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-rasterizer:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-slideshow:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-squiggle-ext:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-squiggle:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgbrowser:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgpp:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svgrasterizer:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-swing:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ttf2svg:1.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.13" level="project" />
<orderEntry type="library" name="Maven: de.rototor.pdfbox:graphics2d:0.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.pdfbox:pdfbox:2.0.22" level="project" />
<orderEntry type="library" name="Maven: org.apache.pdfbox:fontbox:2.0.22" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-devtools-v115:4.11.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-support:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.browserup:browserup-proxy-core:2.1.1" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: xyz.rogfam:littleproxy:2.0.0-beta-5" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: com.barchart.udt:barchart-udt-bundle:2.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.browserup:browserup-proxy-mitm:2.1.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.4" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.jcraft:jzlib:1.1.3" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: dnsjava:dnsjava:2.1.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.brotli:dec:0.1.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.openjdk.nashorn:nashorn-core:15.4" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:7.3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm-commons:7.3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm-analysis:7.3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm-tree:7.3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm-util:7.3.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.9.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
<orderEntry type="library" name="Maven: net.minidev:json-smart:2.3" level="project" />
<orderEntry type="library" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
<orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
<orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
<orderEntry type="library" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.20" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.13.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.13.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.java-websocket:Java-WebSocket:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-java:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-devtools-v85:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-devtools-v93:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-devtools-v94:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-devtools-v95:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-edge-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-firefox-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-firefox-xpi-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-ie-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-opera-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-safari-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-chrome-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.google.auto.service:auto-service-annotations:1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.auto.service:auto-service:1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.auto:auto-common:1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-chromium-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-json:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-api:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-remote-driver:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.beust:jcommander:1.81" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-kqueue:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-api:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-context:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-exporter-logging:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk-metrics:1.6.0-alpha" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk-common:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.6.0-alpha" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk-trace:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-api-metrics:1.6.0-alpha" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-sdk:1.6.0" level="project" />
<orderEntry type="library" name="Maven: io.opentelemetry:opentelemetry-semconv:1.6.0-alpha" level="project" />
<orderEntry type="library" name="Maven: io.ous:jtoml:2.0.0" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.20" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-exec:1.3" level="project" />
<orderEntry type="library" name="Maven: org.asynchttpclient:async-http-client:2.12.3" level="project" />
<orderEntry type="library" name="Maven: org.asynchttpclient:async-http-client-netty-utils:2.12.3" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.59.Final" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: com.typesafe.netty:netty-reactive-streams:2.0.4" level="project" />
<orderEntry type="library" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
<orderEntry type="library" name="Maven: org.seleniumhq.selenium:selenium-http:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.jfree:jfreechart:1.5.3" level="project" />
<orderEntry type="library" name="Maven: org.jfree:jcommon:1.0.23" level="project" />
<orderEntry type="library" name="Maven: com.hankcs:hanlp:portable-1.7.8" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.9.0" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.3.72" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:3.2.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio-jvm:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.43" level="project" />
<orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.43" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.akamai.edgegrid:edgegrid-signer-core:5.0.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.26" level="project" />
</component>
</module>

Binary file not shown.

View File

@@ -119,5 +119,49 @@
<artifactId>okio</artifactId>
<version>3.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.sf.phat/sphinx4-core -->
<dependency>
<groupId>net.sf.phat</groupId>
<artifactId>sphinx4-core</artifactId>
<version>5prealpha</version>
</dependency>
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>3.3.1</version>
<exclusions>
<!-- 排除windows 32位系统 -->
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-win32</artifactId>
</exclusion>
<!-- 排除linux 32位系统 -->
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-linux32</artifactId>
</exclusion>
<!-- 排除Mac系统-->
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-osx64</artifactId>
</exclusion>
<!-- 排除osxm-->
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-osxm1</artifactId>
</exclusion>
<!-- 排除arm-->
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-linux-arm32</artifactId>
</exclusion>
<exclusion>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-linux-arm64</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,38 @@
package org.example.sectionwork;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.example.ConsoleApplication;
import org.example.util.JsonFileUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Genius
* @date 2023/10/22 18:28
**/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ConsoleApplication.class,webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class TitleGenerateTest {
@Test
public void test(){
Map<String, Object> map = JsonFileUtil.readJsonFile("E:\\Project\\ChopperBot\\config\\Barrage\\online\\huya\\Uzi_2023-10-18 21_22_57.json");
Object data = map.get("data");
if(data instanceof JSONArray){
List<String> content = ((JSONArray) data).stream().map(o -> {
if (o instanceof JSONObject) {
return ((JSONObject) o).get("content").toString();
}
return "";
}).collect(Collectors.toList());
System.out.println(content);
}
}
}

View File

@@ -0,0 +1,107 @@
package org.example.sectionwork;
import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.SpeechResult;
import edu.cmu.sphinx.api.StreamSpeechRecognizer;
import org.junit.Test;
import ws.schild.jave.Encoder;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.AudioAttributes;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.encode.VideoAttributes;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author Genius
* @date 2023/10/22 23:50
**/
public class VoiceToTextTest {
public static boolean videoToVideo(String videoSource, String videoTarget) {
// Date time = new Date();
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
// System.out.println(simpleDateFormat.format(time));
long start = System.currentTimeMillis();
File source = new File(videoSource);
File target = new File(videoTarget);
AudioAttributes audio = new AudioAttributes();
audio.setCodec("aac");
audio.setBitRate(236000 / 2);
audio.setChannels(2);
audio.setSamplingRate(8000);
VideoAttributes video = new VideoAttributes();
video.setCodec("h264");
video.setBitRate(1000000);
video.setFrameRate(25);
video.setQuality(4);
// video.setSize(new VideoSize(720, 480));
EncodingAttributes attrs = new EncodingAttributes();
attrs.setOutputFormat("mp4");
attrs.setAudioAttributes(audio);
attrs.setVideoAttributes(video);
Encoder encoder = new Encoder();
try {
encoder.encode(new MultimediaObject(source), target, attrs);
return true;
} catch (Exception e) {
e.printStackTrace();
System.out.println(encoder.getUnhandledMessages());
return false;
}finally {
// time = new Date();
// System.out.println(simpleDateFormat.format(time));
long end = System.currentTimeMillis();
System.out.println("总耗时:"+ (end-start) +"ms");
}
}
public static void main(String[] args) throws IOException {
videoToAudio("E:\\Project\\chopperbot-1.0\\1.mp4","E:\\Project\\chopperbot-1.0\\audioTest.mp3");
Configuration configuration = new Configuration();
configuration.setAcousticModelPath("resource:/zh_cn.cd_cont_5000");
configuration.setDictionaryPath("resource:/zh_cn.dic");
configuration.setLanguageModelPath("resource:/zh_cn.lm.bin");
StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);
InputStream stream = new FileInputStream("E:\\Project\\chopperbot-1.0\\audioTest.mp3");
recognizer.startRecognition(stream);
SpeechResult result;
while ((result = recognizer.getResult()) != null) {
System.out.format("识别内容: %s\n", result.getHypothesis());
}
}
public static boolean videoToAudio(String videoPath, String audioPath){
File fileMp4 = new File(videoPath);
File fileMp3 = new File(audioPath);
AudioAttributes audio = new AudioAttributes();
audio.setCodec("libmp3lame");
audio.setBitRate(128000);
audio.setChannels(2);
audio.setSamplingRate(44100);
EncodingAttributes attrs = new EncodingAttributes();
attrs.setOutputFormat("mp3");
attrs.setAudioAttributes(audio);
Encoder encoder = new Encoder();
MultimediaObject mediaObject = new MultimediaObject(fileMp4);
try{
encoder.encode(mediaObject,fileMp3,attrs);
return true;
}catch (Exception e){
return false;
}
}
}

View File

@@ -6,9 +6,9 @@
"LiverFollower":{
"checkTime":60000,
"focusRecord":1,
"focusLive":0,
"focusLive":1,
"focusBarrage":1
}
},
"updateTime":"2023-10-20 15:34:44"
"updateTime":"2023-10-20 17:07:39"
}

View File

@@ -36,5 +36,5 @@
"CreeperConfig":true
}
},
"updateTime":"2023-10-20 15:15:23"
"updateTime":"2023-10-20 17:36:40"
}

View File

@@ -17,9 +17,11 @@ const webSocket = new WebSocketClient(()=>{
},(event)=>{
let dataMap = webSocket.decodeMsg(event.data)
let data = JSON.parse(dataMap.get("data"))
const notice: Notice = {...data,ago:'',color:'',icon:'',confirm:false };
noticeStore.sendNotice(notice)
unCheckNotice.value = noticeStore.getUnConfirmNoticeBox
if(data!=null){
const notice: Notice = {...data,ago:'',color:'',icon:'',confirm:false };
noticeStore.sendNotice(notice)
unCheckNotice.value = noticeStore.getUnConfirmNoticeBox
}
});
@@ -28,6 +30,19 @@ const confirmNotice = (index:number) =>{
noticeStore.confirmNotice(index);
}
const timeMap = new Map()
const hoverConfirm = (index:number) =>{
timeMap.set(index,setTimeout(()=>{
confirmNotice(index)
},500));
}
const unHoverConfirm = (index:number) =>{
timeMap.get(index)&& clearTimeout(timeMap.get(index))
}
</script>
<template>
@@ -46,17 +61,12 @@ const confirmNotice = (index:number) =>{
<v-list elevation="1" lines="three" density="compact" width="400">
<v-list-subheader>Notifications</v-list-subheader>
<v-list-item v-for="(message, i) in unCheckNotice" :key="i" @click="confirmNotice(i)">
<!-- ---------------------------------------------- -->
<!-- Prepend-->
<!-- ---------------------------------------------- -->
<template v-slot:prepend>
<v-avatar size="40" :color="message.color">
<v-icon color="white">{{ message.icon }}</v-icon>
</v-avatar>
</template>
<!-- ---------------------------------------------- -->
<!-- Append-->
<!-- ---------------------------------------------- -->
<template v-slot:append>
<div class="full-h d-flex align-center">
<span class="text-body-2 text-grey"> {{ message.ago }}</span>

View File

@@ -0,0 +1,18 @@
import { defineStore } from "pinia";
import {Point} from "@/views/app/barrage/curve/PointTypes";
export const useBarrageCurveStore = defineStore({
id: "notice",
state: () => ({
noticeOpen:ref(true),
nowPoints:ref<Point[]>([]),
barrageFiles:ref([]),
}),
getters: {
},
actions: {
},
});

View File

@@ -5,6 +5,94 @@
:options="lineAreaChartSpline.chartOptions"
:series="lineAreaChartSpline.series"
></apexchart>
<v-row class="my-2">
<v-col cols="6">
<div class="first-div">
<v-card height="100%">
<v-list :items="items"></v-list>
</v-card>
</div>
</v-col>
<v-col cols="6">
<div class="second-div">
<v-card height="100%" class="mx-auto">
<v-toolbar color="transparent" class="px-0">
<v-app-bar-nav-icon></v-app-bar-nav-icon>
<v-toolbar-title>{{ title }}</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn icon>
<v-icon>mdi mdi-cog</v-icon>
</v-btn>
<template v-slot:extension>
<v-tabs
v-model="tabs"
color="primary"
grow
>
<v-tab
:value="1"
>
<v-icon>mdi mdi-monitor-dashboard</v-icon>
</v-tab>
<v-tab
:value="2"
>
<v-icon>mdi mdi-chart-pie</v-icon>
</v-tab>
<v-tab
:value="3"
>
<v-icon>mdi mdi-notebook-multiple</v-icon>
</v-tab>
</v-tabs>
</template>
</v-toolbar>
<v-window v-model="tabs">
<v-window-item
:key="1"
:value="1"
>
<v-card>
<v-card-text>
<iframe
width="100%"
height="600"
src=" E:\Project\ChopperBot\config\Barrage\online\huya"
frameborder="0"
></iframe>
</v-card-text>
</v-card>
</v-window-item>
<v-window-item
:key="2"
:value="2"
>
<v-card>
<BarrageDataLabels></BarrageDataLabels>
</v-card>
</v-window-item>
<v-window-item
:key="3"
:value="3"
>
<v-card>
<v-card-text>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</v-card-text>
</v-card>
</v-window-item>
</v-window>
</v-card>
</div>
</v-col>
</v-row>
</template>
<script setup lang="ts">
@@ -14,6 +102,10 @@ import {
} from "@/api/barrage/barrageCurveApi";
import {nanosToFormat} from "@/utils/timeUtils";
import ApexLineAreaCharts from "@/components/charts/apexchart/ApexLineAreaCharts.vue";
import BarrageDataLabels from "@/views/app/barrage/curve/compus/BarrageDataLabels.vue";
const tabs = ref(1);
const titles = ["监控台","弹幕统计","关键词"]
const title = ref(titles[tabs.value-1])
const lineAreaChartSpline = ref({
series: [
{
@@ -90,14 +182,16 @@ const lineAreaChartSpline = ref({
onMounted(async ()=>{
await curveList().then((res=>{
const points = res?.data?.list[0]
const points = res?.data?.list[1]
lineAreaChartSpline.value.series[0].data = points.points.map(item=>item.pointScore)
lineAreaChartSpline.value.series[1].data = points.points.map(item=>item.pointScore)
lineAreaChartSpline.value.chartOptions.xaxis.categories = points.points.map(item=>nanosToFormat(item.startTime).toString())
}))
})
watch(tabs,(newValue,oldValue)=>{
title.value = titles[tabs.value-1]
})
</script>
<style scoped>

View File

@@ -0,0 +1,8 @@
export interface Point{
barrageNum:number,
barrages:string[],
duration:number,
endTime:number,
pointScore:number,
starTime:number,
}

View File

@@ -0,0 +1,73 @@
<template>
<div id="chart">
<apexchart type="bar" height="380" :options="chartOptions" :series="series"></apexchart>
</div>
</template>
<script setup lang="ts">
const series = [{
data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380]
}]
const chartOptions = {
chart: {
type: 'bar',
height: 380
},
plotOptions: {
bar: {
barHeight: '100%',
distributed: true,
horizontal: true,
dataLabels: {
position: 'bottom'
},
}
},
colors: ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e',
'#f48024', '#69d2e7'
],
dataLabels: {
enabled: true,
textAnchor: 'start',
style: {
colors: ['#fff']
},
formatter: function (val, opt) {
return opt.w.globals.labels[opt.dataPointIndex] + ": " + val
},
offsetX: 0,
dropShadow: {
enabled: true
}
},
stroke: {
width: 1,
colors: ['#fff']
},
xaxis: {
categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan',
'United States', 'China', 'India'
],
},
yaxis: {
labels: {
show: false
}
},
title: {
text: '热点弹幕',
align: 'center',
floating: true
},
subtitle: {
text: '统计该弹幕文件出现前10的弹幕',
align: 'center',
},
}
</script>
<style scoped>
</style>

View File

@@ -17,6 +17,7 @@ export const showNotice = (notice:Notice) => {
export const useNoticeStore = defineStore({
id: "notice",
state: () => ({
noticeOpen:ref(true),
noticeBox: ref<Notice[]>([]),
NoticeType:{
"info":{type:"success",icon:'mdi mdi-email-alert-outline',color:'green'},
@@ -61,6 +62,10 @@ export const useNoticeStore = defineStore({
confirmNotice(index:number){
this.noticeBox[index].confirm = true;
}
},
switchOpen(open:boolean){
this.noticeOpen = open;
},
},
});

View File

@@ -8,7 +8,7 @@ const snackbarStore = useSnackbarStore();
export const usePluginStore = defineStore({
id: "plugin",
state:()=>({
pluginList: [],
pluginList: ref([]),
currentLabel: "running",
labels:[
{

View File

@@ -17,7 +17,7 @@
<module>chopperbot-console</module>
<module>chopperbot-common</module>
<module>chopperbot-live</module>
<!-- <module>chopperbot-test</module>-->
<module>chopperbot-test</module>
</modules>
<packaging>pom</packaging>