Просмотр исходного кода

Fix incorrect batoto thumbnail url. Create a function to copy the manga from network to local.

inorichi 9 лет назад
Родитель
Сommit
13b4f5c385

+ 29 - 16
app/src/main/java/eu/kanade/mangafeed/data/models/Manga.java

@@ -15,64 +15,49 @@ public class Manga {
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_ID, key = true)
     public Long id;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_SOURCE)
     public int source;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_URL)
     public String url;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_ARTIST)
     public String artist;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_AUTHOR)
     public String author;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_DESCRIPTION)
     public String description;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_GENRE)
     public String genre;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_TITLE)
     public String title;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_STATUS)
     public String status;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_THUMBNAIL_URL)
     public String thumbnail_url;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_RANK)
     public int rank;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_LAST_UPDATE)
     public long last_update;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_INITIALIZED)
     public boolean initialized;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_VIEWER)
     public int viewer;
 
-    @NonNull
     @StorIOSQLiteColumn(name = MangasTable.COLUMN_CHAPTER_ORDER)
     public int chapter_order;
 
-    @NonNull
-    public int unread = 0;
+    public int unread;
 
     public Manga() {}
 
@@ -100,6 +85,34 @@ public class Manga {
         return new Manga(title, author, artist, url, description, genre, status, rank, thumbnail_url);
     }
 
+    public static void copyFromNetwork(Manga local, Manga network) {
+        if (network.title != null)
+            local.title = network.title;
+
+        if (network.author != null)
+            local.author = network.author;
+
+        if (network.artist != null)
+            local.artist = network.artist;
+
+        if (network.url != null)
+            local.url = network.url;
+
+        if (network.description != null)
+            local.description = network.description;
+
+        if (network.genre != null)
+            local.genre = network.genre;
+
+        if (network.status != null)
+            local.status = network.status;
+
+        if (network.thumbnail_url != null)
+            local.thumbnail_url = network.thumbnail_url;
+
+        local.initialized = true;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;

+ 19 - 0
app/src/main/java/eu/kanade/mangafeed/presenter/CatalogueListPresenter.java

@@ -97,6 +97,25 @@ public class CatalogueListPresenter extends BasePresenter {
         return localManga;
     }
 
+    private Observable<Manga> getMangaDetails(Manga manga) {
+        Observable<Manga> mangaObs = Observable.just(manga);
+        if (!manga.initialized) {
+            return mangaObs
+                    .subscribeOn(Schedulers.io())
+                    .flatMap(localManga -> {
+                        Timber.e("Request " + localManga.url);
+                        return selectedSource.pullMangaFromNetwork(localManga.url);
+                    })
+                    .flatMap(networkManga -> {
+                        Manga.copyFromNetwork(manga, networkManga);
+                        Timber.w("Net manga " + manga.thumbnail_url);
+                        db.insertMangaBlock(manga);
+                        return Observable.just(manga);
+                    });
+        }
+        return mangaObs;
+    }
+
     public void onQueryTextChange(String query) {
         if (mSearchViewPublishSubject != null)
             mSearchViewPublishSubject.onNext(Observable.just(query));

+ 1 - 1
app/src/main/java/eu/kanade/mangafeed/sources/Batoto.java

@@ -187,7 +187,7 @@ public class Batoto extends Source {
         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();
+        Element thumbnailUrlElement = parsedDocument.select("img[src^=http://img.bato.to/forums/uploads/]").first();
 
         Manga newManga = new Manga();
         newManga.url = mangaUrl;