From 370df3a26c9990a1b484b4e30145fa9a38f2b403 Mon Sep 17 00:00:00 2001 From: moralesg Date: Wed, 28 Oct 2020 12:07:17 -0300 Subject: Local feeds: honor file creation date (#4607) --- .../antennapod/core/feed/LocalFeedUpdater.java | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java index 2791be08c..f74ff290c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java @@ -10,12 +10,15 @@ import androidx.documentfile.provider.DocumentFile; import org.apache.commons.lang3.StringUtils; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutionException; @@ -24,6 +27,7 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.DateUtils; import de.danoeh.antennapod.core.util.DownloadError; public class LocalFeedUpdater { @@ -130,12 +134,30 @@ public class LocalFeedUpdater { private static FeedItem createFeedItem(Feed feed, DocumentFile file, Context context) { String uuid = UUID.randomUUID().toString(); - FeedItem item = new FeedItem(0, file.getName(), uuid, file.getName(), new Date(), - FeedItem.UNPLAYED, feed); - item.setAutoDownload(false); MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); mediaMetadataRetriever.setDataSource(context, file.getUri()); + String dateStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); + + Date date = null; + if (!TextUtils.isEmpty(dateStr)) { + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.getDefault()); + date = simpleDateFormat.parse(dateStr); + } catch (ParseException parseException) { + date = DateUtils.parse(dateStr); + if (date == null) { + date = new Date(file.lastModified()); + } + } + } else { + date = new Date(file.lastModified()); + } + + FeedItem item = new FeedItem(0, file.getName(), uuid, file.getName(), date, + FeedItem.UNPLAYED, feed); + item.setAutoDownload(false); + String durationStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); String title = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); if (!TextUtils.isEmpty(title)) { -- cgit v1.2.3