package ar.rulosoft.mimanganu.servers;
import android.content.Context;
import java.util.ArrayList;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import ar.rulosoft.mimanganu.R;
import ar.rulosoft.mimanganu.componentes.Chapter;
import ar.rulosoft.mimanganu.componentes.Manga;
import ar.rulosoft.mimanganu.utils.Util;
public class SubManga extends ServerBase {
public SubManga(Context context) {
super(context);
setServerID(SUBMANGA);
setIcon(R.drawable.submanga_icon);
this.setServerName("SubManga");
setFlag(R.drawable.flag_es);
}
@Override
public ArrayList<Manga> getMangas() throws Exception {
// <td><a href="(http://submanga.com/.+?)".+?</b>(.+?)<
ArrayList<Manga> mangas = new ArrayList<>();
String source = getNavigatorAndFlushParameters().get("http://submanga.com/series");
Pattern p = Pattern.compile("<td><a href=\"(http://submanga.com/.+?)\".+?</b>(.+?)<");
Matcher m = p.matcher(source);
while (m.find()) {
String name = m.group(2);
if (!name.contains("!") && !name.contains("?") && !name.contains("�") && !name.contains("�")) {
mangas.add(new Manga(SUBMANGA, name, m.group(1).toLowerCase(Locale.getDefault()), false));
}
}
return mangas;
}
@Override
public ArrayList<Manga> search(String term) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public void loadChapters(Manga manga, boolean forceReload) throws Exception {
if (manga.getChapters().size() == 0 || forceReload) {
Pattern p;
Matcher m;
String data = getNavigatorAndFlushParameters().get((manga.getPath() + "/completa"));
p = Pattern.compile("<tr[^>]*><td[^>]*><a href=\"http://submanga.com/([^\"|#]+)\">(.+?)</a>");
m = p.matcher(data);
while (m.find()) {
String web = "http://submanga.com/c" + m.group(1).substring(m.group(1).lastIndexOf("/"));
Chapter mc = new Chapter(Util.getInstance().fromHtml(m.group(2)).toString(), web);
mc.addChapterFirst(manga);
}
}
}
@Override
public void loadMangaInformation(Manga manga, boolean forceReload) throws Exception {
Pattern p;
Matcher m;
String data = getNavigatorAndFlushParameters().get((manga.getPath()));
p = Pattern.compile("<img src=\"(http://.+?)\"/><p>(.+?)</p>");
m = p.matcher(data);
if (m.find()) {
manga.setImages(m.group(1));
manga.setSynopsis(Util.getInstance().fromHtml(m.group(2)).toString());
} else {
manga.setSynopsis(defaultSynopsis);
}
manga.setAuthor(Util.getInstance().fromHtml(getFirstMatchDefault("<p>Creado por ().+?</p>", data, "")).toString().trim());
manga.setGenre(Util.getInstance().fromHtml(getFirstMatchDefault("(<a class=\"b\" href=\"http://submanga.com/ge.+?</p>)", data, "")).toString().trim());
}
@Override
public String getPagesNumber(Chapter chapter, int page) {
return chapter.getPath() + "/" + page;
}
@Override
public String getImageFrom(Chapter chapter, int page) throws Exception {
String data;
data = getNavigatorAndFlushParameters().get(this.getPagesNumber(chapter, page));
data = getFirstMatchDefault("<img[^>]+src=\"(http:\\/\\/.+?)\"", data, null);
return data;
}
@Override
public void chapterInit(Chapter chapter) throws Exception {
String data = getNavigatorAndFlushParameters().get(chapter.getPath());
chapter.setPages(Integer.parseInt(getFirstMatch("(\\d+)<\\/option><\\/select>", data, "No se pudo obtener la cantidad de páginas")));
if (chapter.getExtra() == null || chapter.getExtra().length() < 2) {
data = getFirstMatchDefault("<img src=\"(http://.+?)\"", data, null);
chapter.setExtra(data.substring(0, data.length() - 4));
}
}
@Override
public boolean hasList() {
return true;
}
@Override
public boolean hasFilteredNavigation() {
return false;
}
}