exclude;
/**
* 默认导入全局排除
*/
+ @Schema(description = "默认导入全局排除")
private Boolean importExclude;
/**
* 默认启用全局排除
*/
+ @Schema(description = "默认启用全局排除")
private Boolean enabledExclude;
/**
* BGM日语标题
*/
+ @Schema(description = "BGM日语标题")
private Boolean bgmJpName;
/**
* tmdb
*/
+ @Schema(description = "启用 TMDB")
private Boolean tmdb;
/**
* 获取标题时带有tmdbId
*/
+ @Schema(description = "标题带 TMDB ID")
private Boolean tmdbId;
/**
* 剧集标题是否支持plex命名方式
*/
+ @Schema(description = "Plex 命名方式")
private Boolean tmdbIdPlexMode;
/**
* tmdb 语言
*/
+ @Schema(description = "TMDB 语言")
private String tmdbLanguage;
/**
* 获取罗马音
*/
+ @Schema(description = "获取罗马音")
private Boolean tmdbRomaji;
/**
* 开启ip白名单
*/
+ @Schema(description = "开启 IP 白名单")
private Boolean ipWhitelist;
/**
* ip白名单
*/
+ @Schema(description = "IP 白名单")
private String ipWhitelistStr;
/**
* 显示已下载视频列表
*/
+ @Schema(description = "显示已下载视频列表")
private Boolean showPlaylist;
/**
* 检测遗漏集数
*/
+ @Schema(description = "检测遗漏集数")
private Boolean omit;
/**
@@ -319,295 +381,354 @@ public class Config implements Serializable {
*
* INPUT or AUTO
*/
+ @Schema(description = "BGM Token 类型")
private BgmTokenTypeEnum bgmTokenType;
/**
* bgmToken
*/
+ @Schema(description = "BGM Token")
private String bgmToken;
/**
* bgmAppID
*/
+ @Schema(description = "BGM App ID")
private String bgmAppID;
/**
* bgmAppID
*/
+ @Schema(description = "BGM App Secret")
private String bgmAppSecret;
/**
* bgmRefreshToken
*/
+ @Schema(description = "BGM Refresh Token")
private String bgmRefreshToken;
/**
* bgmRedirectUri
*/
+ @Schema(description = "BGM Redirect URI")
private String bgmRedirectUri;
/**
* api key
*/
+ @Schema(description = "API Key")
private String apiKey;
/**
* 按星期展示
*/
+ @Schema(description = "按星期展示")
private Boolean weekShow;
/**
* 只下载最新集
*/
+ @Schema(description = "只下载最新集")
private Boolean downloadNew;
/**
* 仅允许内网ip访问
*/
+ @Schema(description = "仅允许内网 IP 访问")
private Boolean innerIP;
/**
* 重命名模版
*/
+ @Schema(description = "重命名模版")
private String renameTemplate;
/**
* 重命名时剔除 年份 如 (2024)
*/
+ @Schema(description = "重命名剔除年份")
private Boolean renameDelYear;
/**
* 重命名时剔除 tmdbId [tmdbid=242143]
*/
+ @Schema(description = "重命名剔除 TMDB ID")
private Boolean renameDelTmdbId;
/**
* 校验登录IP
*/
+ @Schema(description = "校验登录 IP")
private Boolean verifyLoginIp;
/**
* 自动更新 trackers
*/
+ @Schema(description = "自动更新 trackers")
private Boolean autoTrackersUpdate;
/**
* Trackers更新地址
*/
+ @Schema(description = "Trackers 更新地址")
private String trackersUpdateUrls;
/**
* 消息模版
*/
+ @Schema(description = "消息模版")
private String notificationTemplate;
/**
* 自动更新
*/
+ @Schema(description = "自动更新")
private Boolean autoUpdate;
/**
* 版本
*/
+ @Schema(description = "版本")
private String version;
/**
* 获取BGM封面图片质量
*/
+ @Schema(description = "BGM 封面图片质量")
private String bgmImage;
/**
* 自定义CSS
*/
+ @Schema(description = "自定义 CSS")
private String customCss;
/**
* 自定义JS
*/
+ @Schema(description = "自定义 JS")
private String customJs;
/**
* 自定义集数获取规则
*/
+ @Schema(description = "自定义集数获取规则")
private Boolean customEpisode;
/**
* 自定义集数获取规则
*/
+ @Schema(description = "自定义集数获取规则表达式")
private String customEpisodeStr;
/**
* 自定义集数获取规则 groupIndex
*/
+ @Schema(description = "自定义集数获取规则 groupIndex")
private Integer customEpisodeGroupIndex;
/**
* OpenList driver
*/
+ @Schema(description = "OpenList Driver")
private String provider;
/**
* 添加行订阅是是否开启自动上传
*/
+ @Schema(description = "新增订阅自动上传")
private Boolean upload;
/**
* 上传速度限制
*/
+ @Schema(description = "上传速度限制")
private Long upLimit;
/**
* 下载速度限制
*/
+ @Schema(description = "下载速度限制")
private Long dlLimit;
/**
* 捐赠过期时间
*/
+ @Schema(description = "捐赠过期时间")
private Long expirationTime;
/**
* 爱发电订单号
*/
+ @Schema(description = "爱发电订单号")
private String outTradeNo;
/**
* 捐赠或试用是否过期
*/
+ @Schema(description = "捐赠或试用是否过期")
private Boolean verifyExpirationTime;
/**
* 试用
*/
+ @Schema(description = "试用")
private Boolean tryOut;
/**
* 摸鱼
*/
+ @Schema(description = "摸鱼")
private Boolean procrastinating;
/**
* 摸鱼天数
*/
+ @Schema(description = "摸鱼天数")
private Integer procrastinatingDay;
/**
* github 加速
*/
+ @Schema(description = "GitHub 加速")
private String github;
/**
* 自定义github加速
*/
+ @Schema(description = "自定义 GitHub 加速")
private Boolean customGithub;
/**
* 自定义github加速网址
*/
+ @Schema(description = "自定义 GitHub 加速地址")
private String customGithubUrl;
/**
* github Token
*/
+ @Schema(description = "GitHub Token")
private String githubToken;
/**
* 开启 OpenList 列表刷新
*/
+ @Schema(description = "开启 OpenList 列表刷新")
private Boolean alistRefresh;
/**
* OpenList 刷新延迟
*/
+ @Schema(description = "OpenList 刷新延迟")
private Long alistRefreshDelayed;
/**
* 自动更新总集数信息
*/
+ @Schema(description = "自动更新总集数信息")
private Boolean updateTotalEpisodeNumber;
/**
* 强制更新总集数信息
*/
+ @Schema(description = "强制更新总集数信息")
private Boolean forceUpdateTotalEpisodeNumber;
/**
* OpenList 离线超时 分钟
*/
+ @Schema(description = "OpenList 离线超时(分钟)")
private Integer alistDownloadTimeout;
/**
* OpenList 下载重试次数
*/
+ @Schema(description = "OpenList 下载重试次数")
private Long alistDownloadRetryNumber;
/**
* 设置备份
*/
+ @Schema(description = "设置备份")
private Boolean configBackup;
/**
* 备份天数
*/
+ @Schema(description = "备份天数")
private Integer configBackupDay;
/**
* 展示最后更新时间
*/
+ @Schema(description = "展示最后更新时间")
private Boolean showLastDownloadTime;
/**
* 番剧完结迁移
*/
+ @Schema(description = "番剧完结迁移")
private Boolean completed;
/**
* 番剧完结迁移位置
*/
+ @Schema(description = "番剧完结迁移位置")
private String completedPathTemplate;
/**
* 通知
*/
+ @Schema(description = "通知配置列表")
private List notificationConfigList;
/**
* 添加订阅时自动复制主rss至备用rss
*/
+ @Schema(description = "添加订阅时复制主RSS至备用")
private Boolean copyMasterToStandby;
/**
* 排序方式
*/
+ @Schema(description = "排序方式")
private SortTypeEnum sortType;
/**
* 代理列表
*/
+ @Schema(description = "代理列表")
private String proxyList;
/**
* 刮削开关
*/
+ @Schema(description = "刮削开关")
private Boolean scrape;
/**
* 重名的订阅将允许被替换
*/
+ @Schema(description = "重名订阅允许替换")
private Boolean replace;
/**
* 最大文件名长度 不包含后缀 如: .mkv .mp4
*/
+ @Schema(description = "最大文件名长度(不含后缀)")
private Integer maxFileNameLength;
/**
* 限制尝试次数
*/
+ @Schema(description = "限制尝试次数")
private Boolean limitLoginAttempts;
/**
* 构建信息
*/
+ @Schema(description = "构建信息")
private String buildInfo;
}
diff --git a/ani-rss-core/src/main/java/ani/rss/entity/CustomTmdbConfig.java b/ani-rss-application/src/main/java/ani/rss/entity/CustomTmdbConfig.java
similarity index 93%
rename from ani-rss-core/src/main/java/ani/rss/entity/CustomTmdbConfig.java
rename to ani-rss-application/src/main/java/ani/rss/entity/CustomTmdbConfig.java
index 5351ae22..689be0cd 100644
--- a/ani-rss-core/src/main/java/ani/rss/entity/CustomTmdbConfig.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/CustomTmdbConfig.java
@@ -2,8 +2,10 @@ package ani.rss.entity;
import ani.rss.util.other.ConfigUtil;
import cn.hutool.core.util.StrUtil;
+import io.swagger.v3.oas.annotations.media.Schema;
import wushuo.tmdb.api.entity.TmdbConfig;
+@Schema(description = "自定义 TMDB 配置")
public class CustomTmdbConfig extends TmdbConfig {
public final static Config CONFIG = ConfigUtil.CONFIG;
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/EmbyViews.java b/ani-rss-application/src/main/java/ani/rss/entity/EmbyViews.java
similarity index 62%
rename from ani-rss-domain/src/main/java/ani/rss/entity/EmbyViews.java
rename to ani-rss-application/src/main/java/ani/rss/entity/EmbyViews.java
index c8f529a5..3ba06965 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/EmbyViews.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/EmbyViews.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -10,7 +11,10 @@ import java.io.Serializable;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "Emby 媒体库")
public class EmbyViews implements Serializable {
+ @Schema(description = "id")
private String id;
+ @Schema(description = "名称")
private String name;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/EmbyWebHook.java b/ani-rss-application/src/main/java/ani/rss/entity/EmbyWebHook.java
similarity index 74%
rename from ani-rss-domain/src/main/java/ani/rss/entity/EmbyWebHook.java
rename to ani-rss-application/src/main/java/ani/rss/entity/EmbyWebHook.java
index 2f5108af..4dbe2925 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/EmbyWebHook.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/EmbyWebHook.java
@@ -1,6 +1,7 @@
package ani.rss.entity;
import com.google.gson.annotations.SerializedName;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -11,33 +12,43 @@ import java.io.Serializable;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "EmbyWebHook")
public class EmbyWebHook implements Serializable {
@SerializedName(value = "title", alternate = "Title")
+ @Schema(description = "标题")
private String title;
@SerializedName(value = "description", alternate = "Description")
+ @Schema(description = "描述")
private String description;
@SerializedName(value = "date", alternate = "Date")
+ @Schema(description = "日期")
private String date;
@SerializedName(value = "event", alternate = "Event")
+ @Schema(description = "事件")
private String event;
@SerializedName(value = "severity", alternate = "Severity")
+ @Schema(description = "严重级别")
private String severity;
@SerializedName(value = "user", alternate = "User")
+ @Schema(description = "用户信息")
private User user;
@SerializedName(value = "server", alternate = "Server")
+ @Schema(description = "服务器信息")
private Server server;
@SerializedName(value = "item", alternate = "Item")
+ @Schema(description = "项目信息")
private Item item;
@SerializedName(value = "playbackInfo", alternate = "PlaybackInfo")
+ @Schema(description = "播放信息")
private PlaybackInfo playbackInfo;
/**
@@ -45,23 +56,27 @@ public class EmbyWebHook implements Serializable {
*/
@Data
@Accessors(chain = true)
+ @Schema(description = "项目信息")
public static class Item implements Serializable {
/**
* 文件路径
*/
@SerializedName(value = "path", alternate = "Path")
+ @Schema(description = "文件路径")
private String path;
/**
* 剧集名
*/
@SerializedName(value = "seriesName", alternate = "SeriesName")
+ @Schema(description = "剧集名")
private String seriesName;
/**
* 文件名
*/
@SerializedName(value = "fileName", alternate = "FileName")
+ @Schema(description = "文件名")
private String fileName;
}
@@ -70,17 +85,20 @@ public class EmbyWebHook implements Serializable {
*/
@Data
@Accessors(chain = true)
+ @Schema(description = "用户信息")
public static class User implements Serializable {
/**
* 用户 Id
*/
@SerializedName(value = "id", alternate = "Id")
+ @Schema(description = "用户 Id")
private String id;
/**
* 用户名称
*/
@SerializedName(value = "name", alternate = "Name")
+ @Schema(description = "用户名称")
private String name;
}
@@ -89,23 +107,27 @@ public class EmbyWebHook implements Serializable {
*/
@Data
@Accessors(chain = true)
+ @Schema(description = "服务器信息")
public static class Server implements Serializable {
/**
* 服务器 Id
*/
@SerializedName(value = "id", alternate = "Id")
+ @Schema(description = "服务器 Id")
private String id;
/**
* 服务器名称
*/
@SerializedName(value = "name", alternate = "Name")
+ @Schema(description = "服务器名称")
private String name;
/**
* 服务器版本号
*/
@SerializedName(value = "version", alternate = "Version")
+ @Schema(description = "服务器版本号")
private String version;
}
@@ -114,11 +136,13 @@ public class EmbyWebHook implements Serializable {
*/
@Data
@Accessors(chain = true)
+ @Schema(description = "播放信息")
public static class PlaybackInfo implements Serializable {
/**
* 是否播放完成
*/
@SerializedName(value = "playedToCompletion", alternate = "PlayedToCompletion")
+ @Schema(description = "是否播放完成")
private Boolean playedToCompletion;
}
diff --git a/ani-rss-application/src/main/java/ani/rss/entity/Global.java b/ani-rss-application/src/main/java/ani/rss/entity/Global.java
new file mode 100644
index 00000000..35454b6f
--- /dev/null
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Global.java
@@ -0,0 +1,21 @@
+package ani.rss.entity;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@Schema(description = "全局变量")
+public class Global implements Serializable {
+ public static List ARGS = new ArrayList<>();
+
+ public static final ThreadLocal REQUEST = new ThreadLocal<>();
+ public static final ThreadLocal RESPONSE = new ThreadLocal<>();
+}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Item.java b/ani-rss-application/src/main/java/ani/rss/entity/Item.java
similarity index 63%
rename from ani-rss-domain/src/main/java/ani/rss/entity/Item.java
rename to ani-rss-application/src/main/java/ani/rss/entity/Item.java
index b2a4d61f..66b2b75a 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Item.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Item.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -11,59 +12,71 @@ import java.util.Date;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "下载项")
public class Item implements Serializable {
/**
* 标题
*/
+ @Schema(description = "标题")
private String title;
/**
* 重命名
*/
+ @Schema(description = "重命名")
private String reName;
/**
* 种子
*/
+ @Schema(description = "种子")
private String torrent;
/**
* infoHash
*/
+ @Schema(description = "infoHash")
private String infoHash;
/**
* 集数
*/
+ @Schema(description = "集数")
private Double episode;
/**
* 大小
*/
+ @Schema(description = "大小")
private String size;
/**
* 大小
*/
+ @Schema(description = "大小")
private Long length;
/**
* 本地已存在
*/
+ @Schema(description = "本地已存在")
private Boolean local;
/**
* 主 rss
*/
+ @Schema(description = "主 rss")
private Boolean master;
/**
* 字幕组
*/
+ @Schema(description = "字幕组")
private String subgroup;
/**
* 发布时间
*/
+ @Schema(description = "发布时间")
private Date pubDate;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Log.java b/ani-rss-application/src/main/java/ani/rss/entity/Log.java
similarity index 65%
rename from ani-rss-domain/src/main/java/ani/rss/entity/Log.java
rename to ani-rss-application/src/main/java/ani/rss/entity/Log.java
index ddced99e..c635a0d9 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Log.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Log.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -10,25 +11,30 @@ import java.io.Serializable;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "日志")
public class Log implements Serializable {
/**
* 日志信息
*/
+ @Schema(description = "日志信息")
private String message;
/**
* 日志级别
*/
+ @Schema(description = "日志级别")
private String level;
/**
* 类路径
*/
+ @Schema(description = "类路径")
private String loggerName;
/**
* 线程名
*/
+ @Schema(description = "线程名")
private String threadName;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Login.java b/ani-rss-application/src/main/java/ani/rss/entity/Login.java
similarity index 65%
rename from ani-rss-domain/src/main/java/ani/rss/entity/Login.java
rename to ani-rss-application/src/main/java/ani/rss/entity/Login.java
index e3b36e4b..a47127d9 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Login.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Login.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -10,21 +11,26 @@ import java.io.Serializable;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "登录")
public class Login implements Serializable {
/**
* 用户名
*/
+ @Schema(description = "用户名")
private String username;
/**
* 密码
*/
+ @Schema(description = "密码")
private String password;
/**
* ip
*/
+ @Schema(description = "ip")
private String ip;
/**
* key
*/
+ @Schema(description = "key")
private String key;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Mikan.java b/ani-rss-application/src/main/java/ani/rss/entity/Mikan.java
similarity index 83%
rename from ani-rss-domain/src/main/java/ani/rss/entity/Mikan.java
rename to ani-rss-application/src/main/java/ani/rss/entity/Mikan.java
index a3327af4..8034aac0 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Mikan.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Mikan.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -14,12 +15,16 @@ import java.util.Set;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "mikan")
public class Mikan implements Serializable {
+ @Schema(description = "季度信息")
private List seasons;
+ @Schema(description = "星期信息")
private List- items;
+ @Schema(description = "总番剧数")
private Integer totalItem;
/**
@@ -31,10 +36,12 @@ public class Mikan implements Serializable {
/**
* 年
*/
+ @Schema(description = "年")
private Integer year;
/**
* 季度
*/
+ @Schema(description = "季度")
private String season;
private Boolean select;
}
@@ -48,10 +55,12 @@ public class Mikan implements Serializable {
/**
* 星期
*/
+ @Schema(description = "星期")
private String label;
/**
* 番剧
*/
+ @Schema(description = "番剧")
private List items;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/MikanInfo.java b/ani-rss-application/src/main/java/ani/rss/entity/MikanInfo.java
similarity index 65%
rename from ani-rss-domain/src/main/java/ani/rss/entity/MikanInfo.java
rename to ani-rss-application/src/main/java/ani/rss/entity/MikanInfo.java
index 9c49b211..0f4eccea 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/MikanInfo.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/MikanInfo.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -11,45 +12,54 @@ import java.util.List;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "mikan 番剧信息")
public class MikanInfo implements Serializable {
/**
* 番剧 id
*/
+ @Schema(description = "番剧 id")
private String bangumiId;
/**
* 封面
*/
+ @Schema(description = "封面")
private String cover;
/**
* mikan url
*/
+ @Schema(description = "mikan url")
private String url;
/**
* 已存在
*/
+ @Schema(description = "已存在")
private Boolean exists;
/**
* 评分
*/
+ @Schema(description = "评分")
private Double score;
/**
* 标题
*/
+ @Schema(description = "标题")
private String title;
/**
* BGM
*/
+ @Schema(description = "BGM")
private String bgmUrl;
/**
* 字幕组
*/
+ @Schema(description = "字幕组")
private List groups;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/NotificationConfig.java b/ani-rss-application/src/main/java/ani/rss/entity/NotificationConfig.java
similarity index 72%
rename from ani-rss-domain/src/main/java/ani/rss/entity/NotificationConfig.java
rename to ani-rss-application/src/main/java/ani/rss/entity/NotificationConfig.java
index 23e0e9c4..f826a68c 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/NotificationConfig.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/NotificationConfig.java
@@ -3,6 +3,7 @@ package ani.rss.entity;
import ani.rss.enums.NotificationStatusEnum;
import ani.rss.enums.NotificationTypeEnum;
import ani.rss.enums.ServerChanTypeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -12,215 +13,268 @@ import java.util.List;
@Data
@Accessors(chain = true)
+@Schema(description = "通知配置")
public class NotificationConfig implements Serializable {
/**
* 启用
*/
+ @Schema(description = "启用")
private Boolean enable;
/**
* 重试次数
*/
+ @Schema(description = "重试次数")
private Integer retry;
/**
* 备注
*/
+ @Schema(description = "备注")
private String comment;
/**
* 通知模版
*/
+ @Schema(description = "通知模版")
private String notificationTemplate;
/**
* 通知类型
*/
+ @Schema(description = "通知类型")
private NotificationTypeEnum notificationType;
/**
* 邮箱 smtp
*/
+ @Schema(description = "邮箱 SMTP")
private String mailSMTPHost;
/**
* 邮箱 端口
*/
+ @Schema(description = "邮箱 端口")
private Integer mailSMTPPort;
/**
* 邮箱 发件人
*/
+ @Schema(description = "邮箱 发件人")
private String mailFrom;
/**
* 邮箱 密码
*/
+ @Schema(description = "邮箱 密码")
private String mailPassword;
/**
* 邮箱 SSL
*/
+ @Schema(description = "邮箱 SSL")
private Boolean mailSSLEnable;
/**
* 邮箱 TLS
*/
+ @Schema(description = "邮箱 TLS")
private Boolean mailTLSEnable;
/**
* 邮箱 收件人
*/
+ @Schema(description = "邮箱 收件人")
private String mailAddressee;
/**
* 邮箱 发送图片
*/
+ @Schema(description = "邮箱 发送图片")
private Boolean mailImage;
/**
* server酱类型:server酱和server酱3
*/
+ @Schema(description = "server酱类型")
private ServerChanTypeEnum serverChanType;
/**
* server酱 sendKey
*/
+ @Schema(description = "server酱 sendKey")
private String serverChanSendKey;
/**
* server酱3 apiUrl
*/
+ @Schema(description = "server酱3 apiUrl")
private String serverChan3ApiUrl;
/**
* server酱 标题事件
*/
+ @Schema(description = "server酱 标题事件")
private Boolean serverChanTitleAction;
/**
* 系统通知
*/
+ @Schema(description = "系统通知")
private Boolean systemMsg;
/**
* telegram bot token
*/
+ @Schema(description = "telegram bot token")
private String telegramBotToken;
/**
* telegram chat_id
*/
+ @Schema(description = "telegram chat_id")
private String telegramChatId;
/**
* telegram topic id
*/
+ @Schema(description = "telegram topic id")
private Integer telegramTopicId;
/**
* telegram Api Host
*/
+ @Schema(description = "telegram Api Host")
private String telegramApiHost;
/**
* telegram 发送图片
*/
+ @Schema(description = "telegram 发送图片")
private Boolean telegramImage;
/**
* telegram 格式
*/
+ @Schema(description = "telegram 格式")
private String telegramFormat;
/**
* webHookMethod
*/
+ @Schema(description = "WebHook 方法")
private String webHookMethod;
/**
* webHookUrl
*/
+ @Schema(description = "WebHook 地址")
private String webHookUrl;
/**
* webHookHeader
*/
+ @Schema(description = "WebHook Header")
private String webHookHeader;
/**
* webHookBody
*/
+ @Schema(description = "WebHook Body")
private String webHookBody;
/**
* emby扫描媒体库
*/
+ @Schema(description = "Emby 扫描媒体库")
private Boolean embyRefresh;
/**
* emby地址
*/
+ @Schema(description = "Emby 地址")
private String embyHost;
/**
* emby api密钥
*/
+ @Schema(description = "Emby API 密钥")
private String embyApiKey;
/**
* emby扫描媒体库
*/
+ @Schema(description = "Emby 扫描媒体库 ID 列表")
private List embyRefreshViewIds;
/**
* emby延迟扫描
*/
+ @Schema(description = "Emby 延迟扫描")
private Long embyDelayed;
+ @Schema(description = "Shell 命令")
private String shell;
/**
* 存活限制 秒
*/
+ @Schema(description = "存活限制 秒")
private Integer aliveLimit;
/**
* 文件移动目标位置
*/
+ @Schema(description = "文件移动目标位置")
private String fileMoveTarget;
/**
* 文件移动目标位置 OVA
*/
+ @Schema(description = "文件移动目标位置 OVA")
private String fileMoveOvaTarget;
/**
* 文件移动时删除旧的同集视频
*/
+ @Schema(description = "文件移动时删除旧的同集视频")
private Boolean fileMoveDeleteOldEpisode;
+ /**
+ * 文件移动 复制模式
+ */
+ @Schema(description = "文件移动 复制模式")
+ private Boolean fileMoveCopyModel;
+
/**
* OpenList Host
*/
+ @Schema(description = "OpenList Host")
private String openListUploadHost;
/**
* OpenList ApiKey
*/
+ @Schema(description = "OpenList ApiKey")
private String openListUploadApiKey;
/**
* OpenList 上传位置
*/
+ @Schema(description = "OpenList 上传位置")
private String openListUploadPath;
/**
* OpenList OVA/剧场版 上传位置
*/
+ @Schema(description = "OpenList OVA/剧场版 上传位置")
private String openListUploadOvaPath;
/**
* 上传完成后删除本地文件
*/
+ @Schema(description = "上传完成后删除本地文件")
private Boolean openListUploadDeleteLocalFile;
/**
* 删除同及文件
*/
+ @Schema(description = "删除同集文件")
private Boolean openListUploadDeleteOldEpisode;
/**
* 通知 状态
*/
+ @Schema(description = "通知状态")
private List statusList;
/**
* 顺序
*/
+ @Schema(description = "顺序")
private Long sort;
public static NotificationConfig createNotificationConfig() {
@@ -288,7 +342,8 @@ public class NotificationConfig implements Serializable {
notificationConfig
.setFileMoveTarget("/CD2/115/Media/番剧/${title}/Season ${season}")
.setFileMoveOvaTarget("/CD2/115/Media/剧场版/${title}")
- .setFileMoveDeleteOldEpisode(false);
+ .setFileMoveDeleteOldEpisode(false)
+ .setFileMoveCopyModel(false);
// OpenList
notificationConfig
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/OpenListFileInfo.java b/ani-rss-application/src/main/java/ani/rss/entity/OpenListFileInfo.java
similarity index 59%
rename from ani-rss-domain/src/main/java/ani/rss/entity/OpenListFileInfo.java
rename to ani-rss-application/src/main/java/ani/rss/entity/OpenListFileInfo.java
index efdf7429..439082b0 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/OpenListFileInfo.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/OpenListFileInfo.java
@@ -1,6 +1,7 @@
package ani.rss.entity;
import com.google.gson.annotations.SerializedName;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -9,13 +10,20 @@ import java.util.Date;
@Data
@Accessors(chain = true)
+@Schema(description = "OpenList 文件信息")
public class OpenListFileInfo implements Serializable {
+ @Schema(description = "名称")
private String name;
+ @Schema(description = "大小")
private Long size;
@SerializedName(value = "isDir", alternate = "is_dir")
+ @Schema(description = "是否为目录")
private Boolean isDir;
+ @Schema(description = "修改时间")
private Date modified;
+ @Schema(description = "创建时间")
private Date created;
+ @Schema(description = "路径")
private String path;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/PlayItem.java b/ani-rss-application/src/main/java/ani/rss/entity/PlayItem.java
similarity index 58%
rename from ani-rss-domain/src/main/java/ani/rss/entity/PlayItem.java
rename to ani-rss-application/src/main/java/ani/rss/entity/PlayItem.java
index 85e2c2b2..ce7e01a3 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/PlayItem.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/PlayItem.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -11,52 +12,67 @@ import java.util.List;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "视频列表")
public class PlayItem implements Serializable {
/**
* 显示标题
*/
+ @Schema(description = "显示标题")
private String title;
/**
* 路径+文件名 bash64
*/
+ @Schema(description = "路径+文件名 base64")
private String filename;
/**
* 文件名
*/
+ @Schema(description = "文件名")
private String name;
/**
* 最后修改日期
*/
+ @Schema(description = "最后修改日期")
private Long lastModify;
/**
* 集数
*/
+ @Schema(description = "集数")
private Double episode;
/**
* 文件大小 MB
*/
+ @Schema(description = "文件大小 MB")
private String size;
/**
* 扩展名
*/
+ @Schema(description = "扩展名")
private String extName;
+ @Schema(description = "字幕列表")
private List subtitles;
@Data
@Accessors(chain = true)
+ @Schema(description = "字幕")
public static class Subtitles {
+ @Schema(description = "字幕 HTML")
private String html;
+ @Schema(description = "字幕名")
private String name;
+ @Schema(description = "字幕地址")
private String url;
+ @Schema(description = "字幕内容")
private String content;
+ @Schema(description = "字幕类型")
private String type;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/ProxyTest.java b/ani-rss-application/src/main/java/ani/rss/entity/ProxyTest.java
similarity index 66%
rename from ani-rss-domain/src/main/java/ani/rss/entity/ProxyTest.java
rename to ani-rss-application/src/main/java/ani/rss/entity/ProxyTest.java
index 42993b00..558c677d 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/ProxyTest.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/ProxyTest.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -10,14 +11,17 @@ import java.io.Serializable;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "代理测试响应体")
public class ProxyTest implements Serializable {
/**
* 状态码
*/
+ @Schema(description = "状态码")
private Integer status;
/**
* 耗时
*/
+ @Schema(description = "耗时")
private Long time;
}
diff --git a/ani-rss-application/src/main/java/ani/rss/entity/Result.java b/ani-rss-application/src/main/java/ani/rss/entity/Result.java
new file mode 100644
index 00000000..c03483b6
--- /dev/null
+++ b/ani-rss-application/src/main/java/ani/rss/entity/Result.java
@@ -0,0 +1,95 @@
+package ani.rss.entity;
+
+import cn.hutool.core.text.StrFormatter;
+import cn.hutool.http.HttpStatus;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.function.Consumer;
+
+/**
+ * 返回包装体
+ *
+ * @param
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description = "返回包装体")
+public class Result implements Serializable {
+ @Schema(description = "状态码", defaultValue = "200")
+ private Integer code;
+ @Schema(description = "响应消息")
+ private String message;
+ @Schema(description = "数据", defaultValue = "null")
+ private T data;
+ @Schema(description = "时间戳", defaultValue = "current time")
+ private Long t = System.currentTimeMillis();
+
+ public static Result success() {
+ return new Result()
+ .setCode(HttpStatus.HTTP_OK)
+ .setMessage("success");
+ }
+
+ public static Result success(T data) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_OK)
+ .setMessage("success")
+ .setData(data);
+ }
+
+ public static Result success(String message) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_OK)
+ .setMessage(message);
+ }
+
+ public static Result success(String message, Object... argArray) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_OK)
+ .setMessage(StrFormatter.format(message, argArray));
+ }
+
+ public static Result success(Consumer> consumer) {
+ Result success = success();
+ consumer.accept(success);
+ return success;
+ }
+
+ public static Result error() {
+ return new Result()
+ .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
+ .setMessage("error");
+ }
+
+ public static Result error(T data) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
+ .setMessage("error")
+ .setData(data);
+ }
+
+ public static Result error(String message) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
+ .setMessage(message);
+ }
+
+ public static Result error(String message, Object... argArray) {
+ return new Result()
+ .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
+ .setMessage(StrFormatter.format(message, argArray));
+ }
+
+ public static Result error(Consumer> consumer) {
+ Result error = error();
+ consumer.accept(error);
+ return error;
+ }
+}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/StandbyRss.java b/ani-rss-application/src/main/java/ani/rss/entity/StandbyRss.java
similarity index 64%
rename from ani-rss-domain/src/main/java/ani/rss/entity/StandbyRss.java
rename to ani-rss-application/src/main/java/ani/rss/entity/StandbyRss.java
index b4d7c7e8..2a1db397 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/StandbyRss.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/StandbyRss.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -7,17 +8,21 @@ import java.io.Serializable;
@Data
@Accessors(chain = true)
+@Schema(description = "备用rss")
public class StandbyRss implements Serializable {
/**
* 字幕组
*/
+ @Schema(description = "字幕组")
private String label;
/**
* url
*/
+ @Schema(description = "url")
private String url;
/**
* 剧集偏移
*/
+ @Schema(description = "剧集偏移")
private Integer offset;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/TorrentsInfo.java b/ani-rss-application/src/main/java/ani/rss/entity/TorrentsInfo.java
similarity index 81%
rename from ani-rss-domain/src/main/java/ani/rss/entity/TorrentsInfo.java
rename to ani-rss-application/src/main/java/ani/rss/entity/TorrentsInfo.java
index fecad46b..55df158f 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/TorrentsInfo.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/TorrentsInfo.java
@@ -1,6 +1,7 @@
package ani.rss.entity;
import cn.hutool.core.util.NumberUtil;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -13,72 +14,87 @@ import java.util.function.Supplier;
*/
@Data
@Accessors(chain = true)
+@Schema(description = "种子信息")
public class TorrentsInfo implements Serializable {
+ @Schema(description = "id")
private String id;
/**
* hash
*/
+ @Schema(description = "hash")
private String hash;
/**
* 名称
*/
+ @Schema(description = "名称")
private String name;
/**
* 状态
*/
+ @Schema(description = "状态")
private State state;
/**
* 标签
*/
+ @Schema(description = "标签")
private List tags;
/**
* 磁链
*/
+ @Schema(description = "磁链")
private String magnet;
/**
* 已下载的大小
*/
+ @Schema(description = "已下载的大小")
private Long completed;
/**
* 大小
*/
+ @Schema(description = "大小")
private Long size;
/**
* 进度
*/
+ @Schema(description = "进度")
private Double progress;
/**
* 大小
*/
+ @Schema(description = "大小(字符串)")
private String sizeStr;
/**
* 时间
*/
+ @Schema(description = "时间")
private String dateStr;
/**
* 下载位置
*/
+ @Schema(description = "下载位置")
private String downloadDir;
/**
* 种子地址
*/
+ @Schema(description = "种子地址")
private String torrent;
/**
* 文件列表
*/
+ @Schema(description = "文件列表")
private Supplier
> files;
public TorrentsInfo progress(long completed, long size) {
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/TryOut.java b/ani-rss-application/src/main/java/ani/rss/entity/TryOut.java
similarity index 56%
rename from ani-rss-domain/src/main/java/ani/rss/entity/TryOut.java
rename to ani-rss-application/src/main/java/ani/rss/entity/TryOut.java
index 0212fd78..9d72949c 100644
--- a/ani-rss-domain/src/main/java/ani/rss/entity/TryOut.java
+++ b/ani-rss-application/src/main/java/ani/rss/entity/TryOut.java
@@ -1,5 +1,6 @@
package ani.rss.entity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -7,9 +8,14 @@ import java.io.Serializable;
@Data
@Accessors(chain = true)
+@Schema(description = "试用配置")
public class TryOut implements Serializable {
+ @Schema(description = "启用")
private Boolean enable;
+ @Schema(description = "续期")
private Boolean renewal;
+ @Schema(description = "天数")
private Integer day;
+ @Schema(description = "消息")
private String message;
}
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/BgmTokenTypeEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/BgmTokenTypeEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/BgmTokenTypeEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/BgmTokenTypeEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/NotificationStatusEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/NotificationStatusEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/NotificationStatusEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/NotificationStatusEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/NotificationTypeEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/NotificationTypeEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/NotificationTypeEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/NotificationTypeEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/ServerChanTypeEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/ServerChanTypeEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/ServerChanTypeEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/ServerChanTypeEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/SortTypeEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/SortTypeEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/SortTypeEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/SortTypeEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/StringEnum.java b/ani-rss-application/src/main/java/ani/rss/enums/StringEnum.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/StringEnum.java
rename to ani-rss-application/src/main/java/ani/rss/enums/StringEnum.java
diff --git a/ani-rss-domain/src/main/java/ani/rss/enums/TorrentsTags.java b/ani-rss-application/src/main/java/ani/rss/enums/TorrentsTags.java
similarity index 100%
rename from ani-rss-domain/src/main/java/ani/rss/enums/TorrentsTags.java
rename to ani-rss-application/src/main/java/ani/rss/enums/TorrentsTags.java
diff --git a/ani-rss-core/src/main/java/ani/rss/exception/ResultException.java b/ani-rss-application/src/main/java/ani/rss/exception/ResultException.java
similarity index 91%
rename from ani-rss-core/src/main/java/ani/rss/exception/ResultException.java
rename to ani-rss-application/src/main/java/ani/rss/exception/ResultException.java
index 7b604a6f..fc710cbd 100644
--- a/ani-rss-core/src/main/java/ani/rss/exception/ResultException.java
+++ b/ani-rss-application/src/main/java/ani/rss/exception/ResultException.java
@@ -17,5 +17,5 @@ import java.io.Serializable;
@EqualsAndHashCode(callSuper = true)
public class ResultException extends RuntimeException
implements Serializable {
- public final Result result;
+ private final Result result;
}
diff --git a/ani-rss-core/src/main/java/ani/rss/list/FixedSizeLinkedList.java b/ani-rss-application/src/main/java/ani/rss/list/FixedSizeLinkedList.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/list/FixedSizeLinkedList.java
rename to ani-rss-application/src/main/java/ani/rss/list/FixedSizeLinkedList.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/BaseNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/BaseNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/BaseNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/BaseNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/EmbyRefreshNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/EmbyRefreshNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/EmbyRefreshNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/EmbyRefreshNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/FileMoveNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/FileMoveNotification.java
similarity index 93%
rename from ani-rss-core/src/main/java/ani/rss/notification/FileMoveNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/FileMoveNotification.java
index 1e17fcf8..f850c86b 100644
--- a/ani-rss-core/src/main/java/ani/rss/notification/FileMoveNotification.java
+++ b/ani-rss-application/src/main/java/ani/rss/notification/FileMoveNotification.java
@@ -19,6 +19,8 @@ import java.util.stream.Collectors;
@Slf4j
public class FileMoveNotification implements BaseNotification {
+ private NotificationConfig notificationConfig;
+
/**
* 测试
*
@@ -50,6 +52,8 @@ public class FileMoveNotification implements BaseNotification {
return true;
}
+ this.notificationConfig = notificationConfig;
+
// 首先就要深度克隆 防止影响原订阅设置
ani = ObjectUtil.clone(ani);
@@ -88,6 +92,8 @@ public class FileMoveNotification implements BaseNotification {
}
public void startMoveOva(String src, String target) {
+ Boolean copyModel = notificationConfig.getFileMoveCopyModel();
+
for (File file : FileUtils.listFiles(src)) {
if (!file.isFile()) {
continue;
@@ -96,12 +102,17 @@ public class FileMoveNotification implements BaseNotification {
log.info("OVA/剧场版 文件移动: {} => {}", file, target);
FileUtil.copy(file, new File(target), true);
+ if (copyModel) {
+ continue;
+ }
// 复制后再删除 确保不会中途失败
FileUtil.del(file);
}
}
public void startMove(String src, String target) {
+ Boolean copyModel = notificationConfig.getFileMoveCopyModel();
+
for (File file : FileUtils.listFileList(src)) {
if (!file.isFile()) {
// 过滤掉文件夹
@@ -120,6 +131,10 @@ public class FileMoveNotification implements BaseNotification {
log.info("文件移动: {} => {}", file, target);
FileUtil.copy(file, new File(target), true);
+ if (copyModel) {
+ continue;
+ }
+
// 复制后再删除 确保不会中途失败
FileUtil.del(file);
}
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/MailNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/MailNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/MailNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/MailNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/OpenListUploadNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/OpenListUploadNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/OpenListUploadNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/OpenListUploadNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/ServerChanNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/ServerChanNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/ServerChanNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/ServerChanNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/ShellNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/ShellNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/ShellNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/ShellNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/SystemNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/SystemNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/SystemNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/SystemNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/TelegramNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/TelegramNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/TelegramNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/TelegramNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/notification/WebHookNotification.java b/ani-rss-application/src/main/java/ani/rss/notification/WebHookNotification.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/notification/WebHookNotification.java
rename to ani-rss-application/src/main/java/ani/rss/notification/WebHookNotification.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/AniService.java b/ani-rss-application/src/main/java/ani/rss/service/AniService.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/AniService.java
rename to ani-rss-application/src/main/java/ani/rss/service/AniService.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/ClearService.java b/ani-rss-application/src/main/java/ani/rss/service/ClearService.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/ClearService.java
rename to ani-rss-application/src/main/java/ani/rss/service/ClearService.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/DownloadService.java b/ani-rss-application/src/main/java/ani/rss/service/DownloadService.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/DownloadService.java
rename to ani-rss-application/src/main/java/ani/rss/service/DownloadService.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/NfoGenerator.java b/ani-rss-application/src/main/java/ani/rss/service/NfoGenerator.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/NfoGenerator.java
rename to ani-rss-application/src/main/java/ani/rss/service/NfoGenerator.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/ScrapeService.java b/ani-rss-application/src/main/java/ani/rss/service/ScrapeService.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/ScrapeService.java
rename to ani-rss-application/src/main/java/ani/rss/service/ScrapeService.java
diff --git a/ani-rss-core/src/main/java/ani/rss/service/TaskService.java b/ani-rss-application/src/main/java/ani/rss/service/TaskService.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/service/TaskService.java
rename to ani-rss-application/src/main/java/ani/rss/service/TaskService.java
diff --git a/ani-rss-core/src/main/java/ani/rss/task/BgmTask.java b/ani-rss-application/src/main/java/ani/rss/task/BgmTask.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/task/BgmTask.java
rename to ani-rss-application/src/main/java/ani/rss/task/BgmTask.java
diff --git a/ani-rss-core/src/main/java/ani/rss/task/RenameTask.java b/ani-rss-application/src/main/java/ani/rss/task/RenameTask.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/task/RenameTask.java
rename to ani-rss-application/src/main/java/ani/rss/task/RenameTask.java
diff --git a/ani-rss-core/src/main/java/ani/rss/task/RssTask.java b/ani-rss-application/src/main/java/ani/rss/task/RssTask.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/task/RssTask.java
rename to ani-rss-application/src/main/java/ani/rss/task/RssTask.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/basic/CidrRangeChecker.java b/ani-rss-application/src/main/java/ani/rss/util/basic/CidrRangeChecker.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/basic/CidrRangeChecker.java
rename to ani-rss-application/src/main/java/ani/rss/util/basic/CidrRangeChecker.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/basic/HttpReq.java b/ani-rss-application/src/main/java/ani/rss/util/basic/HttpReq.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/basic/HttpReq.java
rename to ani-rss-application/src/main/java/ani/rss/util/basic/HttpReq.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/basic/HttpRequestPlus.java b/ani-rss-application/src/main/java/ani/rss/util/basic/HttpRequestPlus.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/basic/HttpRequestPlus.java
rename to ani-rss-application/src/main/java/ani/rss/util/basic/HttpRequestPlus.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/basic/LogUtil.java b/ani-rss-application/src/main/java/ani/rss/util/basic/LogUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/basic/LogUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/basic/LogUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/basic/RenameCacheUtil.java b/ani-rss-application/src/main/java/ani/rss/util/basic/RenameCacheUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/basic/RenameCacheUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/basic/RenameCacheUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/AfdianUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/AfdianUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/AfdianUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/AfdianUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/AniListUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/AniListUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/AniListUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/AniListUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/AniUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/AniUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/AniUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/AniUtil.java
diff --git a/ani-rss-web/src/main/java/ani/rss/web/util/AuthUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/AuthUtil.java
similarity index 83%
rename from ani-rss-web/src/main/java/ani/rss/web/util/AuthUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/AuthUtil.java
index 5da715d4..7ee5ef9a 100644
--- a/ani-rss-web/src/main/java/ani/rss/web/util/AuthUtil.java
+++ b/ani-rss-application/src/main/java/ani/rss/util/other/AuthUtil.java
@@ -1,23 +1,22 @@
-package ani.rss.web.util;
+package ani.rss.util.other;
+import ani.rss.annotation.Auth;
+import ani.rss.auth.enums.AuthType;
import ani.rss.commons.CacheUtils;
import ani.rss.commons.ExceptionUtils;
import ani.rss.commons.GsonStatic;
import ani.rss.entity.Config;
+import ani.rss.entity.Global;
import ani.rss.entity.Login;
import ani.rss.entity.Result;
import ani.rss.exception.ResultException;
-import ani.rss.util.other.ConfigUtil;
-import ani.rss.web.annotation.Auth;
-import ani.rss.web.auth.enums.AuthType;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
-import cn.hutool.http.server.HttpServerRequest;
-import com.sun.net.httpserver.HttpExchange;
+import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
@@ -32,7 +31,7 @@ import java.util.function.Function;
*/
@Slf4j
public class AuthUtil {
- private static final Map> MAP = new HashMap<>();
+ private static final Map> MAP = new HashMap<>();
static {
resetKey();
@@ -98,9 +97,8 @@ public class AuthUtil {
*/
public static String getIp() {
try {
- HttpServerRequest request = ServerUtil.REQUEST.get();
- HttpExchange httpExchange = (HttpExchange) ReflectUtil.getFieldValue(request, "httpExchange");
- return httpExchange.getRemoteAddress().getAddress().getHostAddress();
+ HttpServletRequest request = Global.REQUEST.get();
+ return request.getRemoteAddr();
} catch (Exception e) {
String message = ExceptionUtils.getMessage(e);
log.error(message, e);
@@ -115,7 +113,7 @@ public class AuthUtil {
* @param auth
* @return
*/
- public static Boolean test(HttpServerRequest request, Auth auth) {
+ public static Boolean test(HttpServletRequest request, Auth auth) {
limitLoginAttempts(false);
if (!auth.value()) {
// 不进行校验
@@ -138,10 +136,10 @@ public class AuthUtil {
* @param authType
* @return
*/
- public static Boolean test(HttpServerRequest request, AuthType authType) {
- Class extends Function> clazz = authType.getClazz();
+ public static Boolean test(HttpServletRequest request, AuthType authType) {
+ Class extends Function> clazz = authType.getClazz();
String name = clazz.getName();
- Function function = MAP.get(name);
+ Function function = MAP.get(name);
if (Objects.isNull(function)) {
function = ReflectUtil.newInstance(clazz);
MAP.put(name, function);
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/BgmUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/BgmUtil.java
similarity index 97%
rename from ani-rss-core/src/main/java/ani/rss/util/other/BgmUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/BgmUtil.java
index 9b8a2040..0c0eaba4 100644
--- a/ani-rss-core/src/main/java/ani/rss/util/other/BgmUtil.java
+++ b/ani-rss-application/src/main/java/ani/rss/util/other/BgmUtil.java
@@ -4,6 +4,7 @@ import ani.rss.commons.CacheUtils;
import ani.rss.commons.GsonStatic;
import ani.rss.entity.Ani;
import ani.rss.entity.BgmInfo;
+import ani.rss.entity.BgmMe;
import ani.rss.entity.Config;
import ani.rss.enums.BgmTokenTypeEnum;
import ani.rss.service.DownloadService;
@@ -248,7 +249,7 @@ public class BgmUtil {
});
}
- public static JsonObject me() {
+ public static BgmMe me() {
Config config = ConfigUtil.CONFIG;
String bgmToken = config.getBgmToken();
Assert.notBlank(bgmToken, "BgmToken 未填写");
@@ -257,17 +258,17 @@ public class BgmUtil {
String me = CacheUtils.get(key);
if (StrUtil.isNotBlank(me)) {
- return GsonStatic.fromJson(me, JsonObject.class);
+ return GsonStatic.fromJson(me, BgmMe.class);
}
- JsonObject jsonObject = setToken(HttpReq.get(host + "/v0/me"))
+ BgmMe bgmMe = setToken(HttpReq.get(host + "/v0/me"))
.thenFunction(res -> {
HttpReq.assertStatus(res);
- return GsonStatic.fromJson(res.body(), JsonObject.class);
+ return GsonStatic.fromJson(res.body(), BgmMe.class);
});
- CacheUtils.put(key, GsonStatic.toJson(jsonObject), TimeUnit.MINUTES.toMillis(10));
- return jsonObject;
+ CacheUtils.put(key, GsonStatic.toJson(bgmMe), TimeUnit.MINUTES.toMillis(10));
+ return bgmMe;
}
/**
@@ -276,13 +277,12 @@ public class BgmUtil {
* @return
*/
public static String username() {
- JsonObject me = me();
+ BgmMe me = me();
return Opt.of(me)
- .map(o -> o.get("username"))
+ .map(BgmMe::getUsername)
.filter(Objects::nonNull)
- .map(JsonElement::getAsString)
.filter(StrUtil::isNotBlank)
- .orElse(String.valueOf(me.get("id").getAsInt()));
+ .orElse(String.valueOf(me.getId()));
}
/**
@@ -582,11 +582,11 @@ public class BgmUtil {
*
* @return
*/
- public static Long getExpiresDays() {
+ public static Integer getExpiresDays() {
Config config = ConfigUtil.CONFIG;
String bgmToken = config.getBgmToken();
if (StrUtil.isBlank(bgmToken)) {
- return 0L;
+ return 0;
}
long expires = HttpReq.post("https://bgm.tv/oauth/token_status")
.form("access_token", bgmToken)
@@ -598,10 +598,10 @@ public class BgmUtil {
long currentTimeMillis = System.currentTimeMillis();
- long days = 0;
+ int days = 0;
if (expires > currentTimeMillis) {
- days = TimeUnit.MILLISECONDS.toDays(expires - currentTimeMillis);
+ days = Math.toIntExact(TimeUnit.MILLISECONDS.toDays(expires - currentTimeMillis));
}
return days;
}
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/ConfigUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/ConfigUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/ConfigUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/ConfigUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/EmbyUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/EmbyUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/EmbyUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/EmbyUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/ItemsUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/ItemsUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/ItemsUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/ItemsUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/MenuUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/MenuUtil.java
similarity index 94%
rename from ani-rss-core/src/main/java/ani/rss/util/other/MenuUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/MenuUtil.java
index 299158e2..fdf63818 100644
--- a/ani-rss-core/src/main/java/ani/rss/util/other/MenuUtil.java
+++ b/ani-rss-application/src/main/java/ani/rss/util/other/MenuUtil.java
@@ -3,6 +3,7 @@ package ani.rss.util.other;
import ani.rss.entity.Global;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.extra.spring.SpringUtil;
import lombok.extern.slf4j.Slf4j;
import javax.swing.*;
@@ -51,7 +52,6 @@ public class MenuUtil {
double uiScaleX = tx.getScaleX();
double uiScaleY = tx.getScaleY();
-
SystemTray tray = SystemTray.getSystemTray();
trayIcon = new TrayIcon(
Toolkit.getDefaultToolkit().getImage(
@@ -83,7 +83,8 @@ public class MenuUtil {
webui.addActionListener(e -> {
if (Desktop.isDesktopSupported()) {
try {
- Desktop.getDesktop().browse(new URL("http://127.0.0.1:" + Global.HTTP_PORT).toURI());
+ String port = SpringUtil.getProperty("server.port");
+ Desktop.getDesktop().browse(new URL("http://127.0.0.1:" + port).toURI());
} catch (Exception ex) {
log.error("打开webui失败", ex);
}
@@ -107,7 +108,8 @@ public class MenuUtil {
clicked.set(false);
// 直接打开webui
try {
- Desktop.getDesktop().browse(new URL("http://127.0.0.1:" + Global.HTTP_PORT).toURI());
+ String port = SpringUtil.getProperty("server.port");
+ Desktop.getDesktop().browse(new URL("http://127.0.0.1:" + port).toURI());
} catch (Exception ex) {
log.error("打开webui失败", ex);
}
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/MikanUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/MikanUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/MikanUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/MikanUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/NotificationUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/NotificationUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/NotificationUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/NotificationUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/RenameUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/RenameUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/RenameUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/RenameUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/TmdbUtils.java b/ani-rss-application/src/main/java/ani/rss/util/other/TmdbUtils.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/TmdbUtils.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/TmdbUtils.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/TorrentUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/TorrentUtil.java
similarity index 100%
rename from ani-rss-core/src/main/java/ani/rss/util/other/TorrentUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/TorrentUtil.java
diff --git a/ani-rss-core/src/main/java/ani/rss/util/other/UpdateUtil.java b/ani-rss-application/src/main/java/ani/rss/util/other/UpdateUtil.java
similarity index 97%
rename from ani-rss-core/src/main/java/ani/rss/util/other/UpdateUtil.java
rename to ani-rss-application/src/main/java/ani/rss/util/other/UpdateUtil.java
index 88db092f..4fa37c63 100644
--- a/ani-rss-core/src/main/java/ani/rss/util/other/UpdateUtil.java
+++ b/ani-rss-application/src/main/java/ani/rss/util/other/UpdateUtil.java
@@ -76,10 +76,10 @@ public class UpdateUtil {
.setUpdate(VersionComparator.INSTANCE.compare(latest, version) > 0)
.setLatest(latest)
.setMarkdownBody(jsonObject.get("markdown").getAsString());
- String filename = "ani-rss-jar-with-dependencies.jar";
+ String filename = "ani-rss.jar";
File jar = MavenUtils.getJar();
if ("exe".equals(FileUtil.extName(jar))) {
- filename = "ani-rss-launcher.exe";
+ filename = "ani-rss.exe";
}
String downloadUrl = StrFormatter.format("https://github.com/wushuo894/ani-rss/releases/download/v{}/{}", latest, filename);
about.setDownloadUrl(downloadUrl);
diff --git a/ani-rss-application/src/main/resources/application.yaml b/ani-rss-application/src/main/resources/application.yaml
new file mode 100644
index 00000000..33f567d0
--- /dev/null
+++ b/ani-rss-application/src/main/resources/application.yaml
@@ -0,0 +1,26 @@
+spring:
+ application:
+ name: ani-rss-application
+ web:
+ resources:
+ static-locations: classpath:/META-INF/dist
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+ servlet:
+ multipart:
+ max-request-size: 50MB
+ max-file-size: 50MB
+ enabled: true
+ jmx:
+ enabled: false
+server:
+ port: 7789
+ address: 0.0.0.0
+
+springdoc:
+ swagger-ui:
+ enabled: ${SWAGGER_ENABLED:false}
+ url: /v3/api-docs.yaml
+ api-docs:
+ enabled: ${SWAGGER_ENABLED:false}
\ No newline at end of file
diff --git a/ani-rss-core/src/main/resources/aria2/addTorrent.json b/ani-rss-application/src/main/resources/aria2/addTorrent.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/addTorrent.json
rename to ani-rss-application/src/main/resources/aria2/addTorrent.json
diff --git a/ani-rss-core/src/main/resources/aria2/addUri.json b/ani-rss-application/src/main/resources/aria2/addUri.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/addUri.json
rename to ani-rss-application/src/main/resources/aria2/addUri.json
diff --git a/ani-rss-core/src/main/resources/aria2/changeGlobalOption.json b/ani-rss-application/src/main/resources/aria2/changeGlobalOption.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/changeGlobalOption.json
rename to ani-rss-application/src/main/resources/aria2/changeGlobalOption.json
diff --git a/ani-rss-core/src/main/resources/aria2/getGlobalStat.json b/ani-rss-application/src/main/resources/aria2/getGlobalStat.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/getGlobalStat.json
rename to ani-rss-application/src/main/resources/aria2/getGlobalStat.json
diff --git a/ani-rss-core/src/main/resources/aria2/removeDownloadResult.json b/ani-rss-application/src/main/resources/aria2/removeDownloadResult.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/removeDownloadResult.json
rename to ani-rss-application/src/main/resources/aria2/removeDownloadResult.json
diff --git a/ani-rss-core/src/main/resources/aria2/tellActive.json b/ani-rss-application/src/main/resources/aria2/tellActive.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/tellActive.json
rename to ani-rss-application/src/main/resources/aria2/tellActive.json
diff --git a/ani-rss-core/src/main/resources/aria2/tellStopped.json b/ani-rss-application/src/main/resources/aria2/tellStopped.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/tellStopped.json
rename to ani-rss-application/src/main/resources/aria2/tellStopped.json
diff --git a/ani-rss-core/src/main/resources/aria2/tellWaiting.json b/ani-rss-application/src/main/resources/aria2/tellWaiting.json
similarity index 100%
rename from ani-rss-core/src/main/resources/aria2/tellWaiting.json
rename to ani-rss-application/src/main/resources/aria2/tellWaiting.json
diff --git a/ani-rss-core/src/main/resources/logback-template.xml b/ani-rss-application/src/main/resources/logback-template.xml
similarity index 100%
rename from ani-rss-core/src/main/resources/logback-template.xml
rename to ani-rss-application/src/main/resources/logback-template.xml
diff --git a/ani-rss-application/src/main/resources/logback.xml b/ani-rss-application/src/main/resources/logback.xml
new file mode 100644
index 00000000..bfc1cf5c
--- /dev/null
+++ b/ani-rss-application/src/main/resources/logback.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n
+
+
+
+
+
+
+
+
diff --git a/ani-rss-web/src/main/resources/template.html b/ani-rss-application/src/main/resources/template.html
similarity index 100%
rename from ani-rss-web/src/main/resources/template.html
rename to ani-rss-application/src/main/resources/template.html
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-add.json b/ani-rss-application/src/main/resources/transmission/torrent-add.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-add.json
rename to ani-rss-application/src/main/resources/transmission/torrent-add.json
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-get.json b/ani-rss-application/src/main/resources/transmission/torrent-get.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-get.json
rename to ani-rss-application/src/main/resources/transmission/torrent-get.json
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-remove.json b/ani-rss-application/src/main/resources/transmission/torrent-remove.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-remove.json
rename to ani-rss-application/src/main/resources/transmission/torrent-remove.json
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-rename-path.json b/ani-rss-application/src/main/resources/transmission/torrent-rename-path.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-rename-path.json
rename to ani-rss-application/src/main/resources/transmission/torrent-rename-path.json
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-set-location.json b/ani-rss-application/src/main/resources/transmission/torrent-set-location.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-set-location.json
rename to ani-rss-application/src/main/resources/transmission/torrent-set-location.json
diff --git a/ani-rss-core/src/main/resources/transmission/torrent-set.json b/ani-rss-application/src/main/resources/transmission/torrent-set.json
similarity index 100%
rename from ani-rss-core/src/main/resources/transmission/torrent-set.json
rename to ani-rss-application/src/main/resources/transmission/torrent-set.json
diff --git a/ani-rss-application/src/test/java/ani/rss/AniRssApplicationTests.java b/ani-rss-application/src/test/java/ani/rss/AniRssApplicationTests.java
new file mode 100644
index 00000000..aabedd1a
--- /dev/null
+++ b/ani-rss-application/src/test/java/ani/rss/AniRssApplicationTests.java
@@ -0,0 +1,13 @@
+package ani.rss;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class AniRssApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/ani-rss-commons/pom.xml b/ani-rss-commons/pom.xml
deleted file mode 100644
index f9a4cebf..00000000
--- a/ani-rss-commons/pom.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
- 4.0.0
-
- ani.rss
- ani-rss
- 2.5.10
-
-
- ani-rss-commons
-
-
- 17
- 17
- UTF-8
-
-
-
-
- com.google.code.gson
- gson
-
-
- ch.qos.logback
- logback-classic
-
-
- cn.hutool
- hutool-all
-
-
-
diff --git a/ani-rss-commons/src/main/java/ani/rss/CommonsMain.java b/ani-rss-commons/src/main/java/ani/rss/CommonsMain.java
deleted file mode 100644
index fae8855b..00000000
--- a/ani-rss-commons/src/main/java/ani/rss/CommonsMain.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ani.rss;
-
-import cn.hutool.core.util.ClassUtil;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.Set;
-
-@Slf4j
-public class CommonsMain {
- public static void main(String[] args) {
- Set> classSet = ClassUtil.scanPackage("ani.rss.commons");
- for (Class> clazz : classSet) {
- if (clazz.isMemberClass()) {
- continue;
- }
- log.info(clazz.getName());
- }
- }
-}
diff --git a/ani-rss-core/pom.xml b/ani-rss-core/pom.xml
deleted file mode 100644
index fe882185..00000000
--- a/ani-rss-core/pom.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
- 4.0.0
-
- ani.rss
- ani-rss
- 2.5.10
-
-
- ani-rss-core
-
-
- 17
- 17
- UTF-8
-
-
-
-
- ani.rss
- ani-rss-domain
-
-
- org.eclipse
- bittorrent
-
-
- org.xerial
- sqlite-jdbc
-
-
- com.sun.mail
- jakarta.mail
-
-
- ch.qos.logback
- logback-classic
-
-
- io.github.biezhi
- TinyPinyin
-
-
- org.jsoup
- jsoup
-
-
-
diff --git a/ani-rss-core/src/main/java/ani/rss/CoreMain.java b/ani-rss-core/src/main/java/ani/rss/CoreMain.java
deleted file mode 100644
index 11ed890d..00000000
--- a/ani-rss-core/src/main/java/ani/rss/CoreMain.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ani.rss;
-
-import ani.rss.commons.MavenUtils;
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class CoreMain {
- public static void main(String[] args) {
- String version = MavenUtils.getVersion();
- log.info("version: {}", version);
- }
-}
diff --git a/ani-rss-core/src/test/java/TestEbmlReader.java b/ani-rss-core/src/test/java/TestEbmlReader.java
deleted file mode 100644
index f6aa72cb..00000000
--- a/ani-rss-core/src/test/java/TestEbmlReader.java
+++ /dev/null
@@ -1,34 +0,0 @@
-import cn.hutool.core.lang.Assert;
-import com.matthewn4444.ebml.EBMLReader;
-import com.matthewn4444.ebml.subtitles.Subtitles;
-import lombok.Cleanup;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-
-@Slf4j
-public class TestEbmlReader {
- @Test
- public void test() throws IOException {
- @Cleanup
- EBMLReader reader = new EBMLReader("/Users/wushuo/Movies/test/[LoliHouse] 蓝色管弦乐 S02E11.mkv");
- Assert.isTrue(reader.readHeader(), "文件格式错误");
-
- reader.readTracks();
- reader.readCues();
-
- for (int i = 0; i < reader.getCuesCount(); i++) {
- reader.readSubtitlesInCueFrame(i);
- }
-
- ArrayList subtitles = reader.getSubtitles();
- for (Subtitles subtitle : subtitles) {
- String name = subtitle.getName();
- String language = subtitle.getLanguage();
- String presentableName = subtitle.getPresentableName();
- log.info("{} {} {}", name, language, presentableName);
- }
- }
-}
diff --git a/ani-rss-domain/pom.xml b/ani-rss-domain/pom.xml
deleted file mode 100644
index 2d8dda85..00000000
--- a/ani-rss-domain/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
- 4.0.0
-
- ani.rss
- ani-rss
- 2.5.10
-
-
- ani-rss-domain
-
-
- 17
- 17
- UTF-8
-
-
-
-
- ebml-reader
- https://raw.github.com/wushuo894/EBMLReader/mvn-repo
-
-
- tmdb-api
- https://raw.github.com/wushuo894/tmdb-api/mvn-repo
-
-
-
-
-
- ebml.reader
- ebml-reader
-
-
- wushuo.tmdb.api
- tmdb-api
-
-
- ani.rss
- ani-rss-commons
-
-
-
-
diff --git a/ani-rss-domain/src/main/java/ani/rss/ApiMain.java b/ani-rss-domain/src/main/java/ani/rss/ApiMain.java
deleted file mode 100644
index 20796790..00000000
--- a/ani-rss-domain/src/main/java/ani/rss/ApiMain.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ani.rss;
-
-import cn.hutool.core.util.ClassUtil;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.Set;
-
-@Slf4j
-public class ApiMain {
- public static void main(String[] args) {
- Set> classSet = ClassUtil.scanPackage("ani.rss");
- for (Class> clazz : classSet) {
- if (clazz.isMemberClass()) {
- continue;
- }
- log.info(clazz.getName());
- }
- }
-}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Global.java b/ani-rss-domain/src/main/java/ani/rss/entity/Global.java
deleted file mode 100644
index 18bdb3d2..00000000
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Global.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ani.rss.entity;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-@Accessors(chain = true)
-public class Global implements Serializable {
- public static List ARGS = new ArrayList<>();
-
- public static String HTTP_HOST = "0.0.0.0";
- public static String HTTP_PORT = "7789";
-}
diff --git a/ani-rss-domain/src/main/java/ani/rss/entity/Result.java b/ani-rss-domain/src/main/java/ani/rss/entity/Result.java
deleted file mode 100644
index 99a972ea..00000000
--- a/ani-rss-domain/src/main/java/ani/rss/entity/Result.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package ani.rss.entity;
-
-import cn.hutool.http.HttpStatus;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-
-/**
- * 返回包装体
- *
- * @param
- */
-@Data
-@Accessors(chain = true)
-@AllArgsConstructor
-@NoArgsConstructor
-public class Result implements Serializable {
- private Integer code;
- private String message;
- private T data;
- private Long t;
-
- public static Result success() {
- return new Result()
- .setCode(HttpStatus.HTTP_OK)
- .setMessage("success");
- }
-
- public static Result success(T data) {
- return new Result()
- .setCode(HttpStatus.HTTP_OK)
- .setMessage("success")
- .setData(data);
- }
-
- public static Result error() {
- return new Result()
- .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
- .setMessage("error");
- }
-
- public static Result error(T data) {
- return new Result()
- .setCode(HttpStatus.HTTP_INTERNAL_ERROR)
- .setMessage("error")
- .setData(data);
- }
-}
diff --git a/ani-rss-ui/.gitignore b/ani-rss-ui/.gitignore
index a28c28fb..f594e22a 100644
--- a/ani-rss-ui/.gitignore
+++ b/ani-rss-ui/.gitignore
@@ -23,3 +23,4 @@ dist-ssr
*.sln
*.sw?
node
+pnpm-lock.yaml
\ No newline at end of file
diff --git a/ani-rss-ui/package.json b/ani-rss-ui/package.json
index f9a03fe3..0f7f5a08 100644
--- a/ani-rss-ui/package.json
+++ b/ani-rss-ui/package.json
@@ -19,11 +19,11 @@
"element-plus": "^2.13.2",
"markdown-it": "^14.1.1",
"markdown-it-github-alerts": "^1.0.1",
- "vue": "^3.5.28"
+ "vue": "^3.5.29"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.4",
- "shiki": "^3.22.0",
+ "shiki": "^3.23.0",
"terser": "^5.46.0",
"unplugin-auto-import": "^21.0.0",
"unplugin-vue-components": "^31.0.0",
diff --git a/ani-rss-ui/pom.xml b/ani-rss-ui/pom.xml
index 820c8a83..a2d49ac7 100644
--- a/ani-rss-ui/pom.xml
+++ b/ani-rss-ui/pom.xml
@@ -6,7 +6,7 @@
ani.rss
ani-rss
- 2.5.10
+ 3.0.0
ani-rss-ui
@@ -92,7 +92,7 @@
- ${project.build.outputDirectory}/dist
+ ${project.build.outputDirectory}/META-INF/dist
diff --git a/ani-rss-ui/src/Login.vue b/ani-rss-ui/src/Login.vue
index 24b785e4..dcfcf4f8 100644
--- a/ani-rss-ui/src/Login.vue
+++ b/ani-rss-ui/src/Login.vue
@@ -56,7 +56,7 @@
import {onMounted, ref} from "vue";
import CryptoJS from "crypto-js"
-import api from "./js/api.js";
+import * as http from "./js/http.js";
import {Key} from "@element-plus/icons-vue";
import {ElMessage} from "element-plus";
import {authorization, rememberThePassword} from "@/js/global.js";
@@ -82,7 +82,7 @@ let login = () => {
loading.value = true
- api.post('api/login', {
+ http.login({
username: user.value.username,
password: CryptoJS['MD5'](user.value.password).toString()
})
@@ -110,8 +110,7 @@ let test = () => {
if (authorization.value) {
return
}
- fetch('api/test')
- .then(res => res.json())
+ http.testIpWhitelist()
.then(res => {
if (res.code === 200) {
authorization.value = new Date().getTime() + '';
diff --git a/ani-rss-ui/src/bgm-oauth-callback/App.vue b/ani-rss-ui/src/bgm-oauth-callback/App.vue
index 99f5b791..212312e2 100644
--- a/ani-rss-ui/src/bgm-oauth-callback/App.vue
+++ b/ani-rss-ui/src/bgm-oauth-callback/App.vue
@@ -28,15 +28,15 @@
- {{ me.reg_time }}
+ {{ me.regTime }}
-
- {{ me.expires_days }} 天
+
+ {{ me.expiresDays }} 天
- {{ me.expires_days }} 天
+ {{ me.expiresDays }} 天
@@ -70,6 +70,7 @@
import {onMounted, ref} from 'vue'
import {init} from "@/js/global.js";
import api from "@/js/api.js";
+import * as http from "@/js/http.js";
const type = ref('success')
const text = ref('')
@@ -81,19 +82,9 @@ const close = () => {
}
const loadMe = async () => {
- return api.post('api/bgm?type=me')
+ return http.meBgm()
.then(res => {
me.value = res.data
- const formatter = new Intl.DateTimeFormat('zh-CN', {
- year: 'numeric',
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- hour12: false
- })
- me.value.reg_time = formatter.format(new Date(me.value.reg_time))
});
}
diff --git a/ani-rss-ui/src/config/About.vue b/ani-rss-ui/src/config/About.vue
index ca221575..4a2e548d 100644
--- a/ani-rss-ui/src/config/About.vue
+++ b/ani-rss-ui/src/config/About.vue
@@ -111,6 +111,7 @@ import 'markdown-it-github-alerts/styles/github-colors-dark-media.css'
import 'markdown-it-github-alerts/styles/github-base.css'
import {authorization} from "@/js/global.js";
+import * as http from "@/js/http.js";
let md = markdownit({
html: true,
@@ -129,7 +130,7 @@ const actionLoading = ref(false)
const stop = (status) => {
actionLoading.value = true
- api.post("api/stop?status=" + status)
+ http.stop(status)
.then(res => {
ElMessage.success(res.message)
setTimeout(() => {
@@ -144,7 +145,7 @@ const stop = (status) => {
const update = () => {
actionLoading.value = true
- api.post("api/update")
+ http.update()
.then(res => {
ElMessage.success(res.message)
setTimeout(() => {
@@ -165,7 +166,7 @@ const about = ref({
})
onMounted(() => {
- api.get('api/about')
+ http.about()
.then(res => {
about.value = res.data
})
diff --git a/ani-rss-ui/src/config/Afdian.vue b/ani-rss-ui/src/config/Afdian.vue
index 92cd345a..538a1c27 100644
--- a/ani-rss-ui/src/config/Afdian.vue
+++ b/ani-rss-ui/src/config/Afdian.vue
@@ -135,10 +135,10 @@