From 7ade9c1b12bccc612ca2beaef5b3ef3d649dcea6 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sat, 5 Feb 2022 18:42:03 +0100 Subject: [PATCH] Created mapping methods for podcasts --- .../play/util/MappingUtil.java | 73 +++++++++++++++++-- 1 file changed, 67 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java index c12ebc85..0b807df6 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java @@ -12,6 +12,8 @@ import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.model.Download; import com.cappielloantonio.play.model.Playlist; +import com.cappielloantonio.play.model.PodcastChannel; +import com.cappielloantonio.play.model.PodcastEpisode; import com.cappielloantonio.play.model.Queue; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.subsonic.models.AlbumID3; @@ -201,7 +203,7 @@ public class MappingUtil { @SuppressLint("UnsafeOptInUsageError") public static MediaItem mapMediaItem(Context context, Song song, boolean stream) { - boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getSongDownloadUri(song)); + boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(song.getId())); Bundle bundle = new Bundle(); bundle.putString("id", song.getId()); @@ -212,7 +214,7 @@ public class MappingUtil { .setMediaId(song.getId()) .setMediaMetadata( new MediaMetadata.Builder() - .setMediaUri(stream && !isDownloaded ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) + .setMediaUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, song.getId()) : MusicUtil.getDownloadUri(song.getId())) .setTitle(MusicUtil.getReadableString(song.getTitle())) .setTrackNumber(song.getTrackNumber()) .setDiscNumber(song.getDiscNumber()) @@ -223,17 +225,76 @@ public class MappingUtil { .build() ) .setMimeType(MimeTypes.BASE_TYPE_AUDIO) - .setUri(stream && !isDownloaded ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) + .setUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, song.getId()) : MusicUtil.getDownloadUri(song.getId())) .build(); } - public static ArrayList mapMediaItems(Context context, List songs, boolean stream) { + @SuppressLint("UnsafeOptInUsageError") + public static MediaItem mapMediaItem(Context context, PodcastEpisode podcastEpisode, boolean stream) { + boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(podcastEpisode.getId())); + + Bundle bundle = new Bundle(); + bundle.putString("id", podcastEpisode.getId()); + bundle.putString("albumId", podcastEpisode.getAlbumId()); + bundle.putString("artistId", podcastEpisode.getArtistId()); + + return new MediaItem.Builder() + .setMediaId(podcastEpisode.getId()) + .setMediaMetadata( + new MediaMetadata.Builder() + .setMediaUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, podcastEpisode.getId()) : MusicUtil.getDownloadUri(podcastEpisode.getId())) + .setTitle(MusicUtil.getReadableString(podcastEpisode.getTitle())) + .setReleaseYear(podcastEpisode.getYear()) + .setArtist(MusicUtil.getReadableString(podcastEpisode.getArtist())) + .setExtras(bundle) + .build() + ) + .setMimeType(MimeTypes.BASE_TYPE_AUDIO) + .setUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, podcastEpisode.getId()) : MusicUtil.getDownloadUri(podcastEpisode.getId())) + .build(); + } + + public static ArrayList mapMediaItems(Context context, List items, boolean stream) { ArrayList mediaItems = new ArrayList(); - for (Song song : songs) { - mediaItems.add(mapMediaItem(context, song, stream)); + for(int i = 0; i < items.size(); i++) { + if(items.get(i) instanceof Song) { + mediaItems.add(mapMediaItem(context, (Song) items.get(i), stream)); + } + + if(items.get(i) instanceof PodcastEpisode) { + mediaItems.add(mapMediaItem(context, (PodcastEpisode) items.get(i), stream)); + } } return mediaItems; } + + public static ArrayList mapPodcastChannel(List subsonicPodcastChannels) { + ArrayList podcastChannels = new ArrayList(); + + for (com.cappielloantonio.play.subsonic.models.PodcastChannel subsonicPodcastChannel : subsonicPodcastChannels) { + podcastChannels.add(mapPodcastChannel(subsonicPodcastChannel)); + } + + return podcastChannels; + } + + public static PodcastChannel mapPodcastChannel(com.cappielloantonio.play.subsonic.models.PodcastChannel subsonicPodcastChannel) { + return new PodcastChannel(subsonicPodcastChannel); + } + + public static ArrayList mapPodcastEpisode(List subsonicPodcastEpisodes) { + ArrayList podcastEpisodes = new ArrayList(); + + for (com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode : subsonicPodcastEpisodes) { + podcastEpisodes.add(mapPodcastEpisode(subsonicPodcastEpisode)); + } + + return podcastEpisodes; + } + + public static PodcastEpisode mapPodcastEpisode(com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode) { + return new PodcastEpisode(subsonicPodcastEpisode); + } }