2014-04-19 02:30:29 -04:00
|
|
|
package net.filebot;
|
2009-05-21 05:56:25 -04:00
|
|
|
|
|
|
|
import static java.util.Collections.*;
|
2017-01-12 09:18:10 -05:00
|
|
|
import static net.filebot.util.RegularExpressions.*;
|
2009-05-21 05:56:25 -04:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2017-01-12 09:18:10 -05:00
|
|
|
import java.util.Enumeration;
|
2014-07-28 15:20:55 -04:00
|
|
|
import java.util.LinkedHashMap;
|
2009-05-21 05:56:25 -04:00
|
|
|
import java.util.List;
|
2011-10-29 16:19:53 -04:00
|
|
|
import java.util.Map;
|
2011-12-13 08:32:44 -05:00
|
|
|
import java.util.Map.Entry;
|
2017-01-12 09:18:10 -05:00
|
|
|
import java.util.ResourceBundle;
|
2009-05-21 05:56:25 -04:00
|
|
|
|
2016-10-20 13:05:27 -04:00
|
|
|
import net.filebot.util.FileUtilities.ExtensionFileFilter;
|
|
|
|
|
2009-05-21 05:56:25 -04:00
|
|
|
public class MediaTypes {
|
2013-12-22 03:33:19 -05:00
|
|
|
|
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);
|
2013-12-22 03:33:19 -05:00
|
|
|
|
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));
|
2013-12-22 03:33:19 -05:00
|
|
|
|
2017-01-12 09:18:10 -05:00
|
|
|
types.put(type, new ExtensionFileFilter(extensions));
|
2009-05-21 05:56:25 -04:00
|
|
|
}
|
2013-12-22 03:33:19 -05:00
|
|
|
|
2017-01-12 09:18:10 -05:00
|
|
|
return types;
|
2009-08-10 07:46:24 -04:00
|
|
|
}
|
2013-12-22 03:33:19 -05:00
|
|
|
|
2017-01-12 09:18:10 -05:00
|
|
|
public static void main(String[] args) {
|
|
|
|
System.out.println(MediaTypes.types);
|
2013-12-22 03:33:19 -05:00
|
|
|
}
|
|
|
|
|
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)) {
|
2013-12-22 03:33:19 -05:00
|
|
|
return it.getKey();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2017-01-12 09:18:10 -05:00
|
|
|
public static ExtensionFileFilter getTypeFilter(String name) {
|
|
|
|
return types.get(name);
|
2009-08-10 07:46:24 -04:00
|
|
|
}
|
2013-12-22 03:33:19 -05:00
|
|
|
|
2017-01-12 09:18:10 -05:00
|
|
|
public static ExtensionFileFilter getCategoryFilter(String category) {
|
2014-07-28 15:20:55 -04:00
|
|
|
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());
|
2014-11-07 11:43:19 -05:00
|
|
|
}
|
2014-07-28 15:20:55 -04:00
|
|
|
}
|
2017-01-12 09:18:10 -05:00
|
|
|
|
2014-07-28 15:20:55 -04: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 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");
|
2014-07-29 04:43:54 -04:00
|
|
|
|
2009-05-21 05:56:25 -04:00
|
|
|
}
|