Skip to content

Commit 93f4175

Browse files
committed
新版本,使用图形用户界面;
完善项目; 修复bug;
1 parent 71da3c3 commit 93f4175

File tree

82 files changed

+4277
-126
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+4277
-126
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ build/
3737
backup-data/
3838
bin/
3939
qr/
40+
doc/

assets/windows/ChineseSimplified.isl

Lines changed: 396 additions & 0 deletions
Large diffs are not rendered by default.
136 KB
Binary file not shown.

pom.xml

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@
66

77
<groupId>top.ybgnb</groupId>
88
<artifactId>bilibili-backup</artifactId>
9-
<description>哔哩哔哩账号备份</description>
10-
<version>1.0.6</version>
9+
<name>哔哩哔哩账号备份</name>
10+
<description>一键对B站账号进行数据备份和还原,方便账号数据迁移/快速转生(哗哩哗哩 bilibili)</description>
11+
<version>2.0</version>
1112

1213
<properties>
1314
<maven.compiler.source>8</maven.compiler.source>
1415
<maven.compiler.target>8</maven.compiler.target>
1516
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
<app.author>hzhilong</app.author>
18+
<app.email>hzhilong777@outlook.com</app.email>
19+
<app.github>https://github.com/hzhilong/bilibili-backup</app.github>
20+
<app.mainClass>top.ybgnb.bilibili.backup.App</app.mainClass>
21+
<app.ico>assets/windows/${project.name}.ico</app.ico>
1622
</properties>
1723

1824
<dependencies>
@@ -34,7 +40,7 @@
3440
<dependency>
3541
<groupId>commons-io</groupId>
3642
<artifactId>commons-io</artifactId>
37-
<version>2.7</version>
43+
<version>2.14.0</version>
3844
</dependency>
3945
<dependency>
4046
<groupId>org.slf4j</groupId>
@@ -52,11 +58,22 @@
5258
<artifactId>core</artifactId>
5359
<version>3.5.3</version>
5460
</dependency>
61+
<dependency>
62+
<groupId>com.formdev</groupId>
63+
<artifactId>flatlaf</artifactId>
64+
<version>3.5.2</version>
65+
</dependency>
5566
</dependencies>
5667

5768
<build>
69+
<resources>
70+
<resource>
71+
<directory>src/main/resources</directory>
72+
<filtering>true</filtering>
73+
</resource>
74+
</resources>
5875
<plugins>
59-
<plugin>
76+
<!--<plugin>
6077
<groupId>org.apache.maven.plugins</groupId>
6178
<artifactId>maven-jar-plugin</artifactId>
6279
<version>3.1.0</version>
@@ -65,7 +82,7 @@
6582
<manifest>
6683
<addClasspath>true</addClasspath>
6784
<classpathPrefix>lib/</classpathPrefix>
68-
<mainClass>top.ybgnb.bilibili.backup.app.CLIApp</mainClass>
85+
<mainClass>${app.mainClass}</mainClass>
6986
</manifest>
7087
</archive>
7188
</configuration>
@@ -77,24 +94,64 @@
7794
<executions>
7895
<execution>
7996
<id>make-assembly</id>
80-
<!-- 绑定到package生命周期 -->
97+
&lt;!&ndash; 绑定到package生命周期 &ndash;&gt;
8198
<phase>package</phase>
8299
<goals>
83-
<!-- 只运行一次 -->
100+
&lt;!&ndash; 只运行一次 &ndash;&gt;
84101
<goal>single</goal>
85102
</goals>
86103
<configuration>
87104
<tarLongFileMode>gnu</tarLongFileMode>
88105
<descriptors>
89-
<!-- 配置描述文件路径,一般使用相对目录即可 -->
106+
&lt;!&ndash; 配置描述文件路径,一般使用相对目录即可 &ndash;&gt;
90107
<descriptor>assembly.xml</descriptor>
91108
</descriptors>
92109
<outputDirectory>target</outputDirectory>
93-
<!-- 该标签默认为true,指定为false后包名将不会自动带上描述文件的id -->
110+
&lt;!&ndash; 该标签默认为true,指定为false后包名将不会自动带上描述文件的id &ndash;&gt;
94111
<appendAssemblyId>true</appendAssemblyId>
95112
</configuration>
96113
</execution>
97114
</executions>
115+
</plugin>-->
116+
<!-- https://github.com/fvarrui/JavaPackager -->
117+
<plugin>
118+
<groupId>io.github.fvarrui</groupId>
119+
<artifactId>javapackager</artifactId>
120+
<version>1.7.6</version>
121+
<executions>
122+
<execution>
123+
<id>bundle-jre</id>
124+
<phase>package</phase>
125+
<goals>
126+
<goal>package</goal>
127+
</goals>
128+
<configuration>
129+
<mainClass>${app.mainClass}</mainClass>
130+
<bundleJre>true</bundleJre>
131+
<jrePath>jre</jrePath>
132+
<generateInstaller>true</generateInstaller>
133+
<platform>windows</platform>
134+
135+
<url>${app.github}</url>
136+
<organizationUrl>${app.github}</organizationUrl>
137+
<organizationName>${app.author}</organizationName>
138+
<organizationEmail>${app.email}</organizationEmail>
139+
140+
<winConfig>
141+
<exeCreationTool>winrun4j</exeCreationTool>
142+
<!-- https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation -->
143+
<setupLanguages>
144+
<china>compiler:Languages\ChineseSimplified.isl</china>
145+
<english>compiler:Default.isl</english>
146+
</setupLanguages>
147+
<generateMsi>false</generateMsi>
148+
<disableDirPage>false</disableDirPage>
149+
<disableFinishedPage>false</disableFinishedPage>
150+
<disableRunAfterInstall>false</disableRunAfterInstall>
151+
</winConfig>
152+
</configuration>
153+
</execution>
154+
</executions>
98155
</plugin>
99156
</plugins>
100157
</build>

readme.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,28 @@
2424
- 收藏的视频合集
2525
- 稍后再看
2626
- 一键已读所有消息
27-
- 获取已注销账号信息
28-
- 关注和粉丝数量
29-
- 投稿的视频
30-
- 备份已注销账号数据
27+
- 查询已注销账号
28+
- 获取信息
29+
- 关注和粉丝数量
30+
- 投稿的视频
31+
- 备份数据
3132
- 收藏夹
3233
- 收藏的视频合集
3334
- 追番追剧
3435

36+
## 软件截图
3537

36-
## 使用方法
38+
![备份界面截图](./screenshot/app01.png "备份界面")
3739

38-
下载[已发布的版本](https://github.com/hzhilong/bilibili-backup/releases),解压后,打开对应功能的bat文件即可。
40+
![还原界面截图](./screenshot/app02.png "还原界面")
3941

40-
[蓝奏云](https://ybgnb.lanzouj.com/b0016vm26f),密码 `ybgnb`
42+
![已注销账号界面截图](./screenshot/app03.png "已注销账号界面")
43+
44+
## 下载使用
45+
46+
- [Github](https://github.com/hzhilong/bilibili-backup/releases/latest)
47+
48+
- [蓝奏云](https://ybgnb.lanzouj.com/b0016vm26f),密码 `ybgnb`
4149

4250
## 注意事项
4351

@@ -47,3 +55,4 @@
4755
## 感谢
4856

4957
- [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
58+
- [FlatLaf](https://github.com/JFormDesigner/FlatLaf)

screenshot/app01.png

163 KB
Loading

screenshot/app02.png

182 KB
Loading

screenshot/app03.png

185 KB
Loading
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package top.ybgnb.bilibili.backup;
2+
3+
import top.ybgnb.bilibili.backup.biliapi.error.BusinessException;
4+
import top.ybgnb.bilibili.backup.ui.config.FlatLafConfig;
5+
import top.ybgnb.bilibili.backup.ui.page.MainFrame;
6+
7+
import javax.swing.*;
8+
9+
/**
10+
* @ClassName App
11+
* @Description app
12+
* @Author hzhilong
13+
* @Time 2024/11/26
14+
* @Version 1.0
15+
*/
16+
public class App {
17+
18+
public static void main(String[] args) {
19+
SwingUtilities.invokeLater(new Runnable() {
20+
public void run() {
21+
new App().openApp();
22+
}
23+
});
24+
}
25+
26+
public void openApp() {
27+
// FlatLaf 外观库
28+
FlatLafConfig.init();
29+
MainFrame frame = new MainFrame();
30+
try {
31+
frame.init();
32+
} catch (BusinessException e) {
33+
throw new RuntimeException(e);
34+
}
35+
}
36+
}

src/main/java/top/ybgnb/bilibili/backup/app/CLIApp.java renamed to src/main/java/top/ybgnb/bilibili/backup/CLIApp.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package top.ybgnb.bilibili.backup.app;
1+
package top.ybgnb.bilibili.backup;
22

33
import lombok.extern.slf4j.Slf4j;
44
import top.ybgnb.bilibili.backup.app.menu.AppMainMenu;

src/main/java/top/ybgnb/bilibili/backup/app/bean/SavedUser.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import lombok.NoArgsConstructor;
66
import top.ybgnb.bilibili.backup.biliapi.bean.Upper;
77

8+
import java.util.Objects;
9+
810
/**
911
* @ClassName SavedUser
10-
* @Description 保存的用户
12+
* @Description 保存的账号
1113
* @Author hzhilong
1214
* @Time 2024/11/22
1315
* @Version 1.0
@@ -24,4 +26,21 @@ public SavedUser(Upper upper, String cookie) {
2426
this.cookie = cookie;
2527
}
2628

29+
@Override
30+
public String toString() {
31+
if (this.getName() != null && this.getName().length() > 8) {
32+
return String.format("%s...(%s)", this.getName().substring(0, 8), this.getMid());
33+
}
34+
return String.format("%s(%s)", this.getName(), this.getMid());
35+
}
36+
37+
@Override
38+
public boolean equals(Object obj) {
39+
if (!(obj instanceof SavedUser)) {
40+
return false;
41+
}
42+
43+
SavedUser user = (SavedUser) obj;
44+
return Objects.equals(user.getMid(), this.getMid());
45+
}
2746
}

src/main/java/top/ybgnb/bilibili/backup/app/business/BaseBusinessForLoginUser.java

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
import top.ybgnb.bilibili.backup.app.bean.UpperInfoCallback;
66
import top.ybgnb.bilibili.backup.app.menu.UserMenu;
77
import top.ybgnb.bilibili.backup.app.state.UserManager;
8-
import top.ybgnb.bilibili.backup.biliapi.bean.ApiResult;
98
import top.ybgnb.bilibili.backup.biliapi.bean.QRCode;
109
import top.ybgnb.bilibili.backup.biliapi.bean.Upper;
1110
import top.ybgnb.bilibili.backup.biliapi.error.BusinessException;
12-
import top.ybgnb.bilibili.backup.biliapi.request.BaseApi;
1311
import top.ybgnb.bilibili.backup.biliapi.service.impl.LoginService;
1412
import top.ybgnb.bilibili.backup.biliapi.user.User;
1513
import top.ybgnb.bilibili.backup.biliapi.utils.QRUtil;
@@ -21,7 +19,7 @@
2119

2220
/**
2321
* @ClassName BaseBusinessForLoginUser
24-
* @Description 登录用户的业务基类
22+
* @Description 登录账号的业务基类
2523
* @Author hzhilong
2624
* @Time 2024/11/22
2725
* @Version 1.0
@@ -30,22 +28,22 @@
3028
public abstract class BaseBusinessForLoginUser extends BaseBusiness {
3129

3230
/**
33-
* 选择用户
31+
* 选择账号
3432
*/
3533
protected SavedUser chooseUser(Scanner scanner) throws BusinessException {
36-
// 选择登录过的用户
34+
// 选择登录过的账号
3735
SavedUser savedUser = UserMenu.chooseLoggedUser(scanner, true);
3836
String cookie;
3937
if (savedUser != null) {
4038
// 之前登录过
4139
cookie = savedUser.getCookie();
4240
} else {
43-
log.info("请使用扫码方式登录用户\n");
41+
log.info("请使用扫码方式登录账号\n");
4442
cookie = loginUserByQR();
4543
}
4644

4745
Upper upper = getUpper(new User(cookie),
48-
// UP信息回调(在已登录用户失效时删除保存的cookie文件
46+
// UP信息回调(在已登录账号失效时删除保存的cookie文件
4947
new UpperInfoCallback() {
5048
@Override
5149
public void success(Upper upper) throws BusinessException {
@@ -61,7 +59,7 @@ public void fail(User user) {
6159
}
6260

6361
/**
64-
* 使用二维码登录用户
62+
* 使用二维码登录账号
6563
*/
6664
private String loginUserByQR() throws BusinessException {
6765
LoginService loginService = new LoginService(client);
@@ -105,19 +103,6 @@ private String loginUserByQR() throws BusinessException {
105103
* 获取UP信息
106104
*/
107105
public Upper getUpper(User user, UpperInfoCallback upperInfoCallback) throws BusinessException {
108-
log.info("正在获取用户信息,请稍候...");
109-
ApiResult<Upper> userInfo = new BaseApi<Upper>(client, new User(user.getCookie()),
110-
"https://api.bilibili.com/x/space/myinfo", true, Upper.class).apiGet();
111-
if (userInfo._isFail()) {
112-
log.error(userInfo.getMessage());
113-
if (upperInfoCallback != null) {
114-
upperInfoCallback.fail(user);
115-
}
116-
throw new BusinessException("获取当前用户信息失败");
117-
}
118-
if (upperInfoCallback != null) {
119-
upperInfoCallback.success(userInfo.getData());
120-
}
121-
return userInfo.getData();
106+
return new LoginService(client).getUpper(user, upperInfoCallback);
122107
}
123108
}

src/main/java/top/ybgnb/bilibili/backup/app/business/BusinessRunner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static Upper processBusiness(BusinessType businessType, Scanner scanner)
3636
// 处理业务
3737
Upper upper = business.process(scanner);
3838
if (upper != null) {
39-
log.info("【{}】处理成功,当前用户:{}\n", businessType.getName(), upper.getName());
39+
log.info("【{}】处理成功,当前账号:{}\n", businessType.getName(), upper.getName());
4040
}
4141
Thread.sleep(2000);
4242
return upper;

src/main/java/top/ybgnb/bilibili/backup/app/business/impl/BackupBusiness.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class BackupBusiness extends BaseBusinessForLoginUser {
2727

2828
@Override
2929
public Upper process(Scanner scanner) throws BusinessException {
30-
// 1. 登录/选择用户
30+
// 1. 登录/选择账号
3131
SavedUser user = super.chooseUser(scanner);
3232
// 2. 选择操作项目
3333
List<ServiceBuilder> serviceItems = BackupRestoreMenu.chooseServiceItems(scanner);

0 commit comments

Comments
 (0)