Build media file name based on item title

Use the media item title as a filename base if exist, fallback on the url name
otherwise.
This commit is contained in:
mat tso 2013-05-15 23:15:55 +02:00
parent 4707139def
commit 92a0b322da
1 changed files with 25 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.text.ExtendedMessageFormat;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -61,7 +62,7 @@ public class DownloadRequester {
.getName()) .getName())
+ "-" + "-"
+ i + i
+ "." + FilenameUtils.EXTENSION_SEPARATOR
+ FilenameUtils.getExtension(dest.getName()); + FilenameUtils.getExtension(dest.getName());
if (AppConfig.DEBUG) if (AppConfig.DEBUG)
Log.d(TAG, "Testing filename " + newName); Log.d(TAG, "Testing filename " + newName);
@ -289,8 +290,29 @@ public class DownloadRequester {
} }
public String getMediafilename(FeedMedia media) { public String getMediafilename(FeedMedia media) {
return URLUtil.guessFileName(media.getDownload_url(), null, String filename;
media.getMime_type()); String titleBaseFilename = "";
// Try to generate the filename by the item title
if (media.getItem() != null && media.getItem().getTitle() != null) {
String title = media.getItem().getTitle();
// Delete reserved characters
titleBaseFilename = title.replaceAll("[\\\\/%\\?\\*:|<>\"\\p{Cntrl}]", "");
titleBaseFilename = titleBaseFilename.trim();
}
String URLBaseFilename = URLUtil.guessFileName(media.getDownload_url(),
null, media.getMime_type());;
if (titleBaseFilename != "") {
// Append extension
filename = titleBaseFilename + FilenameUtils.EXTENSION_SEPARATOR +
FilenameUtils.getExtension(URLBaseFilename);
} else {
// Fall back on URL file name
filename = URLBaseFilename;
}
return filename;
} }
} }