|
@@ -171,114 +171,36 @@ public class Batoto extends Source {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
-
|
|
|
- private void updateLibraryInDatabase(List<Manga> mangaList) {
|
|
|
- mQueryManager.beginLibraryTransaction();
|
|
|
- try {
|
|
|
- List<Manga> mangaToRemove = new ArrayList<>();
|
|
|
- for (Manga currentManga : mangaList) {
|
|
|
- Manga existingManga = mQueryManager.retrieveManga(NAME, currentManga.getName())
|
|
|
- .toBlocking()
|
|
|
- .single();
|
|
|
-
|
|
|
- if (existingManga != null) {
|
|
|
- existingManga.setUpdated(currentManga.getUpdated());
|
|
|
- existingManga.setUpdateCount(currentManga.getUpdateCount());
|
|
|
-
|
|
|
-
|
|
|
- mQueryManager.createManga(existingManga)
|
|
|
- .toBlocking()
|
|
|
- .single();
|
|
|
- } else {
|
|
|
- mangaToRemove.add(currentManga);
|
|
|
- }
|
|
|
- }
|
|
|
- mangaList.removeAll(mangaToRemove);
|
|
|
-
|
|
|
- mQueryManager.setLibraryTransactionSuccessful();
|
|
|
- } finally {
|
|
|
- mQueryManager.endLibraryTransaction();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private String findNextUrlFromParsedDocument(String requestUrl, String unparsedHtml) {
|
|
|
- if (!unparsedHtml.contains("No (more) comics found!")) {
|
|
|
- requestUrl = requestUrl.replace("http://bato.to/search_ajax?order_cond=update&order=desc&p=", "");
|
|
|
-
|
|
|
- return "http://bato.to/search_ajax?order_cond=update&order=desc&p=" + (Integer.valueOf(requestUrl) + 1);
|
|
|
- }
|
|
|
-
|
|
|
- return DefaultFactory.UpdatePageMarker.DEFAULT_NEXT_PAGE_URL;
|
|
|
- }
|
|
|
-
|
|
|
public Observable<Manga> pullMangaFromNetwork(final String mangaUrl) {
|
|
|
String mangaId = mangaUrl.substring(mangaUrl.lastIndexOf("r") + 1);
|
|
|
|
|
|
return mNetworkService
|
|
|
- .getResponse("http://bato.to/comic_pop?id=" + mangaId, NetworkModule.NULL_CACHE_CONTROL, REQUEST_HEADERS)
|
|
|
- .flatMap(new Func1<Response, Observable<String>>() {
|
|
|
- @Override
|
|
|
- public Observable<String> call(Response response) {
|
|
|
- return mNetworkService.mapResponseToString(response);
|
|
|
- }
|
|
|
- })
|
|
|
- .flatMap(new Func1<String, Observable<Manga>>() {
|
|
|
- @Override
|
|
|
- public Observable<Manga> call(String unparsedHtml) {
|
|
|
- return Observable.just(parseHtmlToManga(mangaUrl, unparsedHtml));
|
|
|
- }
|
|
|
- });
|
|
|
+ .getStringResponse("http://bato.to/comic_pop?id=" + mangaId, mNetworkService.NULL_CACHE_CONTROL, REQUEST_HEADERS)
|
|
|
+ .flatMap(unparsedHtml -> Observable.just(parseHtmlToManga(mangaUrl, unparsedHtml)));
|
|
|
}
|
|
|
|
|
|
private Manga parseHtmlToManga(String mangaUrl, String unparsedHtml) {
|
|
|
Document parsedDocument = Jsoup.parse(unparsedHtml);
|
|
|
|
|
|
- Element artistElement = parsedDocument.select("a[href^=http://bato.to/search?artist_name]").first();
|
|
|
+ Elements artistElements = parsedDocument.select("a[href^=http://bato.to/search?artist_name]");
|
|
|
Element descriptionElement = parsedDocument.select("tr").get(5);
|
|
|
Elements genreElements = parsedDocument.select("img[src=http://bato.to/forums/public/style_images/master/bullet_black.png]");
|
|
|
Element thumbnailUrlElement = parsedDocument.select("img[src^=http://img.batoto.net/forums/uploads/]").first();
|
|
|
|
|
|
- StringBuilder selection = new StringBuilder();
|
|
|
- List<String> selectionArgs = new ArrayList<String>();
|
|
|
-
|
|
|
- selection.append(LibraryContract.Manga.COLUMN_SOURCE + " = ?");
|
|
|
- selectionArgs.add(NAME);
|
|
|
- selection.append(" AND ").append(LibraryContract.Manga.COLUMN_URL + " = ?");
|
|
|
- selectionArgs.add(mangaUrl);
|
|
|
-
|
|
|
- Manga newManga = mQueryManager.retrieveMangaAsCursor(
|
|
|
- null,
|
|
|
- selection.toString(),
|
|
|
- selectionArgs.toArray(new String[selectionArgs.size()]),
|
|
|
- null,
|
|
|
- null,
|
|
|
- null,
|
|
|
- "1"
|
|
|
- )
|
|
|
- .map(new Func1<Cursor, Manga>() {
|
|
|
- @Override
|
|
|
- public Manga call(Cursor cursor) {
|
|
|
- return DatabaseUtils.toObject(cursor, Manga.class);
|
|
|
- }
|
|
|
- })
|
|
|
- .filter(new Func1<Manga, Boolean>() {
|
|
|
- @Override
|
|
|
- public Boolean call(Manga manga) {
|
|
|
- return manga != null;
|
|
|
- }
|
|
|
- })
|
|
|
- .toBlocking()
|
|
|
- .single();
|
|
|
+ Manga newManga = new Manga();
|
|
|
+ newManga.url = mangaUrl;
|
|
|
|
|
|
- if (artistElement != null) {
|
|
|
- String fieldArtist = artistElement.text();
|
|
|
- newManga.setArtist(fieldArtist);
|
|
|
- newManga.setAuthor(fieldArtist);
|
|
|
+ if (artistElements != null) {
|
|
|
+ newManga.author = artistElements.get(0).text();
|
|
|
+ if (artistElements.size() > 1) {
|
|
|
+ newManga.artist = artistElements.get(1).text();
|
|
|
+ } else {
|
|
|
+ newManga.artist = newManga.author;
|
|
|
+ }
|
|
|
}
|
|
|
if (descriptionElement != null) {
|
|
|
String fieldDescription = descriptionElement.text().substring("Description:".length()).trim();
|
|
|
- newManga.setDescription(fieldDescription);
|
|
|
+ newManga.description = fieldDescription;
|
|
|
}
|
|
|
if (genreElements != null) {
|
|
|
String fieldGenres = "";
|
|
@@ -291,26 +213,21 @@ public class Batoto extends Source {
|
|
|
fieldGenres += currentGenre;
|
|
|
}
|
|
|
}
|
|
|
- newManga.setGenre(fieldGenres);
|
|
|
+ newManga.genre = fieldGenres;
|
|
|
}
|
|
|
if (thumbnailUrlElement != null) {
|
|
|
String fieldThumbnailUrl = thumbnailUrlElement.attr("src");
|
|
|
- newManga.setThumbnailUrl(fieldThumbnailUrl);
|
|
|
+ newManga.thumbnail_url = fieldThumbnailUrl;
|
|
|
}
|
|
|
|
|
|
boolean fieldCompleted = unparsedHtml.contains("<td>Complete</td>");
|
|
|
- newManga.setCompleted(fieldCompleted);
|
|
|
+ //TODO fix
|
|
|
+ newManga.status = fieldCompleted + "";
|
|
|
|
|
|
-
|
|
|
- newManga.setInitialized(true);
|
|
|
-
|
|
|
- mQueryManager.createManga(newManga)
|
|
|
- .toBlocking()
|
|
|
- .single();
|
|
|
+ newManga.initialized = true;
|
|
|
|
|
|
return newManga;
|
|
|
}
|
|
|
- */
|
|
|
|
|
|
public Observable<List<Chapter>> pullChaptersFromNetwork(String mangaUrl) {
|
|
|
return mNetworkService
|
|
@@ -322,12 +239,11 @@ public class Batoto extends Source {
|
|
|
private List<Chapter> parseHtmlToChapters(String unparsedHtml) {
|
|
|
Document parsedDocument = Jsoup.parse(unparsedHtml);
|
|
|
|
|
|
- List<Chapter> chapterList = new ArrayList<Chapter>();
|
|
|
+ List<Chapter> chapterList = new ArrayList<>();
|
|
|
|
|
|
Elements chapterElements = parsedDocument.select("tr.row.lang_English.chapter_row");
|
|
|
for (Element chapterElement : chapterElements) {
|
|
|
Chapter currentChapter = constructChapterFromHtmlBlock(chapterElement);
|
|
|
- System.out.println(currentChapter.name);
|
|
|
chapterList.add(currentChapter);
|
|
|
}
|
|
|
|