Created
November 22, 2019 13:08
-
-
Save phhusson/bc95e372adba1a8e1b0e4d52d4648c58 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 | |
| @@ -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