c2a|>o??CHgkhmP<+4bDpQFldcQ`eVV!gH%}4L
z459^3;M)JYQl$|e=%-*}+!QVR@*Lt*LLYCm#*H;WYdg-ursW(hBlOdsvxi8o9H8ST
zbpOa@3oh{5Mkk%1$5_A>56^nw1k32R9m5B>IDCjpjK1;9LzeoNM>6K{xDs8X-hPR*LK5&4s`8)e~?;E6_V(LYQ_kn$U
zFnrRykH=pL(OWm}i%;m;f>nC)-{&u$!ha&y!go(_kM?M+YX)kXR?TlKIsAe5#wp%t;J>wA
eCx%ar*Jt>g_ayxl<2TH8i@oWJ0wt8;QN@@2f9IAgDOquFr;zrtT|
z!4gP(0N;cVJ!=Opk+^hESI<;e_5A$(?FWFDICPLBbgon+Q==E5S!n6^v=m0ZW~_gQ
zIVce7Q*kT&NW>HW?Pw}PLnysau`;g+`QwuTq0mdl(nTH>4@Hy+wLr!4&0;>1`kfd>
zlF$f}P(%Zvm95uc!Cb49a1{JkNS9}ZnLY<~f|p5BiEq`G(IB*Y&xhw9jh1tHCg({U
zsMHK2c`KvTMGcRvuqL5-9Q<>`HdQ?7o($}bEf3pxOsJ~#OlfwR=uery54OAG;fd`Q
z=d-cW?AR(MJXo=d)kIN&;m&L0F{ezyPs
literal 0
HcmV?d00001
diff --git a/bin/main/Main.class b/bin/main/Main.class
new file mode 100644
index 0000000000000000000000000000000000000000..bfc1924a11ca6d7f6ed048b2c6e80ecc3232a03d
GIT binary patch
literal 884
zcmah{+fEZv6kVscX@}urTfmCiRxFlF85Q(F)Wm=olPNr4NQ_UX(?dI?ogvdH>IeA&
zzLdl!et;ikTxUuk7!zOi{kHbrzkdJt3E&l;8%PM``qK05CW(QRz}%@kmv&G39s96#
zs@zB*^V0LZ=(RwyzIrT>+6~&uL=rg*X=DUu9nV(>!+uMJA7rbi1oBSc%HFXIJ*{6F
zQ&HC&2uwLw4R=^fD*_AkPtJAYqbT(J&W>(ozWw5=v&aklfq}e0A&&9_`~BgS$3Rh_
zdgAreAPR?WGz^u!8!8#8ecD)TVlz=dPLo9oxAoi^Hx4pzM_{HcBWdre$nEY?GEvg8
zCET-cKgQTm(K|2d4qKDq3{<$QIH@Up*@;^XOq6w68Os(P>a=M$=%2|@y$M74l?Yad
zAWqr~KKs2uwjFh@dd#coyc$+5tm(XL`_j)1$*{w<75=dxLYN>HSa$x4pW9BKXn-8t
zxe1ppqaVWv_3{3OMfd!~cynyp&7)u#x-ojblK!GieIZoAcj1=-2}*nuQiGaJF38hs
z7s!5(-6pAa116?Otw{j+G_@RNFv}uylvDKFipzYXB~8oL7=@1)oNj%Dg)vH$mzo8N~sa**G*Sg94wz@1B-==$n!CZs9>JgTSSA}Q!K?pZBN=^
m9UIKak~gr)af&>)jmI3P!q0lb_#{0UUU4fPcbm}(Jo^JD0lzi?
literal 0
HcmV?d00001
diff --git a/bin/module-info.class b/bin/module-info.class
new file mode 100644
index 0000000000000000000000000000000000000000..3ec61ff0d18a0b516a7d7737b839c5977d56719e
GIT binary patch
literal 155
zcmX^0Z`VEs1_oOOE_MbcMh5QO{FKt1RNc(Hw0uSeuHgLAqU2P!%$!t41_2}~y{yEt
zL`DWSU$AOn26mvdYeh*>YHq4aYHog>PiAq6Faswe11CtKUQ%LlY6AlUBhVrUU}9hf
YGME@x7+8U{7y}zvn2~{_0nC690E?<100000
literal 0
HcmV?d00001
diff --git a/src/data/DownloadLevels.java b/src/data/DownloadLevels.java
new file mode 100644
index 0000000..63b9759
--- /dev/null
+++ b/src/data/DownloadLevels.java
@@ -0,0 +1,41 @@
+package data;
+
+import java.io.BufferedInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+
+public class DownloadLevels {
+
+ private ManageFiles data = new ManageFiles();
+
+
+ public void download() throws IOException {
+
+ String fileURL;
+
+ for(int i = 0; i < data.missingLevels().size(); i++) {
+
+ System.out.println("downloading " + data.missingLevels().get(i));
+ fileURL = "https://raw.githubusercontent.com/All-Rated-Extreme-Demon-List/AREDL/main/data/" + data.missingLevels().get(i) + ".json";
+
+ try (BufferedInputStream in = new BufferedInputStream(new URL(fileURL).openStream());
+
+ FileOutputStream fileOutputStream = new FileOutputStream("C:\\ExtremeDemonList\\levels\\" + data.missingLevels().get(i) + ".json")) {
+
+ byte dataBuffer[] = new byte[1024];
+ int bytesRead;
+
+ while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
+
+ fileOutputStream.write(dataBuffer, 0, bytesRead);
+
+ }
+ } catch (IOException e) {
+ // Handle exceptions
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/src/data/FetchData.java b/src/data/FetchData.java
new file mode 100644
index 0000000..0be79dc
--- /dev/null
+++ b/src/data/FetchData.java
@@ -0,0 +1,42 @@
+package data;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+
+public class FetchData {
+
+ private ArrayList levels = new ArrayList();
+
+ public void getGithubString() throws IOException {
+ String link = "https://raw.githubusercontent.com/All-Rated-Extreme-Demon-List/AREDL/main/data/_list.json";
+
+
+ URL url = new URL(link);
+
+ try (BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()))) {
+
+ String line;
+ StringBuilder sb = new StringBuilder();
+
+ while ((line = in.readLine()) != null) {
+
+ String trimmedLine = line.trim().replace(",", "").replace("\"", "");
+
+ if (!trimmedLine.equals("[") && !trimmedLine.equals("]")) {
+ levels.add(trimmedLine);
+ }
+ }
+ }
+ }
+
+ public ArrayList allLevels() {
+ return levels;
+ }
+
+}
+
+
+
diff --git a/src/data/ManageFiles.java b/src/data/ManageFiles.java
new file mode 100644
index 0000000..3e430fe
--- /dev/null
+++ b/src/data/ManageFiles.java
@@ -0,0 +1,38 @@
+package data;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class ManageFiles {
+
+ private FetchData fetch = new FetchData();
+ private static ArrayList missinglevels = new ArrayList(); // fehlende noch zu herunterladende level
+
+
+ private void feedMissingLevelsArray(String levelname) { // fehlende level werden missinglevels hinzugefügt
+ missinglevels.add(levelname);
+ }
+
+
+ public void compareArrays() throws IOException { // downloadedlevels und onlinelevels werden verglichen und die fehlenden level in missinglevels gepackt
+
+ fetch.getGithubString();
+
+ for(int i = 0; i < fetch.allLevels().size(); i++) {
+
+ File file = new File("C:\\ExtremeDemonList\\levels\\" + fetch.allLevels().get(i) + ".json");
+
+ if(!file.exists()) { // wenn der level lokal nicht vorhanden ist, wird er als fehlend gemeldet.
+ System.out.println(fetch.allLevels().get(i) + " fehlt");
+ feedMissingLevelsArray(fetch.allLevels().get(i));
+ }
+ }
+
+ }
+
+ public ArrayList missingLevels() { // missinglevels wird zurückgegeben
+ return missinglevels;
+ }
+
+}
diff --git a/src/filestructure/CreateFileStructure.java b/src/filestructure/CreateFileStructure.java
new file mode 100644
index 0000000..32554dd
--- /dev/null
+++ b/src/filestructure/CreateFileStructure.java
@@ -0,0 +1,17 @@
+package filestructure;
+
+import java.io.File;
+
+public class CreateFileStructure {
+
+ public void create() {
+
+ File file = new File("C:\\ExtremeDemonList\\levels");
+
+ if(!file.isDirectory()) {
+ file.mkdir();
+ }
+
+ }
+
+}
diff --git a/src/main/Main.java b/src/main/Main.java
new file mode 100644
index 0000000..48b327c
--- /dev/null
+++ b/src/main/Main.java
@@ -0,0 +1,29 @@
+package main;
+
+import java.io.IOException;
+
+import data.DownloadLevels;
+import data.FetchData;
+import data.ManageFiles;
+import filestructure.CreateFileStructure;
+
+public class Main {
+
+ public static void main(String[] args) throws IOException {
+
+ CreateFileStructure struct = new CreateFileStructure();
+ struct.create();
+
+ FetchData fetch = new FetchData();
+ fetch.getGithubString();
+
+ ManageFiles manager = new ManageFiles();
+ manager.compareArrays();
+
+ DownloadLevels download = new DownloadLevels();
+ download.download();
+
+
+ }
+
+}
diff --git a/src/module-info.java b/src/module-info.java
new file mode 100644
index 0000000..8b64736
--- /dev/null
+++ b/src/module-info.java
@@ -0,0 +1,8 @@
+/**
+ *
+ */
+/**
+ *
+ */
+module ExtremeDemonList {
+}
\ No newline at end of file