extend MediaInfo comparison to RemoteMedia objects
This commit is contained in:
parent
0dbae93715
commit
6ee3d20a80
|
@ -268,6 +268,49 @@ public class CastUtils {
|
||||||
return feed != null && TextUtils.equals(metadata.getString(KEY_FEED_URL), feed.getDownload_url());
|
return feed != null && TextUtils.equals(metadata.getString(KEY_FEED_URL), feed.getDownload_url());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares a {@link MediaInfo} instance with a {@link RemoteMedia} one and evaluates whether they
|
||||||
|
* represent the same podcast episode.
|
||||||
|
*
|
||||||
|
* @param info the {@link MediaInfo} object to be compared.
|
||||||
|
* @param media the {@link RemoteMedia} object to be compared.
|
||||||
|
* @return <true>true</true> if there's a match, <code>false</code> otherwise.
|
||||||
|
*
|
||||||
|
* @see RemoteMedia#equals(Object)
|
||||||
|
*/
|
||||||
|
public static boolean matches(MediaInfo info, RemoteMedia media) {
|
||||||
|
if (info == null || media == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!TextUtils.equals(info.getContentId(), media.getStreamUrl())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
MediaMetadata metadata = info.getMetadata();
|
||||||
|
return metadata != null &&
|
||||||
|
TextUtils.equals(metadata.getString(KEY_EPISODE_IDENTIFIER), media.getEpisodeIdentifier()) &&
|
||||||
|
TextUtils.equals(metadata.getString(KEY_FEED_URL), media.getFeedUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares a {@link MediaInfo} instance with a {@link Playable} and evaluates whether they
|
||||||
|
* represent the same podcast episode.
|
||||||
|
*
|
||||||
|
* @param info the {@link MediaInfo} object to be compared.
|
||||||
|
* @param media the {@link Playable} object to be compared.
|
||||||
|
* @return <true>true</true> if there's a match, <code>false</code> otherwise.
|
||||||
|
*
|
||||||
|
* @see RemoteMedia#equals(Object)
|
||||||
|
*/
|
||||||
|
public static boolean matches(MediaInfo info, Playable media) {
|
||||||
|
if (info == null || media == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (media instanceof RemoteMedia) {
|
||||||
|
return matches(info, (RemoteMedia) media);
|
||||||
|
}
|
||||||
|
return media instanceof FeedMedia && matches(info, (FeedMedia) media);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//TODO Queue handling perhaps
|
//TODO Queue handling perhaps
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,6 +119,14 @@ public class RemoteMedia implements Playable {
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getEpisodeIdentifier() {
|
||||||
|
return itemIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFeedUrl() {
|
||||||
|
return feedUrl;
|
||||||
|
}
|
||||||
|
|
||||||
public FeedMedia lookForFeedMedia() {
|
public FeedMedia lookForFeedMedia() {
|
||||||
FeedItem feedItem = DBReader.getFeedItem(feedUrl, itemIdentifier);
|
FeedItem feedItem = DBReader.getFeedItem(feedUrl, itemIdentifier);
|
||||||
if (feedItem == null) {
|
if (feedItem == null) {
|
||||||
|
|
Loading…
Reference in New Issue