1
0
mirror of https://github.com/RipMeApp/ripme.git synced 2025-08-31 09:32:01 +02:00

reformat mangadex

This commit is contained in:
soloturn
2022-01-03 16:08:12 +01:00
parent cd85219ac8
commit a581714779

View File

@@ -1,39 +1,40 @@
package com.rarchives.ripme.ripper.rippers; package com.rarchives.ripme.ripper.rippers;
import com.rarchives.ripme.ripper.AbstractJSONRipper; import com.rarchives.ripme.ripper.AbstractJSONRipper;
import com.rarchives.ripme.ui.History;
import com.rarchives.ripme.ui.RipStatusMessage; import com.rarchives.ripme.ui.RipStatusMessage;
import com.rarchives.ripme.utils.Http; import com.rarchives.ripme.utils.Http;
import com.rarchives.ripme.utils.Utils;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.jsoup.Connection;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class MangadexRipper extends AbstractJSONRipper { public class MangadexRipper extends AbstractJSONRipper {
private String chapterApiEndPoint = "https://mangadex.org/api/chapter/"; private final String chapterApiEndPoint = "https://mangadex.org/api/chapter/";
private String mangaApiEndPoint = "https://mangadex.org/api/manga/"; private final String mangaApiEndPoint = "https://mangadex.org/api/manga/";
private boolean isSingleChapter; private boolean isSingleChapter;
private String getImageUrl(String chapterHash, String imageName, String server) {
return server + chapterHash + "/" + imageName;
}
public MangadexRipper(URL url) throws IOException { public MangadexRipper(URL url) throws IOException {
super(url); super(url);
} }
private String getImageUrl(String chapterHash, String imageName, String server) {
return server + chapterHash + "/" + imageName;
}
@Override @Override
public String getHost() { public String getHost() {
return "mangadex"; return "mangadex";
} }
@Override @Override
public String getDomain() { public String getDomain() {
return "mangadex.org"; return "mangadex.org";
@@ -49,14 +50,12 @@ public class MangadexRipper extends AbstractJSONRipper {
String capID = getChapterID(url.toExternalForm()); String capID = getChapterID(url.toExternalForm());
String mangaID = getMangaID(url.toExternalForm()); String mangaID = getMangaID(url.toExternalForm());
if (capID != null) { if (capID != null) {
isSingleChapter=true; isSingleChapter = true;
return capID; return capID;
} else if (mangaID != null) {
isSingleChapter = false;
return mangaID;
} }
else
if(mangaID!=null){
isSingleChapter=false;
return mangaID;
}
throw new MalformedURLException("Unable to get chapter ID from" + url); throw new MalformedURLException("Unable to get chapter ID from" + url);
} }
@@ -68,10 +67,11 @@ public class MangadexRipper extends AbstractJSONRipper {
} }
return null; return null;
} }
private String getMangaID(String url){
private String getMangaID(String url) {
Pattern p = Pattern.compile("https://mangadex.org/title/([\\d]+)/(.+)"); Pattern p = Pattern.compile("https://mangadex.org/title/([\\d]+)/(.+)");
Matcher m = p.matcher(url); Matcher m = p.matcher(url);
if(m.matches()){ if (m.matches()) {
return m.group(1); return m.group(1);
} }
return null; return null;
@@ -83,16 +83,15 @@ public class MangadexRipper extends AbstractJSONRipper {
// Get the chapter ID // Get the chapter ID
String chapterID = getChapterID(url.toExternalForm()); String chapterID = getChapterID(url.toExternalForm());
String mangaID = getMangaID(url.toExternalForm()); String mangaID = getMangaID(url.toExternalForm());
if(mangaID!=null){ if (mangaID != null) {
return Http.url(new URL(mangaApiEndPoint+mangaID)).getJSON(); return Http.url(new URL(mangaApiEndPoint + mangaID)).getJSON();
} } else
else
return Http.url(new URL(chapterApiEndPoint + chapterID)).getJSON(); return Http.url(new URL(chapterApiEndPoint + chapterID)).getJSON();
} }
@Override @Override
protected List<String> getURLsFromJSON(JSONObject json) { protected List<String> getURLsFromJSON(JSONObject json) {
if(isSingleChapter){ if (isSingleChapter) {
List<String> assetURLs = new ArrayList<>(); List<String> assetURLs = new ArrayList<>();
JSONArray currentObject; JSONArray currentObject;
String chapterHash; String chapterHash;
@@ -110,12 +109,12 @@ public class MangadexRipper extends AbstractJSONRipper {
JSONObject chaptersJSON = (JSONObject) json.get("chapter"); JSONObject chaptersJSON = (JSONObject) json.get("chapter");
JSONObject temp; JSONObject temp;
Iterator<String> keys = chaptersJSON.keys(); Iterator<String> keys = chaptersJSON.keys();
HashMap<Double,String> chapterIDs = new HashMap<>(); HashMap<Double, String> chapterIDs = new HashMap<>();
while (keys.hasNext()) { while (keys.hasNext()) {
String keyValue = (String) keys.next(); String keyValue = keys.next();
temp=(JSONObject)chaptersJSON.get(keyValue); temp = (JSONObject) chaptersJSON.get(keyValue);
if(temp.getString("lang_name").equals("English")) { if (temp.getString("lang_name").equals("English")) {
chapterIDs.put(temp.getDouble("chapter"),keyValue); chapterIDs.put(temp.getDouble("chapter"), keyValue);
} }
} }
@@ -125,17 +124,17 @@ public class MangadexRipper extends AbstractJSONRipper {
String chapterHash; String chapterHash;
// Server is the cdn hosting the images. // Server is the cdn hosting the images.
String server; String server;
JSONObject chapterJSON=null; JSONObject chapterJSON = null;
TreeMap<Double,String> treeMap = new TreeMap<>(chapterIDs); TreeMap<Double, String> treeMap = new TreeMap<>(chapterIDs);
Iterator it = treeMap.keySet().iterator(); Iterator it = treeMap.keySet().iterator();
while(it.hasNext()) { while (it.hasNext()) {
double key =(double) it.next(); double key = (double) it.next();
try { try {
chapterJSON = Http.url(new URL(chapterApiEndPoint + treeMap.get(key))).getJSON(); chapterJSON = Http.url(new URL(chapterApiEndPoint + treeMap.get(key))).getJSON();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
sendUpdate(RipStatusMessage.STATUS.LOADING_RESOURCE,"chapter "+key); sendUpdate(RipStatusMessage.STATUS.LOADING_RESOURCE, "chapter " + key);
chapterHash = chapterJSON.getString("hash"); chapterHash = chapterJSON.getString("hash");
server = chapterJSON.getString("server"); server = chapterJSON.getString("server");
for (int i = 0; i < chapterJSON.getJSONArray("page_array").length(); i++) { for (int i = 0; i < chapterJSON.getJSONArray("page_array").length(); i++) {