|
|
@@ -12,20 +12,25 @@ import com.izouma.nineth.repo.CollectionRepo;
|
|
|
import com.izouma.nineth.repo.PrivilegeOptionRepo;
|
|
|
import com.izouma.nineth.repo.UserRepo;
|
|
|
import com.izouma.nineth.service.storage.StorageService;
|
|
|
+import com.izouma.nineth.utils.ImageUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
import org.apache.commons.io.FilenameUtils;
|
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
|
|
+import org.bytedeco.javacv.FFmpegFrameGrabber;
|
|
|
+import org.bytedeco.javacv.Frame;
|
|
|
+import org.bytedeco.javacv.Java2DFrameConverter;
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileInputStream;
|
|
|
-import java.io.IOException;
|
|
|
+import javax.imageio.ImageIO;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.*;
|
|
|
import java.nio.file.Files;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
+import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -52,23 +57,31 @@ class CollectionServiceTest extends ApplicationTests {
|
|
|
|
|
|
@Test
|
|
|
public void batchUpload() throws IOException {
|
|
|
- AtomicInteger num = new AtomicInteger(2501);
|
|
|
+ AtomicInteger num = new AtomicInteger(1);
|
|
|
List<BlindBoxItem> items = new ArrayList<>();
|
|
|
- String jsonStr = FileUtils.readFileToString(new File("/Users/qiufangchao/Desktop/evo.json"), "UTF-8");
|
|
|
- Arrays.stream(new File("/Users/qiufangchao/Desktop/evo3").listFiles())
|
|
|
- .filter(f -> Pattern.matches("^BJ.*\\.png$", f.getName()))
|
|
|
+ String jsonStr = FileUtils.readFileToString(new File("/Users/qiufangchao/Desktop/OASISPUNK.json"), "UTF-8");
|
|
|
+ Arrays.stream(new File("/Users/qiufangchao/Desktop/avatar").listFiles())
|
|
|
+ .filter(f -> !f.getName().contains(".DS_Store"))
|
|
|
.parallel().forEach(file -> {
|
|
|
try {
|
|
|
+ String name = file.getName();
|
|
|
+ Pattern p = Pattern.compile("(\\d+)");
|
|
|
+ Matcher matcher = p.matcher(name);
|
|
|
+ matcher.find();
|
|
|
+ String findname = matcher.group();
|
|
|
+
|
|
|
Collection collection = JSON.parseObject(jsonStr, Collection.class);
|
|
|
collection.setId(null);
|
|
|
- collection.setName(String.format("OASISPUNK.EVO #%04d", num.getAndIncrement()));
|
|
|
+ collection.setName("OASISPUNK #" + findname);
|
|
|
collection.setStock(1);
|
|
|
collection.setTotal(1);
|
|
|
collection.setSale(0);
|
|
|
collection.setMinterId(7150L);
|
|
|
collection.setOnShelf(false);
|
|
|
collection.setSalable(false);
|
|
|
- collection.setPic(Collections.singletonList(new FileObject("", "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/image/evos3/" + file.getName(), null, "png")));
|
|
|
+// String thumbPath = "https://cdn.raex.vip/thumb_image/mahjongman/" + file.getName()
|
|
|
+// .substring(0, file.getName().lastIndexOf(".")) + ".jpg";
|
|
|
+ collection.setPic(Collections.singletonList(new FileObject("", "https://cdn.raex.vip/image/evo1/" + file.getName(), null, "image/png")));
|
|
|
|
|
|
collectionRepo.save(collection);
|
|
|
System.out.println("保存成功" + collection.getId());
|
|
|
@@ -91,7 +104,7 @@ class CollectionServiceTest extends ApplicationTests {
|
|
|
public void createBlindBox() throws IOException {
|
|
|
List<Collection> items = collectionRepo.findByNameLike("OASISPUNK.EVO #%").stream().filter(i -> {
|
|
|
int num = Integer.parseInt(i.getName().substring("OASISPUNK.EVO #".length()));
|
|
|
- return num > 2500 && num <= 3000;
|
|
|
+ return num > 0 && num <= 280;
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
String jsonStr = FileUtils.readFileToString(new File("/Users/qiufangchao/Desktop/evo.json"), "UTF-8");
|
|
|
@@ -144,4 +157,54 @@ class CollectionServiceTest extends ApplicationTests {
|
|
|
collectionService.savePoint(3749128L, LocalDateTime.of(2022, 3, 23, 15, 0, 0));
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void uploadMp4() {
|
|
|
+ Arrays.stream(new File("/Users/qiufangchao/Desktop/majiang").listFiles())
|
|
|
+ .parallel()
|
|
|
+ .filter(f -> !f.getName().contains(".DS_Store"))
|
|
|
+ .forEach(file -> {
|
|
|
+ System.out.println(file.getName());
|
|
|
+ try {
|
|
|
+ String url = storageService.uploadFromInputStream(new FileInputStream(file), "video/mahjongman/" + file.getName());
|
|
|
+ String thumbPath = "thumb_image/mahjongman/" + file.getName()
|
|
|
+ .substring(0, file.getName().lastIndexOf(".")) + ".jpg";
|
|
|
+
|
|
|
+ FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file);
|
|
|
+ Java2DFrameConverter frameConverter = new Java2DFrameConverter();
|
|
|
+ try {
|
|
|
+ frameGrabber.start();
|
|
|
+
|
|
|
+ Frame frame = null;
|
|
|
+ while (frame == null) {
|
|
|
+ frame = frameGrabber.grabKeyFrame();
|
|
|
+ }
|
|
|
+ Objects.requireNonNull(frame, "获取视频缩略图失败");
|
|
|
+ BufferedImage thumbBi = frameConverter.convert(frame);
|
|
|
+
|
|
|
+ BufferedImage thumbResized = ImageUtils.resizeJpg(thumbBi, 1000, 1000, false);
|
|
|
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
|
|
|
+ ImageIO.write(thumbResized, "jpg", os);
|
|
|
+ InputStream is = new ByteArrayInputStream(os.toByteArray());
|
|
|
+ String thumbUrl = storageService.uploadFromInputStream(is, thumbPath);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ frameGrabber.stop();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void test2() {
|
|
|
+ String name = "/Users/qiufangchao/Desktop/majiang/bai1-1.mp4";
|
|
|
+ Pattern p = Pattern.compile("(\\d+)-(\\d+)");
|
|
|
+ Matcher matcher = p.matcher(name);
|
|
|
+ matcher.find();
|
|
|
+ String firstHour = matcher.group();
|
|
|
+ System.out.println(matcher.start());
|
|
|
+ System.out.println(firstHour);
|
|
|
+ }
|
|
|
+
|
|
|
}
|