3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.concurrent.CompletableFuture;
6 import java.util.concurrent.ExecutionException;
8 import org.jsoup.Jsoup;
9 import org.jsoup.nodes.Document;
10 import org.jsoup.select.Elements;
12 public class AlbumTypeEstimate {
14 public final static String ALBUM_DATA_URI = "https://imascg-slstage-wiki.gamerch.com/%E6%A5%BD%E6%9B%B2%E8%A9%B3%E7%B4%B0%E4%B8%80%E8%A6%A7%EF%BC%88%E9%9B%A3%E6%98%93%E5%BA%A6%E5%88%A5%EF%BC%89";
17 public enum ALBUM_TYPE {
26 public enum MASTERPLUS_TYPE {
33 public static ArrayList<ArrayList<Album>> getAlbumType() {
34 long time = System.currentTimeMillis();
35 ArrayList<ArrayList<Album>> res = new ArrayList<ArrayList<Album>>();
37 Document document = Jsoup.connect(ALBUM_DATA_URI)
38 .userAgent("Java/DelesteRandomSelector More Information is available at https://github.com/hizumiaoba/DeresteRandomSelector/")
42 Elements elements = document.getElementsByTag("tbody");
43 Elements newMasterPlus = elements.get(4).select("tr");
44 Elements legacyMasterPlus = elements.get(5).select("tr");
45 CompletableFuture<ArrayList<Album>> fetchNew = CompletableFuture.supplyAsync(() -> fetch(newMasterPlus));
46 CompletableFuture<ArrayList<Album>> fetchLegacy = CompletableFuture.supplyAsync(() -> fetch(legacyMasterPlus));
47 res.add(fetchNew.get());
48 res.add(fetchLegacy.get());
49 } catch (IOException | InterruptedException | ExecutionException e) {
52 LimitedLog.println(AlbumTypeEstimate.class + ":[INFO]: " + "Album type fetched in " + (System.currentTimeMillis() - time) + "ms");
56 private static ArrayList<Album> fetch(Elements elements) {
57 ArrayList<Album> res = new ArrayList<>();
60 String type = element.select("td").get(0).text().isEmpty() ? "Not-implemented" : element.select("td").get(0).text();
61 String songName = element.select("td").get(2).text();
62 Album tmp = new Album();
63 tmp.setSongName(songName);
64 tmp.setAlbumType(type);