filebot/source/net/filebot/MediaTypes.java

73 lines
2.5 KiB
Java
Raw Normal View History

2014-04-19 02:30:29 -04:00
package net.filebot;
import static java.util.Collections.*;
2017-01-12 09:18:10 -05:00
import static net.filebot.util.RegularExpressions.*;
import java.util.ArrayList;
2017-01-12 09:18:10 -05:00
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.List;
2011-10-29 16:19:53 -04:00
import java.util.Map;
import java.util.Map.Entry;
2017-01-12 09:18:10 -05:00
import java.util.ResourceBundle;
2016-10-20 13:05:27 -04:00
import net.filebot.util.FileUtilities.ExtensionFileFilter;
public class MediaTypes {
2017-01-12 09:18:10 -05:00
private static Map<String, ExtensionFileFilter> types = getKnownMediaTypes();
2014-04-16 13:23:25 -04:00
2017-01-12 09:18:10 -05:00
private static Map<String, ExtensionFileFilter> getKnownMediaTypes() {
Map<String, ExtensionFileFilter> types = new LinkedHashMap<String, ExtensionFileFilter>(64);
2017-01-12 09:18:10 -05:00
ResourceBundle bundle = ResourceBundle.getBundle(MediaTypes.class.getName());
for (Enumeration<String> keys = bundle.getKeys(); keys.hasMoreElements();) {
String type = keys.nextElement();
String[] extensions = SPACE.split(bundle.getString(type));
2017-01-12 09:18:10 -05:00
types.put(type, new ExtensionFileFilter(extensions));
}
2017-01-12 09:18:10 -05:00
return types;
}
2017-01-12 09:18:10 -05:00
public static String getMediaType(String extension) {
for (Entry<String, ExtensionFileFilter> it : types.entrySet()) {
if (it.getValue().acceptExtension(extension)) {
return it.getKey();
}
}
return null;
}
2017-01-12 09:18:10 -05:00
public static ExtensionFileFilter getTypeFilter(String name) {
return types.get(name);
}
2017-01-12 09:18:10 -05:00
public static ExtensionFileFilter getCategoryFilter(String category) {
List<String> extensions = new ArrayList<String>();
2017-01-12 09:18:10 -05:00
for (Entry<String, ExtensionFileFilter> it : types.entrySet()) {
if (it.getKey().startsWith(category)) {
addAll(extensions, it.getValue().extensions());
}
}
2017-01-12 09:18:10 -05:00
return new ExtensionFileFilter(extensions);
}
2017-01-12 09:18:10 -05:00
public static final ExtensionFileFilter AUDIO_FILES = getCategoryFilter("audio");
public static final ExtensionFileFilter VIDEO_FILES = getCategoryFilter("video");
public static final ExtensionFileFilter SUBTITLE_FILES = getCategoryFilter("subtitle");
public static final ExtensionFileFilter IMAGE_FILES = getCategoryFilter("image");
2017-01-12 09:18:10 -05:00
public static final ExtensionFileFilter ARCHIVE_FILES = getCategoryFilter("archive");
public static final ExtensionFileFilter VERIFICATION_FILES = getCategoryFilter("verification");
public static final ExtensionFileFilter NFO_FILES = getTypeFilter("application/nfo");
public static final ExtensionFileFilter LIST_FILES = getTypeFilter("application/list");
public static final ExtensionFileFilter TORRENT_FILES = getTypeFilter("application/torrent");
2018-06-14 06:11:00 -04:00
public static final ExtensionFileFilter LICENSE_FILES = getTypeFilter("application/filebot-license");
}