Travis Shirk avatar Travis Shirk committed e061040

Check for custom ID3 mime-type beforing using python-magic; fixes #18

Comments (0)

Files changed (1)

src/eyed3/utils/__init__.py

 import os
 import re
 
+ID3_MIME_TYPE = "application/x-id3"
+ID3_MIME_TYPE_EXTENSIONS = ("id3", "tag")
+
 import StringIO
 import mimetypes
 _mime_types = mimetypes.MimeTypes()
-_mime_types.readfp(StringIO.StringIO("application/x-id3 id3 tag"))
+_mime_types.readfp(StringIO.StringIO("%s %s" %
+                                     (ID3_MIME_TYPE,
+                                      " ".join(ID3_MIME_TYPE_EXTENSIONS))))
 del mimetypes
 del StringIO
 
     mime = None
 
     if magic_func:
-        mime = magic_func(filename)
-        if mime:
-            mime = mime.split(";")[0]
+        if (os.path.splitext(filename)[1] in
+                (".%s" % ext for ext in ID3_MIME_TYPE_EXTENSIONS)):
+            # Need to check custom types manually if not using _mime_types
+            mime = ID3_MIME_TYPE
+        else:
+            mime = magic_func(filename)
+            if mime:
+                mime = mime.split(";")[0]
 
     if not mime:
         mime, enc = _mime_types.guess_type(filename, strict=False)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.