From e7848cb9657a796c5df8fee70aac8bffa6ce12fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Thu, 7 Dec 2023 19:13:13 +0800 Subject: [PATCH 1/9] Add API - Get user photos (mai) Add: New API to return user photos. Fix bug: Missing dependency: ObjectMapper --- .../ApiMaimai2PlayerDataController.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index dab6abab..1526ee11 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -1,6 +1,8 @@ package icu.samnyan.aqua.api.controller.sega.game.maimai2; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + import icu.samnyan.aqua.api.model.MessageResponse; import icu.samnyan.aqua.api.model.ReducedPageResponse; import icu.samnyan.aqua.api.model.resp.sega.maimai2.ProfileResp; @@ -21,9 +23,12 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.nio.file.*; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author samnyan (privateamusement@protonmail.com) @@ -89,6 +94,28 @@ public class ApiMaimai2PlayerDataController { return divMaxLength; } + @GetMapping("userPhoto") + public List getUserPhoto(@RequestParam long aimeId) { + List matchedFiles = new ArrayList<>(); + try (Stream paths = Files.walk(Paths.get("data"))) { + matchedFiles = paths + .filter(Files::isRegularFile) + .filter(path -> path.getFileName().toString().endsWith(".jpg")) + .filter(path -> { + String fileName = path.getFileName().toString(); + String[] parts = fileName.split("-"); + return parts.length > 0 && parts[0].equals(String.valueOf(aimeId)); + }) + .map(Path::getFileName) + .map(Path::toString) + .sorted() + .collect(Collectors.toList()); + matchedFiles.forEach(System.out::println); + } catch (IOException e) { + } + return matchedFiles; + } + @GetMapping("profile") public ProfileResp getProfile(@RequestParam long aimeId) { return mapper.convert(userDataRepository.findByCard_ExtId(aimeId).orElseThrow(), new TypeReference<>() { From ba1f458907e5038c2cd5b6f806bc7c41f1d20c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:02:19 +0800 Subject: [PATCH 2/9] New API to return user photos. New API to return user photos. --- .../api/model/resp/sega/maimai2/PhotoResp.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java new file mode 100644 index 00000000..73647a03 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java @@ -0,0 +1,14 @@ +package icu.samnyan.aqua.api.model.resp.sega.maimai2; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PhotoResp { + private int imageIndex; + private int totalImage; + private String divData; +} From 9c51b1e0ee5abdfe60ee3fc782e05c5a185a22cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= Date: Fri, 8 Dec 2023 02:07:18 +0800 Subject: [PATCH 3/9] Revert "Add API - Get user photos (mai)" This reverts commit e7848cb9657a796c5df8fee70aac8bffa6ce12fb. --- .../ApiMaimai2PlayerDataController.java | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index 1526ee11..dab6abab 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -1,8 +1,6 @@ package icu.samnyan.aqua.api.controller.sega.game.maimai2; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - import icu.samnyan.aqua.api.model.MessageResponse; import icu.samnyan.aqua.api.model.ReducedPageResponse; import icu.samnyan.aqua.api.model.resp.sega.maimai2.ProfileResp; @@ -23,12 +21,9 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.io.IOException; -import java.nio.file.*; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author samnyan (privateamusement@protonmail.com) @@ -94,28 +89,6 @@ public class ApiMaimai2PlayerDataController { return divMaxLength; } - @GetMapping("userPhoto") - public List getUserPhoto(@RequestParam long aimeId) { - List matchedFiles = new ArrayList<>(); - try (Stream paths = Files.walk(Paths.get("data"))) { - matchedFiles = paths - .filter(Files::isRegularFile) - .filter(path -> path.getFileName().toString().endsWith(".jpg")) - .filter(path -> { - String fileName = path.getFileName().toString(); - String[] parts = fileName.split("-"); - return parts.length > 0 && parts[0].equals(String.valueOf(aimeId)); - }) - .map(Path::getFileName) - .map(Path::toString) - .sorted() - .collect(Collectors.toList()); - matchedFiles.forEach(System.out::println); - } catch (IOException e) { - } - return matchedFiles; - } - @GetMapping("profile") public ProfileResp getProfile(@RequestParam long aimeId) { return mapper.convert(userDataRepository.findByCard_ExtId(aimeId).orElseThrow(), new TypeReference<>() { From 7cc9fb11b683b6e62866e8e389b247378541043a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= Date: Fri, 8 Dec 2023 02:10:49 +0800 Subject: [PATCH 4/9] Revert "New API to return user photos." This reverts commit ba1f458907e5038c2cd5b6f806bc7c41f1d20c29. --- .../api/model/resp/sega/maimai2/PhotoResp.java | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java deleted file mode 100644 index 73647a03..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java +++ /dev/null @@ -1,14 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhotoResp { - private int imageIndex; - private int totalImage; - private String divData; -} From 0913ef2060d5418fab56892b7cd4384596e90c6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:14:20 +0800 Subject: [PATCH 5/9] [api] Add maimai2 userPhoto API --- .../api/model/resp/sega/maimai2/PhotoResp.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java new file mode 100644 index 00000000..73647a03 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java @@ -0,0 +1,14 @@ +package icu.samnyan.aqua.api.model.resp.sega.maimai2; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PhotoResp { + private int imageIndex; + private int totalImage; + private String divData; +} From 0bf54e666b25609ff834c005a02b1a13da3b6493 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:18:35 +0800 Subject: [PATCH 6/9] [API] Let web music list read from database Add a feature to retrieve user photos. --- .../ApiMaimai2PlayerDataController.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index dab6abab..3db3a10e 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -1,9 +1,12 @@ package icu.samnyan.aqua.api.controller.sega.game.maimai2; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + import icu.samnyan.aqua.api.model.MessageResponse; import icu.samnyan.aqua.api.model.ReducedPageResponse; import icu.samnyan.aqua.api.model.resp.sega.maimai2.ProfileResp; +import icu.samnyan.aqua.api.model.resp.sega.maimai2.PhotoResp; import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.ExternalUserData; import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataExport; import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataImport; @@ -21,9 +24,12 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.nio.file.*; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author samnyan (privateamusement@protonmail.com) @@ -89,6 +95,37 @@ public class ApiMaimai2PlayerDataController { return divMaxLength; } + @GetMapping("userPhoto") + public PhotoResp getUserPhoto(@RequestParam long aimeId, + @RequestParam(required = false, defaultValue = "0") int imageIndex) { + List matchedFiles = new ArrayList<>(); + PhotoResp Photo = new PhotoResp(); + try (Stream paths = Files.walk(Paths.get("data"))) { + matchedFiles = paths + .filter(Files::isRegularFile) + .filter(path -> path.getFileName().toString().endsWith(".jpg")) + .filter(path -> { + String fileName = path.getFileName().toString(); + String[] parts = fileName.split("-"); + return parts.length > 0 && parts[0].equals(String.valueOf(aimeId)); + }) + .map(Path::getFileName) + .map(Path::toString) + .sorted(Comparator.reverseOrder()) + .collect(Collectors.toList()); + Photo.setTotalImage(matchedFiles.size()); + Photo.setImageIndex(imageIndex); + if(matchedFiles.size() > imageIndex){ + byte[] targetImageContent = Files.readAllBytes(Paths.get("data/" + matchedFiles.get(imageIndex))); + String divData = Base64.getEncoder().encodeToString(targetImageContent); + Photo.setDivData(divData); + } + } + catch (IOException e) { + } + return Photo; + } + @GetMapping("profile") public ProfileResp getProfile(@RequestParam long aimeId) { return mapper.convert(userDataRepository.findByCard_ExtId(aimeId).orElseThrow(), new TypeReference<>() { From e271cb45555f593c50fd077759e1f0653eaa058e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:21:49 +0800 Subject: [PATCH 7/9] [API] Add a feature to retrieve user photos. Add: Add a feature to retrieve user photos. Fix bug: Missing dependency: ObjectMapper --- .../sega/game/maimai2/ApiMaimai2PlayerDataController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index 3db3a10e..a6f63db2 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -121,7 +121,7 @@ public class ApiMaimai2PlayerDataController { Photo.setDivData(divData); } } - catch (IOException e) { + catch (Exception e) { } return Photo; } From 4a64895e813416b8fc6088fe4a844a3320e3f1ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:45:24 +0800 Subject: [PATCH 8/9] [api] Add maimai2 userPhoto API --- .../icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java index 73647a03..a57b97f7 100644 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java +++ b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java @@ -10,5 +10,6 @@ import lombok.NoArgsConstructor; public class PhotoResp { private int imageIndex; private int totalImage; + private String fileName; private String divData; } From 0d4221203b280332249ed33b7e4072916c81c66f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=A5=E5=AE=85=E8=99=BE=E5=93=A5?= <42127557+FeiZhaixiage@users.noreply.github.com> Date: Fri, 8 Dec 2023 02:49:19 +0800 Subject: [PATCH 9/9] [API] Add a feature to retrieve user photos. --- .../sega/game/maimai2/ApiMaimai2PlayerDataController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index a6f63db2..cc4a393e 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -119,6 +119,7 @@ public class ApiMaimai2PlayerDataController { byte[] targetImageContent = Files.readAllBytes(Paths.get("data/" + matchedFiles.get(imageIndex))); String divData = Base64.getEncoder().encodeToString(targetImageContent); Photo.setDivData(divData); + Photo.setFileName(matchedFiles.get(imageIndex)); } } catch (Exception e) {