Skip to content

Instantly share code, notes, and snippets.

@phhusson
Created November 22, 2019 13:08
Show Gist options
  • Select an option

  • Save phhusson/bc95e372adba1a8e1b0e4d52d4648c58 to your computer and use it in GitHub Desktop.

Select an option

Save phhusson/bc95e372adba1a8e1b0e4d52d4648c58 to your computer and use it in GitHub Desktop.
project MediaLib/
diff --git a/MediaLib/src/com/archos/mediascraper/ScraperImage.java b/MediaLib/src/com/archos/mediascraper/ScraperImage.java
index 1d21ed6..bd17c2e 100644
--- a/MediaLib/src/com/archos/mediascraper/ScraperImage.java
+++ b/MediaLib/src/com/archos/mediascraper/ScraperImage.java
@@ -32,12 +32,13 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import java.util.concurrent.ExecutionException;
public class ScraperImage {
private static final String TAG = "ScraperImage";
- private static final boolean DBG = false;
- private static final boolean DBG2 = false;
+ private static final boolean DBG = true;
+ private static final boolean DBG2 = true;
public static int POSTER_WIDTH = 240;
public static int POSTER_HEIGHT = 360;
@@ -396,7 +397,12 @@ public class ScraperImage {
private static final MultiLock<String> sLock = new MultiLock<String>();
public final boolean download(Context context) {
- return download(context, false, 0, 0, false);
+ if(!download(context, false, 0, 0, false, false)) {
+ Log.d(TAG, "Failed downloading large image " + mLargeUrl + ", downloading thumb instead " + mThumbUrl);
+ Log.d(TAG, "\t" + mLargeFile + "/" + mThumbFile);
+ return download(context, true, 0, 0, false, true);
+ }
+ return true;
}
/**
@@ -404,14 +410,14 @@ public class ScraperImage {
* Don't use in regular code.
*/
public final void downloadFake(Context context) {
- download(context, false, 0, 0, true);
+ download(context, false, 0, 0, true, false);
}
public final void downloadThumb(Context context, int maxWidth, int maxHeight) {
- download(context, true /* thumb */, maxWidth, maxHeight, false /* fake */);
+ download(context, true /* thumb */, maxWidth, maxHeight, false /* fake */, false);
}
- private boolean download(Context context, boolean thumb, int maxWidth, int maxHeight, boolean fake) {
+ private boolean download(Context context, boolean thumb, int maxWidth, int maxHeight, boolean fake, boolean thumbAsMain) {
String file = mLargeFile;
String url = mLargeUrl;
boolean success = false ;
@@ -419,6 +425,10 @@ public class ScraperImage {
file = mThumbFile;
url = mThumbUrl == null ? mLargeUrl : mThumbUrl;
}
+ if(thumb && thumbAsMain) {
+ Log.d(TAG, "Downloading thumb as main");
+ file = mLargeFile;
+ }
String lockString = file == null ? "null" : file;
sLock.lock(lockString);
diff --git a/Video/src/main/java/com/archos/mediacenter/video/leanback/presenter/ScraperBaseTagsPresenter.java b/Video/src/main/java/com/archos/mediacenter/video/leanback/presenter/ScraperBaseTagsPresenter.java
index 4f57547..ca81b49 100644
--- a/Video/src/main/java/com/archos/mediacenter/video/leanback/presenter/ScraperBaseTagsPresenter.java
+++ b/Video/src/main/java/com/archos/mediacenter/video/leanback/presenter/ScraperBaseTagsPresenter.java
@@ -29,6 +29,7 @@ import android.widget.ImageView;
import com.archos.mediacenter.video.R;
import com.archos.mediascraper.EpisodeTags;
import com.archos.mediascraper.MovieTags;
+import com.archos.mediascraper.ScraperImage;
import com.archos.mediascraper.ShowTags;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
@@ -44,6 +45,7 @@ public class ScraperBaseTagsPresenter extends Presenter {
public class ViewHolder extends Presenter.ViewHolder {
private ImageCardView mCardView;
private PicassoImageCardViewTarget mImageCardViewTarget;
+ private String mFallbackUrl;
public ViewHolder(Context context) {
super(new ImageCardView(context));
@@ -53,7 +55,7 @@ public class ScraperBaseTagsPresenter extends Presenter {
mCardView.setFocusable(true);
mCardView.setFocusableInTouchMode(true);
- mImageCardViewTarget = new PicassoImageCardViewTarget(mCardView);
+ mImageCardViewTarget = new PicassoImageCardViewTarget(mCardView, this);
}
public int getWidth(Context context) {
@@ -79,6 +81,10 @@ public class ScraperBaseTagsPresenter extends Presenter {
.error(R.drawable.filetype_new_video)
.into(mImageCardViewTarget);
}
+
+ public void setFallbackUrl(String url) {
+ mFallbackUrl = url;
+ }
}
@Override
@@ -92,6 +98,8 @@ public class ScraperBaseTagsPresenter extends Presenter {
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
ViewHolder vh = (ViewHolder)viewHolder;
+ android.util.Log.d("PHH", "Present tag: " + item.getClass().toString());
+
if (item instanceof MovieTags) {
MovieTags tags = (MovieTags)item;
vh.getImageCardView().setTitleText(tags.getTitle());
@@ -109,8 +117,17 @@ public class ScraperBaseTagsPresenter extends Presenter {
else if (item instanceof EpisodeTags) {
EpisodeTags tags = (EpisodeTags)item;
vh.getImageCardView().setTitleText(tags.getShowTitle());
- if (tags.getDefaultPoster()!=null) {
- vh.updateCardViewPoster(tags.getDefaultPoster().getLargeUrl());
+
+ android.util.Log.d("PHH", "Got tags " + tags);
+ android.util.Log.d("PHH", "Got poster " + tags.getDefaultPoster());
+
+ ScraperImage episodePoster = tags.getDefaultPoster();
+ if(episodePoster == null && tags.getShowTags() != null) {
+ episodePoster = tags.getShowTags().getDefaultPoster();
+ }
+ if (episodePoster != null) {
+ vh.setFallbackUrl(episodePoster.getThumbUrl());
+ vh.updateCardViewPoster(episodePoster.getLargeUrl());
}
}
else if (item instanceof ShowTags) {
@@ -132,6 +149,7 @@ public class ScraperBaseTagsPresenter extends Presenter {
public class PicassoImageCardViewTarget implements Target {
private ImageCardView mImageCardView;
+ private ViewHolder mViewHolder;
// Picasso documentation: Objects implementing this class must have a working implementation of Object.equals(Object) and Object.hashCode() for proper storage internally.
@Override
@@ -143,8 +161,9 @@ public class ScraperBaseTagsPresenter extends Presenter {
return mImageCardView.equals( ((PicassoImageCardViewTarget)other).mImageCardView );
}
- public PicassoImageCardViewTarget(ImageCardView imageCardView) {
+ public PicassoImageCardViewTarget(ImageCardView imageCardView, ViewHolder viewHolder) {
mImageCardView = imageCardView;
+ mViewHolder = viewHolder;
}
@Override
@@ -159,6 +178,14 @@ public class ScraperBaseTagsPresenter extends Presenter {
@Override
public void onBitmapFailed(Exception e, Drawable drawable){
+ android.util.Log.d("PHH", "Picasso bitmap failed", e);
+ String fallback = mViewHolder.mFallbackUrl;
+ if(fallback != null) {
+ android.util.Log.d("PHH", "Trying fallback...");
+ mViewHolder.setFallbackUrl(null);
+ mViewHolder.updateCardViewPoster(fallback);
+ return;
+ }
mImageCardView.setMainImageScaleType(ImageView.ScaleType.CENTER);
mImageCardView.setMainImage(drawable, true);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment