├── .gitignore
├── README.md
├── docs
└── image
│ ├── image01.png
│ ├── image02.png
│ ├── image03.png
│ ├── image04.png
│ └── pay.png
├── libs
├── JRegistry-1.1.0.jar
├── eventbus-java-3.3.1.jar
├── jaudiotagger-3.0.2.jar
└── thumbnailator-0.4.20.jar
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
├── java
│ ├── cn
│ │ └── tealc995
│ │ │ ├── aria2
│ │ │ ├── Aria2Client.java
│ │ │ ├── Aria2Method.java
│ │ │ └── model
│ │ │ │ ├── Aria2Option.java
│ │ │ │ ├── Aria2Param.java
│ │ │ │ └── Aria2Request.java
│ │ │ ├── kikoreu
│ │ │ ├── HttpUtils.java
│ │ │ ├── KKApi.java
│ │ │ ├── NewHttpClient.java
│ │ │ ├── api
│ │ │ │ ├── BaseApi.java
│ │ │ │ ├── CategoryApi.java
│ │ │ │ ├── PlayListApi.java
│ │ │ │ ├── SearchApi.java
│ │ │ │ ├── StarApi.java
│ │ │ │ ├── TrackApi.java
│ │ │ │ ├── UserApi.java
│ │ │ │ └── WorksApi.java
│ │ │ └── model
│ │ │ │ ├── CountDetail.java
│ │ │ │ ├── LanguageEdition.java
│ │ │ │ ├── LanguageEditionDeserialize.java
│ │ │ │ ├── MainWorks.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── Pagination.java
│ │ │ │ ├── Rank.java
│ │ │ │ ├── Response.java
│ │ │ │ ├── ResponseBody.java
│ │ │ │ ├── Role.java
│ │ │ │ ├── RoleEx.java
│ │ │ │ ├── SearchKey.java
│ │ │ │ ├── SortType.java
│ │ │ │ ├── Track.java
│ │ │ │ ├── User.java
│ │ │ │ ├── Work.java
│ │ │ │ └── playList
│ │ │ │ ├── MainPlayList.java
│ │ │ │ ├── PlayList.java
│ │ │ │ ├── PlayListAlter.java
│ │ │ │ ├── PlayListBase.java
│ │ │ │ ├── PlayListCreate.java
│ │ │ │ └── PlayListRemoveWork.java
│ │ │ ├── kkmaid
│ │ │ ├── App.java
│ │ │ ├── AppStart.java
│ │ │ ├── config
│ │ │ │ ├── BlackList.java
│ │ │ │ ├── Config.java
│ │ │ │ └── Setting.java
│ │ │ ├── event
│ │ │ │ ├── BlackWorkEvent.java
│ │ │ │ ├── EventBusUtil.java
│ │ │ │ ├── GridItemRemoveEvent.java
│ │ │ │ ├── MainCenterEvent.java
│ │ │ │ ├── MainDialogEvent.java
│ │ │ │ ├── MainNotificationEvent.java
│ │ │ │ ├── MainPaneEvent.java
│ │ │ │ ├── MainPlayListRemoveWorkEvent.java
│ │ │ │ ├── PlayListAlterEvent.java
│ │ │ │ ├── PlayListRemoveEvent.java
│ │ │ │ └── SearchEvent.java
│ │ │ ├── filter
│ │ │ │ ├── AudioFilter.java
│ │ │ │ ├── BackgroundImageFilter.java
│ │ │ │ ├── DirectoryFilter.java
│ │ │ │ ├── ImageFilter.java
│ │ │ │ ├── LrcFilter.java
│ │ │ │ ├── SupportAudioFormat.java
│ │ │ │ ├── SupportImageFormat.java
│ │ │ │ ├── SupportSubtitleFormat.java
│ │ │ │ └── SupportVideoFormat.java
│ │ │ ├── model
│ │ │ │ ├── Audio.java
│ │ │ │ ├── Music.java
│ │ │ │ ├── StringKeyIntValue.java
│ │ │ │ ├── SubtitleData.java
│ │ │ │ └── lrc
│ │ │ │ │ ├── LrcBean.java
│ │ │ │ │ ├── LrcFile.java
│ │ │ │ │ └── LrcType.java
│ │ │ ├── player
│ │ │ │ ├── LcMediaPlayer.java
│ │ │ │ ├── MediaPlayerUtil.java
│ │ │ │ ├── TeaMediaPlayer.java
│ │ │ │ └── VlcPlayer.java
│ │ │ ├── service
│ │ │ │ ├── api
│ │ │ │ │ ├── CategoryTask.java
│ │ │ │ │ ├── WorkTracksTask.java
│ │ │ │ │ ├── login
│ │ │ │ │ │ ├── CheckLoginTask.java
│ │ │ │ │ │ └── LoginTask.java
│ │ │ │ │ ├── playlist
│ │ │ │ │ │ ├── PlayListAlterTask.java
│ │ │ │ │ │ ├── PlayListCreateTask.java
│ │ │ │ │ │ ├── PlayListDeleteTask.java
│ │ │ │ │ │ ├── PlayListRemoveWorkTask.java
│ │ │ │ │ │ ├── PlayListService.java
│ │ │ │ │ │ └── PlayListWorkExistService.java
│ │ │ │ │ ├── star
│ │ │ │ │ │ ├── StarWorkAddTask.java
│ │ │ │ │ │ └── StarWorkRemoveTask.java
│ │ │ │ │ └── works
│ │ │ │ │ │ ├── MainWorksService.java
│ │ │ │ │ │ ├── PlayListWorksService.java
│ │ │ │ │ │ └── WorksBaseService.java
│ │ │ │ └── subtitle
│ │ │ │ │ ├── SeekSubtitleFileService.java
│ │ │ │ │ ├── beans
│ │ │ │ │ ├── SubtitleBeansBaseTask.java
│ │ │ │ │ ├── SubtitleBeansByFolderTask.java
│ │ │ │ │ ├── SubtitleBeansByNetTask.java
│ │ │ │ │ └── SubtitleBeansByZipTask.java
│ │ │ │ │ └── row
│ │ │ │ │ ├── SubtitleRowBaseTask.java
│ │ │ │ │ ├── SubtitleRowByFolderTask.java
│ │ │ │ │ ├── SubtitleRowByNetTask.java
│ │ │ │ │ └── SubtitleRowByZipTask.java
│ │ │ ├── ui
│ │ │ │ ├── CategoryType.java
│ │ │ │ ├── CategoryUI.java
│ │ │ │ ├── CategoryViewModel.java
│ │ │ │ ├── DetailUI.java
│ │ │ │ ├── DetailViewModel.java
│ │ │ │ ├── DownloadUI.java
│ │ │ │ ├── DownloadViewModel.java
│ │ │ │ ├── LoginUI.java
│ │ │ │ ├── LoginViewModel.java
│ │ │ │ ├── MainGridUI.java
│ │ │ │ ├── MainGridViewModel.java
│ │ │ │ ├── MainPlayListUI.java
│ │ │ │ ├── MainPlayListViewModel.java
│ │ │ │ ├── MainUI.java
│ │ │ │ ├── MainViewModel.java
│ │ │ │ ├── PlayListUI.java
│ │ │ │ ├── PlayListViewModel.java
│ │ │ │ ├── PlayerUI.java
│ │ │ │ ├── PlayingListUI.java
│ │ │ │ ├── PosterUI.java
│ │ │ │ ├── PosterViewModel.java
│ │ │ │ ├── SettingUI.java
│ │ │ │ ├── SettingUIViewModel.java
│ │ │ │ ├── SimplePlayerUI.java
│ │ │ │ ├── SimplePlayerViewModel.java
│ │ │ │ ├── cell
│ │ │ │ │ ├── DownloadTreeItem.java
│ │ │ │ │ ├── FileTreeItem.java
│ │ │ │ │ ├── LrcListCell.java
│ │ │ │ │ ├── PlayListCell.java
│ │ │ │ │ ├── PlayListWorkCell.java
│ │ │ │ │ ├── WorkCell.java
│ │ │ │ │ └── ZipTreeItem.java
│ │ │ │ ├── component
│ │ │ │ │ ├── DesktopLrcDialog.java
│ │ │ │ │ ├── Dialog.java
│ │ │ │ │ ├── FolderTableView.java
│ │ │ │ │ ├── GridView.java
│ │ │ │ │ ├── LrcView.java
│ │ │ │ │ └── PathViewPane.java
│ │ │ │ ├── item
│ │ │ │ │ ├── LrcFileDialogUI.java
│ │ │ │ │ ├── LrcFileDialogViewModel.java
│ │ │ │ │ ├── LrcFolderDialogUI.java
│ │ │ │ │ ├── LrcFolderDialogViewModel.java
│ │ │ │ │ ├── LrcZipDialogUI.java
│ │ │ │ │ ├── LrcZipDialogViewModel.java
│ │ │ │ │ ├── PlayListAddUI.java
│ │ │ │ │ └── VolumeUI.java
│ │ │ │ └── stage
│ │ │ │ │ ├── ImageViewStage.java
│ │ │ │ │ ├── LocalSubtitleStage.java
│ │ │ │ │ └── SubtitleStage.java
│ │ │ ├── util
│ │ │ │ ├── AnchorPaneUtil.java
│ │ │ │ ├── CssLoader.java
│ │ │ │ ├── FXResourcesLoader.java
│ │ │ │ ├── LrcFormatUtil.java
│ │ │ │ ├── LrcImportUtil.java
│ │ │ │ ├── OSUtil.java
│ │ │ │ ├── TimeFormatUtil.java
│ │ │ │ └── comparator
│ │ │ │ │ ├── FileNameComparator.java
│ │ │ │ │ ├── LrcFileComparator.java
│ │ │ │ │ └── TrackComparator.java
│ │ │ └── zip
│ │ │ │ ├── NewZipUtil.java
│ │ │ │ └── ZipEntityFile.java
│ │ │ └── teaFX
│ │ │ ├── config
│ │ │ └── Config.java
│ │ │ ├── controls
│ │ │ ├── LoadingDot.java
│ │ │ ├── TitleBar.java
│ │ │ └── notification
│ │ │ │ ├── MessageType.java
│ │ │ │ └── Notification.java
│ │ │ ├── enums
│ │ │ └── TitleBarStyle.java
│ │ │ ├── handler
│ │ │ ├── DragWindowHandler.java
│ │ │ └── ResizeWindowHandler.java
│ │ │ └── stage
│ │ │ ├── RoundStage.java
│ │ │ ├── TeaStage.java
│ │ │ └── handler
│ │ │ ├── DragWindowHandler.java
│ │ │ └── ResizeWindowHandler.java
│ └── module-info.java
└── resources
│ ├── cn
│ └── tealc995
│ │ ├── kkmaid
│ │ ├── css
│ │ │ ├── BaseUI.css
│ │ │ ├── SVGS.css
│ │ │ ├── category.css
│ │ │ ├── colors.css
│ │ │ ├── detail.css
│ │ │ ├── download.css
│ │ │ ├── item
│ │ │ │ ├── lrc-file-dialog.css
│ │ │ │ ├── lrc-stage.css
│ │ │ │ ├── lrc-zip-dialog.css
│ │ │ │ ├── playing-list.css
│ │ │ │ └── volume-popup.css
│ │ │ ├── main-grid.css
│ │ │ ├── main.css
│ │ │ ├── player-detail.css
│ │ │ ├── setting.css
│ │ │ └── simple-player.css
│ │ ├── fxml
│ │ │ └── player.fxml
│ │ └── image
│ │ │ ├── album.jpg
│ │ │ ├── cover-main.jpg
│ │ │ ├── gkdk.png
│ │ │ ├── icon.png
│ │ │ ├── logo.ico
│ │ │ ├── suffix
│ │ │ ├── file-audio.png
│ │ │ ├── file-folder.png
│ │ │ ├── file-image.png
│ │ │ ├── file-unknown.png
│ │ │ └── file-video.png
│ │ │ └── title.png
│ │ └── teaFX
│ │ └── css
│ │ ├── base_ui.css
│ │ ├── scene-bar.css
│ │ └── title-bar.css
│ └── logback.xml
└── windows
└── assets
└── icon.ico
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | .mvn/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### IntelliJ IDEA ###
8 | .idea/
9 | .idea/modules.xml
10 | .idea/jarRepositories.xml
11 | .idea/compiler.xml
12 | .idea/libraries/
13 | *.iws
14 | *.iml
15 | *.ipr
16 |
17 | ### Eclipse ###
18 | .apt_generated
19 | .classpath
20 | .factorypath
21 | .project
22 | .settings
23 | .springBeans
24 | .sts4-cache
25 |
26 | ### NetBeans ###
27 | /nbproject/private/
28 | /nbbuild/
29 | /dist/
30 | /nbdist/
31 | /.nb-gradle/
32 | build/
33 | !**/src/main/**/build/
34 | !**/src/test/**/build/
35 |
36 | ### VS Code ###
37 | .vscode/
38 |
39 | ### Mac OS ###
40 | .DS_Store
41 |
42 |
43 | config.properties
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | **本项目是作者学习JavaFX的练手项目,仅供学习交流使用,请勿进行推广与搬运,谢谢。**
2 |
3 | # 一、说明
4 |
5 | 未来道具11号-KK Maid是一款适配ASMR ONE的桌面级客户端,使用JavaFX进行开发。主要解决在使用Web应用的痛点问题,如不够灵活的桌面歌词,繁琐的下载,手里成千上万的字幕包却无法可视化查看等等。
6 |
7 | 目前实现的功能有:
8 |
9 | - 基本的功能,包括作品浏览,收藏,播放,LRC与VTT支持;
10 | - 歌单的创建与管理;
11 | - 更美观的播放界面,控制,滚动歌词统统有;
12 | - 更便捷的在线图片浏览,图片切换,放大缩小,一键保存;
13 | - 更好的桌面歌词,透明,自定义颜色,锁定,我全都要;
14 | - 更强大的本地字幕支持(ZIP字幕包与字幕文件夹),播放在线作品可以使用本地字幕;
15 | - 更贴心的功能,本地字幕包在线可视化匹配,有图有真相;
16 | - 更强大的字幕查看,一个窗口查看所有字幕;
17 | - 更便捷的作品下载(需要配置Motrix);
18 | - 更详细黑名单支持,包括作品黑名单,标签黑名单,字幕文本黑名单。
19 |
20 |
21 |
22 |
23 | # 二、使用教程
24 | ### 请记住:未来道具11号不是一款商业软件,没有精力去考虑与处理方方面面的异常。开发者的设计理念一直是在约定的范围内合理使用,则有着良好的体验。
25 | #### 1. 配置服务器和Token
26 | 程序使用需要配置服务器地址和Token。首次使用,请前往 **设置-服务器** 设置服务器地址以及Token。
27 |
28 | **如果你无法直接访问网站,先设置代理并重启。**
29 | 
30 |
31 | > **请严格按照格式来填写,不要多一个字符**
32 |
33 | 服务器API : 假设服务器地址是https://baidu.com,那么输入框填写的Api地址是https://api.baidu.com,具体请前往网站查询具体服务器地址。
34 |
35 | Token: 傻瓜式操作,点击获取Token登录即可。
36 |
37 | 配置完上面两项就可以愉快使用了。
38 |
39 | #### 2. 配置本地字幕
40 |
41 | > 注意:本地字幕目前只支持LRC格式,字幕压缩包只支持ZIP格式
42 |
43 | 如果你需要使用本地字幕,前往 **设置-字幕管理** 进行配置。
44 |
45 | 目前程序支持两种字幕导入方式,分别是**字幕根文件夹**以及**字幕压缩包文件夹**。请优先使用**字幕压缩包文件夹**方式,字幕根文件夹未来不再支持。
46 |
47 | ##### 本地字幕根文件夹:这个是所有字幕文件夹的根文件夹,里面放置的的是每个音声的字幕文件夹。请注意暂不支持子字幕文件夹的查找与读取。
48 |
49 | ##### 本地压缩包文件夹:里面放的是所有zip格式的字幕压缩包。请注意暂不支持子字幕文件夹的查找与读取
50 |
51 | ```
52 | 字幕根文件夹的格式如下:
53 | -根目录
54 | --作品1
55 | ---字幕01.lrc
56 | ---字幕01.lrc
57 | --作品2
58 | ---字幕01.lrc
59 | ---字幕01.lrc
60 |
61 | 字幕压缩包文件夹的格式如下:
62 | -根目录
63 | --作品1.zip
64 | --作品2.zip
65 | ```
66 |
67 | #### 3. 将本地字幕进行可视化浏览
68 |
69 | 本地字幕包如何选取自己喜欢的作品是一大麻烦事,毕竟没图没真相。
70 |
71 | 本程序通过歌单的方式实现了本地字幕的可视化浏览,即像浏览在线作品一样浏览本地字幕对应的作品。
72 |
73 | 首先,配置好本地字幕;然后前往歌单界面,点击右上角创建新的歌单,**勾选导入本地字幕作品**,完成添加。这样就可以在新创建的歌单中查看本地字幕对应的作品了。
74 |
75 | 
76 |
77 |
78 |
79 | > 注意:对于网站上没有的作品,不会显示。
80 |
81 | #### 4. 下载作品到本地
82 |
83 | 程序不内置下载程序,通过Aira2的适配进行下载(开发者推荐使用[Motrix](https://motrix.app/)),速度会有所保证。如果你对Aira2不了解,请善用搜索引擎。
84 |
85 | 使用前需要前往**设置-下载**完成配置,设置下载目标文件夹,Aira2的地址以及Aira2的PRC密钥。
86 |
87 | # 三、问题与解答
88 | #### 关于字幕文件相关,乱码问题
89 | KK Maid只支持UTF-8格式的LRC字幕文件,非UTF-8格式的字幕无法正常读取,会产生乱码文字,倘若其他格式请使用其他编辑器更改。
90 | 如果在使用本地Zip字幕包时,字幕标题乱码,这是因为字幕包的打包环境编码格式导致的。例如MAC打包在Windows中读取会导致标题乱码,因为MAC的默认编码是UTF-8,而Windows默认编码是GBK。解决方法是手动重新打包,当然这并不影响字幕文本。
91 |
92 | #### 字幕文件与当前播放并不配对问题
93 | 由于各种字幕标准不一,有的字幕名称是日文,有的是中文等其他语言,有的有特典字幕,有的没有特典字幕,自然难以保证百分百配对。当然KK Maid提供解决方法。你可以在播放界面,选择字幕管理功能,对不匹配的字幕进行手动适配。
94 |
95 | #### 有时候无响应或者内容加载不出来
96 | 一般是网络问题,检查网络后重启即可。
97 |
98 |
99 |
100 | # 四、感谢以下开源项目
101 |
102 | 1. [JFoenix](https://github.com/sshahine/JFoenix)
103 | 2. [FXTrayIcon](https://github.com/dustinkredmond/FXTrayIcon)
104 | 3. [ControlsFX](https://github.com/controlsfx/controlsfx)
105 | 4. [Jackson](https://github.com/FasterXML/jackson)
106 | 5. [Atlantafx](https://github.com/mkpaz/atlantafx)
107 | 6. [Openjfx](https://openjfx.io/)
108 | 7. [Zip4j](https://github.com/srikanth-lingala/zip4j)
109 | 8. [EventBus](https://github.com/greenrobot/EventBus)
110 |
111 | # 五、如果该开源项目对您的学习有所帮助,欢迎赞助支持。
112 |
113 | 您可以按照以下格式留言:
114 |
115 | **KK Maid @[称呼]:[想说的话]**
116 |
117 | 
118 |
--------------------------------------------------------------------------------
/docs/image/image01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/docs/image/image01.png
--------------------------------------------------------------------------------
/docs/image/image02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/docs/image/image02.png
--------------------------------------------------------------------------------
/docs/image/image03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/docs/image/image03.png
--------------------------------------------------------------------------------
/docs/image/image04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/docs/image/image04.png
--------------------------------------------------------------------------------
/docs/image/pay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/docs/image/pay.png
--------------------------------------------------------------------------------
/libs/JRegistry-1.1.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/libs/JRegistry-1.1.0.jar
--------------------------------------------------------------------------------
/libs/eventbus-java-3.3.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/libs/eventbus-java-3.3.1.jar
--------------------------------------------------------------------------------
/libs/jaudiotagger-3.0.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/libs/jaudiotagger-3.0.2.jar
--------------------------------------------------------------------------------
/libs/thumbnailator-0.4.20.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leck995/KK-Maid/6b300338140119d400160e452f8a93d457f86a10/libs/thumbnailator-0.4.20.jar
--------------------------------------------------------------------------------
/src/main/java/cn/tealc995/aria2/Aria2Client.java:
--------------------------------------------------------------------------------
1 | package cn.tealc995.aria2;
2 |
3 |
4 | import cn.tealc995.kikoreu.model.Response;
5 |
6 | import java.io.BufferedReader;
7 | import java.io.InputStreamReader;
8 | import java.io.OutputStream;
9 | import java.net.HttpURLConnection;
10 | import java.net.URL;
11 | import java.nio.charset.StandardCharsets;
12 |
13 | /**
14 | * @description:
15 | * @author: Leck
16 | * @create: 2023-07-12 19:51
17 | */
18 | public class Aria2Client {
19 |
20 |
21 |
22 |
23 |
24 |
25 | public static Response post(String path,String json) {
26 | BufferedReader in = null;
27 | StringBuilder sb = new StringBuilder();
28 | try {
29 | URL url = new URL(path);
30 | HttpURLConnection conn = (HttpURLConnection) url.openConnection();
31 | conn.setRequestMethod("POST");
32 | conn.setUseCaches(false);
33 | conn.setDoOutput(true);
34 | conn.setDoInput(true);
35 |
36 |
37 | byte[] bytes = json.getBytes(StandardCharsets.UTF_8);
38 | conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");// 设定
39 | conn.setRequestProperty("Content-Length", String.valueOf(bytes.length));
40 | OutputStream outwritestream = conn.getOutputStream();
41 | outwritestream.write(bytes);
42 | outwritestream.flush();
43 | outwritestream.close();
44 | if (conn.getResponseCode() == 200) {
45 | // 定义BufferedReader输入流来读取URL的响应
46 | in = new BufferedReader(new InputStreamReader(conn.getInputStream(),StandardCharsets.UTF_8));
47 | String line;
48 | while ((line = in.readLine()) != null) {
49 | sb.append(line);
50 | }
51 | } else {
52 | in = new BufferedReader(new InputStreamReader(conn.getErrorStream(), StandardCharsets.UTF_8));
53 | String line;
54 | while ((line = in.readLine()) != null) {
55 | sb.append(line);
56 | }
57 | in.close();
58 | }
59 | conn.disconnect();
60 | return new Response(conn.getResponseCode(),sb.toString());
61 | } catch (Exception e) {
62 | e.printStackTrace();
63 | return new Response(404,e.getMessage());
64 | }
65 | }
66 |
67 |
68 | }
--------------------------------------------------------------------------------
/src/main/java/cn/tealc995/aria2/Aria2Method.java:
--------------------------------------------------------------------------------
1 | package cn.tealc995.aria2;
2 |
3 | public enum Aria2Method {
4 |
5 | TELL_ACTIVE("aria2.tellActive"),
6 | ADD_URI("aria2.addUri");
7 |
8 |
9 | private final String value;
10 |
11 | Aria2Method(String value) {
12 | this.value = value;
13 | }
14 |
15 | public String getValue() {
16 | return value;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/cn/tealc995/aria2/model/Aria2Option.java:
--------------------------------------------------------------------------------
1 | package cn.tealc995.aria2.model;
2 |
3 | /**
4 | * @description:
5 | * @author: Leck
6 | * @create: 2023-09-13 01:26
7 | */
8 | public class Aria2Option {
9 | private String dir;
10 | private String out;
11 | private String referer;
12 |
13 | public Aria2Option() {
14 | }
15 |
16 | public Aria2Option(String path, String referer) {
17 | int i = path.lastIndexOf("/");
18 |
19 | this.dir = path.substring(0,i);
20 | this.out = path.substring(i+1);
21 | this.referer = referer;
22 | }
23 | public Aria2Option(String dir, String out, String referer) {
24 | this.dir = dir;
25 | this.out = out;
26 | this.referer = referer;
27 | }
28 |
29 | public String getDir() {
30 | return dir;
31 | }
32 |
33 | public void setDir(String dir) {
34 | this.dir = dir;
35 | }
36 |
37 | public String getOut() {
38 | return out;
39 | }
40 |
41 | public void setOut(String out) {
42 | this.out = out;
43 | }
44 |
45 | public String getReferer() {
46 | return referer;
47 | }
48 |
49 | public void setReferer(String referer) {
50 | this.referer = referer;
51 | }
52 | }
--------------------------------------------------------------------------------
/src/main/java/cn/tealc995/aria2/model/Aria2Param.java:
--------------------------------------------------------------------------------
1 | package cn.tealc995.aria2.model;
2 |
3 |
4 | /**
5 | * @description:
6 | * @author: Leck
7 | * @create: 2023-09-13 01:27
8 | */
9 | public class Aria2Param {
10 | private String token;
11 | private String[] urls;
12 | private Aria2Option option;
13 |
14 | public Aria2Param(String token, String[] urls, Aria2Option option) {
15 | this.token = token;
16 | this.urls = urls;
17 | this.option = option;
18 | }
19 |
20 | public Aria2Param(String token, String url, Aria2Option option) {
21 | this.token = token;
22 | this.urls = new String[]{url};
23 | this.option = option;
24 | }
25 |
26 | public String getToken() {
27 | return token;
28 | }
29 |
30 | public void setToken(String token) {
31 | this.token = token;
32 | }
33 |
34 | public String[] getUrls() {
35 | return urls;
36 | }
37 |
38 | public void setUrls(String[] urls) {
39 | this.urls = urls;
40 | }
41 |
42 | public Aria2Option getOption() {
43 | return option;
44 | }
45 |
46 | public void setOption(Aria2Option option) {
47 | this.option = option;
48 | }
49 | }
--------------------------------------------------------------------------------
/src/main/java/cn/tealc995/aria2/model/Aria2Request.java:
--------------------------------------------------------------------------------
1 | package cn.tealc995.aria2.model;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * @description:
7 | * @author: Leck
8 | * @create: 2023-09-13 01:33
9 | */
10 | public class Aria2Request {
11 | private String id;
12 | private final String jsonrpc="2.0";
13 | private String method;
14 | private List