mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 18:03:33 +00:00
Generalized the mapping functions
This commit is contained in:
parent
27ea7e4efa
commit
a423531546
1 changed files with 51 additions and 60 deletions
|
|
@ -2,6 +2,7 @@ package com.cappielloantonio.play.util;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
|
|
@ -11,11 +12,10 @@ import androidx.media3.common.MimeTypes;
|
||||||
import com.cappielloantonio.play.model.Album;
|
import com.cappielloantonio.play.model.Album;
|
||||||
import com.cappielloantonio.play.model.Artist;
|
import com.cappielloantonio.play.model.Artist;
|
||||||
import com.cappielloantonio.play.model.Download;
|
import com.cappielloantonio.play.model.Download;
|
||||||
|
import com.cappielloantonio.play.model.Media;
|
||||||
import com.cappielloantonio.play.model.Playlist;
|
import com.cappielloantonio.play.model.Playlist;
|
||||||
import com.cappielloantonio.play.model.PodcastChannel;
|
import com.cappielloantonio.play.model.PodcastChannel;
|
||||||
import com.cappielloantonio.play.model.PodcastEpisode;
|
|
||||||
import com.cappielloantonio.play.model.Queue;
|
import com.cappielloantonio.play.model.Queue;
|
||||||
import com.cappielloantonio.play.model.Media;
|
|
||||||
import com.cappielloantonio.play.subsonic.models.AlbumID3;
|
import com.cappielloantonio.play.subsonic.models.AlbumID3;
|
||||||
import com.cappielloantonio.play.subsonic.models.AlbumInfo;
|
import com.cappielloantonio.play.subsonic.models.AlbumInfo;
|
||||||
import com.cappielloantonio.play.subsonic.models.AlbumWithSongsID3;
|
import com.cappielloantonio.play.subsonic.models.AlbumWithSongsID3;
|
||||||
|
|
@ -95,24 +95,24 @@ public class MappingUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<Media> mapQueue(List<Queue> queueList) {
|
public static ArrayList<Media> mapQueue(List<Queue> queueList) {
|
||||||
ArrayList<Media> songs = new ArrayList();
|
ArrayList<Media> media = new ArrayList();
|
||||||
|
|
||||||
for (Queue item : queueList) {
|
for (Queue item : queueList) {
|
||||||
songs.add(new Media(item));
|
media.add(new Media(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
return songs;
|
return media;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Queue mapSongToQueue(Media song, int trackOrder) {
|
public static Queue mapMediaToQueue(Media media, int trackOrder) {
|
||||||
return new Queue(trackOrder, song.getId(), song.getTitle(), song.getAlbumId(), song.getAlbumName(), song.getArtistId(), song.getArtistName(), song.getPrimary(), song.getDuration(), 0, 0);
|
return new Queue(trackOrder, media.getId(), media.getTitle(), media.getAlbumId(), media.getAlbumName(), media.getArtistId(), media.getArtistName(), media.getCoverArtId(), media.getDuration(), 0, 0, media.getStreamId(), media.getChannelId(), media.getPublishDate(), media.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Queue> mapSongsToQueue(List<Media> songs) {
|
public static List<Queue> mapMediaToQueue(List<Media> media) {
|
||||||
List<Queue> queue = new ArrayList<>();
|
List<Queue> queue = new ArrayList<>();
|
||||||
|
|
||||||
for (int counter = 0; counter < songs.size(); counter++) {
|
for (int counter = 0; counter < media.size(); counter++) {
|
||||||
queue.add(mapSongToQueue(songs.get(counter), counter));
|
queue.add(mapMediaToQueue(media.get(counter), counter));
|
||||||
}
|
}
|
||||||
|
|
||||||
return queue;
|
return queue;
|
||||||
|
|
@ -202,69 +202,60 @@ public class MappingUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
public static MediaItem mapMediaItem(Context context, Media song, boolean stream) {
|
public static MediaItem mapMediaItem(Context context, Media media, boolean stream) {
|
||||||
boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(song.getId()));
|
boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(media.getId()));
|
||||||
|
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString("id", song.getId());
|
bundle.putString("id", media.getId());
|
||||||
bundle.putString("albumId", song.getAlbumId());
|
bundle.putString("albumId", media.getAlbumId());
|
||||||
bundle.putString("artistId", song.getArtistId());
|
bundle.putString("artistId", media.getArtistId());
|
||||||
|
bundle.putString("mediaType", media.getType());
|
||||||
|
|
||||||
return new MediaItem.Builder()
|
return new MediaItem.Builder()
|
||||||
.setMediaId(song.getId())
|
.setMediaId(media.getId())
|
||||||
.setMediaMetadata(
|
.setMediaMetadata(
|
||||||
new MediaMetadata.Builder()
|
new MediaMetadata.Builder()
|
||||||
.setMediaUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, song.getId()) : MusicUtil.getDownloadUri(song.getId()))
|
.setMediaUri(getUri(context, media, stream && !isDownloaded))
|
||||||
.setTitle(MusicUtil.getReadableString(song.getTitle()))
|
.setTitle(MusicUtil.getReadableString(media.getTitle()))
|
||||||
.setTrackNumber(song.getTrackNumber())
|
.setTrackNumber(media.getTrackNumber())
|
||||||
.setDiscNumber(song.getDiscNumber())
|
.setDiscNumber(media.getDiscNumber())
|
||||||
.setReleaseYear(song.getYear())
|
.setReleaseYear(media.getYear())
|
||||||
.setAlbumTitle(MusicUtil.getReadableString(song.getAlbumName()))
|
.setAlbumTitle(MusicUtil.getReadableString(media.getAlbumName()))
|
||||||
.setArtist(MusicUtil.getReadableString(song.getArtistName()))
|
.setArtist(MusicUtil.getReadableString(media.getArtistName()))
|
||||||
.setExtras(bundle)
|
.setExtras(bundle)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.setMimeType(MimeTypes.BASE_TYPE_AUDIO)
|
.setMimeType(MimeTypes.BASE_TYPE_AUDIO)
|
||||||
.setUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, song.getId()) : MusicUtil.getDownloadUri(song.getId()))
|
.setUri(getUri(context, media, stream && !isDownloaded))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
private static Uri getUri(Context context, Media media, boolean stream) {
|
||||||
public static MediaItem mapMediaItem(Context context, PodcastEpisode podcastEpisode, boolean stream) {
|
switch (media.getType()) {
|
||||||
boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(podcastEpisode.getId()));
|
case Media.MEDIA_TYPE_MUSIC:
|
||||||
|
if (stream) {
|
||||||
Bundle bundle = new Bundle();
|
return MusicUtil.getStreamUri(context, media.getId());
|
||||||
bundle.putString("id", podcastEpisode.getId());
|
}
|
||||||
bundle.putString("albumId", podcastEpisode.getAlbumId());
|
else {
|
||||||
bundle.putString("artistId", podcastEpisode.getArtistId());
|
return MusicUtil.getDownloadUri(media.getId());
|
||||||
|
}
|
||||||
return new MediaItem.Builder()
|
case Media.MEDIA_TYPE_PODCAST:
|
||||||
.setMediaId(podcastEpisode.getId())
|
if(stream) {
|
||||||
.setMediaMetadata(
|
return MusicUtil.getStreamUri(context, media.getStreamId());
|
||||||
new MediaMetadata.Builder()
|
}
|
||||||
.setMediaUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, podcastEpisode.getId()) : MusicUtil.getDownloadUri(podcastEpisode.getId()))
|
else {
|
||||||
.setTitle(MusicUtil.getReadableString(podcastEpisode.getTitle()))
|
return MusicUtil.getDownloadUri(media.getStreamId());
|
||||||
.setReleaseYear(podcastEpisode.getYear())
|
}
|
||||||
.setArtist(MusicUtil.getReadableString(podcastEpisode.getArtist()))
|
default:
|
||||||
.setExtras(bundle)
|
return MusicUtil.getStreamUri(context, media.getId());
|
||||||
.build()
|
}
|
||||||
)
|
|
||||||
.setMimeType(MimeTypes.BASE_TYPE_AUDIO)
|
|
||||||
.setUri(stream && !isDownloaded ? MusicUtil.getStreamUri(context, podcastEpisode.getId()) : MusicUtil.getDownloadUri(podcastEpisode.getId()))
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<MediaItem> mapMediaItems(Context context, List<?> items, boolean stream) {
|
public static ArrayList<MediaItem> mapMediaItems(Context context, List<Media> items, boolean stream) {
|
||||||
ArrayList<MediaItem> mediaItems = new ArrayList();
|
ArrayList<MediaItem> mediaItems = new ArrayList();
|
||||||
|
|
||||||
for(int i = 0; i < items.size(); i++) {
|
for (int i = 0; i < items.size(); i++) {
|
||||||
if(items.get(i) instanceof Media) {
|
mediaItems.add(mapMediaItem(context, items.get(i), stream));
|
||||||
mediaItems.add(mapMediaItem(context, (Media) items.get(i), stream));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(items.get(i) instanceof PodcastEpisode) {
|
|
||||||
mediaItems.add(mapMediaItem(context, (PodcastEpisode) items.get(i), stream));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mediaItems;
|
return mediaItems;
|
||||||
|
|
@ -284,8 +275,8 @@ public class MappingUtil {
|
||||||
return new PodcastChannel(subsonicPodcastChannel);
|
return new PodcastChannel(subsonicPodcastChannel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<PodcastEpisode> mapPodcastEpisode(List<com.cappielloantonio.play.subsonic.models.PodcastEpisode> subsonicPodcastEpisodes) {
|
public static ArrayList<Media> mapPodcastEpisode(List<com.cappielloantonio.play.subsonic.models.PodcastEpisode> subsonicPodcastEpisodes) {
|
||||||
ArrayList<PodcastEpisode> podcastEpisodes = new ArrayList();
|
ArrayList<Media> podcastEpisodes = new ArrayList();
|
||||||
|
|
||||||
for (com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode : subsonicPodcastEpisodes) {
|
for (com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode : subsonicPodcastEpisodes) {
|
||||||
podcastEpisodes.add(mapPodcastEpisode(subsonicPodcastEpisode));
|
podcastEpisodes.add(mapPodcastEpisode(subsonicPodcastEpisode));
|
||||||
|
|
@ -294,7 +285,7 @@ public class MappingUtil {
|
||||||
return podcastEpisodes;
|
return podcastEpisodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PodcastEpisode mapPodcastEpisode(com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode) {
|
public static Media mapPodcastEpisode(com.cappielloantonio.play.subsonic.models.PodcastEpisode subsonicPodcastEpisode) {
|
||||||
return new PodcastEpisode(subsonicPodcastEpisode);
|
return new Media(subsonicPodcastEpisode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue