Created
November 22, 2019 13:39
-
-
Save phhusson/c8769d8262d490052a1c7e3a74bb0245 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
@@ -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..5168697 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,7 @@ public class ScraperBaseTagsPresenter extends Presenter { | |
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { | |
ViewHolder vh = (ViewHolder)viewHolder; | |
+ boolean foundImage = false; | |
if (item instanceof MovieTags) { | |
MovieTags tags = (MovieTags)item; | |
vh.getImageCardView().setTitleText(tags.getTitle()); | |
@@ -103,26 +110,42 @@ public class ScraperBaseTagsPresenter extends Presenter { | |
vh.getImageCardView().setContentText(content); | |
if (tags.getDefaultPoster()!=null) { | |
+ vh.setFallbackUrl(tags.getDefaultPoster().getThumbUrl()); | |
vh.updateCardViewPoster(tags.getDefaultPoster().getLargeUrl()); | |
+ foundImage = true; | |
} | |
} | |
else if (item instanceof EpisodeTags) { | |
EpisodeTags tags = (EpisodeTags)item; | |
vh.getImageCardView().setTitleText(tags.getShowTitle()); | |
- if (tags.getDefaultPoster()!=null) { | |
- vh.updateCardViewPoster(tags.getDefaultPoster().getLargeUrl()); | |
+ | |
+ 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()); | |
+ foundImage = true; | |
+ | |
} | |
} | |
else if (item instanceof ShowTags) { | |
ShowTags tags = (ShowTags)item; | |
vh.getImageCardView().setTitleText(tags.getTitle()); | |
if (tags.getDefaultPoster()!=null) { | |
+ vh.setFallbackUrl(tags.getDefaultPoster().getThumbUrl()); | |
vh.updateCardViewPoster(tags.getDefaultPoster().getLargeUrl()); | |
+ foundImage = true; | |
} | |
} | |
else { | |
throw new IllegalArgumentException("invalid object! "+item.getClass().getCanonicalName()); | |
} | |
+ if(!foundImage) { | |
+ vh.getImageCardView().setMainImageScaleType(ImageView.ScaleType.CENTER); | |
+ vh.getImageCardView().setMainImage(mContext.getResources().getDrawable(R.drawable.filetype_new_video), true); | |
+ } | |
} | |
@Override | |
@@ -132,6 +155,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 +167,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 +184,12 @@ public class ScraperBaseTagsPresenter extends Presenter { | |
@Override | |
public void onBitmapFailed(Exception e, Drawable drawable){ | |
+ String fallback = mViewHolder.mFallbackUrl; | |
+ if(fallback != null) { | |
+ 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