[Checkins] SVN: z3c.filetype/trunk/src/z3c/filetype/ added mp4
detection, nicer tests, added full tests for ifiletype adapter
Bernd Dorn
bernd.dorn at lovelysystems.com
Sat Nov 25 04:59:09 EST 2006
Log message for revision 71304:
added mp4 detection, nicer tests, added full tests for ifiletype adapter
Changed:
U z3c.filetype/trunk/src/z3c/filetype/README.txt
U z3c.filetype/trunk/src/z3c/filetype/api.py
U z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py
U z3c.filetype/trunk/src/z3c/filetype/magic.mime
U z3c.filetype/trunk/src/z3c/filetype/magic.txt
A z3c.filetype/trunk/src/z3c/filetype/testdata/ipod.mp4
-=-
Modified: z3c.filetype/trunk/src/z3c/filetype/README.txt
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/README.txt 2006-11-24 22:23:18 UTC (rev 71303)
+++ z3c.filetype/trunk/src/z3c/filetype/README.txt 2006-11-25 09:58:52 UTC (rev 71304)
@@ -21,41 +21,43 @@
... path = os.path.join(testData, name)
... i = api.getInterfacesFor(file(path, 'rb'))
... print name
- ... print i
+ ... print sorted(i)
DS_Store
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IBinaryFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IBinaryFile>]
IMG_0504.JPG
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IJPGFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IJPGFile>]
faces_gray.avi
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IAVIFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IAVIFile>]
ftyp.mov
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IQuickTimeFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IQuickTimeFile>]
+ ipod.mp4
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IMP4File>]
jumps.mov
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IQuickTimeFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IQuickTimeFile>]
logo.gif
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IGIFFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IGIFFile>]
logo.gif.bz2
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IBZIP2File>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IBZIP2File>]
test.flv
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IFLVFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IFLVFile>]
test.gnutar
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.ITARFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.ITARFile>]
test.html
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>]
test.png
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IPNGFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IPNGFile>]
test.tar
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.ITARFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.ITARFile>]
test.tgz
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IGZIPFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IGZIPFile>]
test.txt.gz
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IGZIPFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IGZIPFile>]
test2.html
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>]
test2.thml
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>]
thumbnailImage_small.jpeg
- set([<InterfaceClass z3c.filetype.interfaces.filetypes.IJPGFile>])
+ [<InterfaceClass z3c.filetype.interfaces.filetypes.IJPGFile>]
The filename is only used if no interface is found, because we should
not trust the filename in most cases.
@@ -158,32 +160,41 @@
>>> sorted((interface.directlyProvidedBy(foo)))
[<InterfaceClass z3c.filetype.interfaces.filetypes.IFLVFile>]
+
+IFileType adapters
+==================
+
There is also an adapter from ITypedFile to IFileType, which can be
used to get the default content type for the interface.
>>> from z3c.filetype import adapters
>>> component.provideAdapter(adapters.TypedFileType)
- >>> ft = interfaces.IFileType(foo)
- >>> ft.contentType
- 'video/x-flv'
-
+ >>> for name in fileNames:
+ ... if name==".svn": continue
+ ... path = os.path.join(testData, name)
+ ... i = Foo(file(path, 'rb'))
+ ... notify(ObjectModifiedEvent(i))
+ ... print name + " --> " + interfaces.IFileType(i).contentType
+ DS_Store --> application/octet-stream
+ IMG_0504.JPG --> image/jpeg
+ faces_gray.avi --> video/x-msvideo
+ ftyp.mov --> video/quicktime
+ ipod.mp4 --> video/mp4
+ jumps.mov --> video/quicktime
+ logo.gif --> image/gif
+ logo.gif.bz2 --> application/x-bzip2
+ test.flv --> video/x-flv
+ test.gnutar --> application/x-tar
+ test.html --> text/html
+ test.png --> image/png
+ test.tar --> application/x-tar
+ test.tgz --> application/x-gzip
+ test.txt.gz --> application/x-gzip
+ test2.html --> text/html
+ test2.thml --> text/html
+ thumbnailImage_small.jpeg --> image/jpeg
-Let us try an unknown file type, this should apply an IBinaryFile
-interface.
- >>> foo.data = file(os.path.join(testData,'DS_Store'), 'rb')
- >>> notify(ObjectModifiedEvent(foo))
- >>> sorted((interface.directlyProvidedBy(foo)))
- [<InterfaceClass z3c.filetype.interfaces.filetypes.IBinaryFile>]
-
-
- >>> foo.data = file(os.path.join(testData,'ftyp.mov'), 'rb')
- >>> notify(ObjectModifiedEvent(foo))
- >>> sorted((interface.directlyProvidedBy(foo)))
- [<InterfaceClass z3c.filetype.interfaces.filetypes.IQuickTimeFile>]
- >>> interfaces.IFileType(foo).contentType
- 'video/quicktime'
-
Size adapters
=============
Modified: z3c.filetype/trunk/src/z3c/filetype/api.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/api.py 2006-11-24 22:23:18 UTC (rev 71303)
+++ z3c.filetype/trunk/src/z3c/filetype/api.py 2006-11-25 09:58:52 UTC (rev 71304)
@@ -46,7 +46,7 @@
ifaces.update(byMimeType(t))
if not ifaces:
ifaces.add(interfaces.filetypes.IBinaryFile)
- return ifaces
+ return InterfaceSet(*ifaces)
def applyInterfaces(obj):
assert(interfaces.ITypeableFile.providedBy(obj))
Modified: z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py 2006-11-24 22:23:18 UTC (rev 71303)
+++ z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py 2006-11-25 09:58:52 UTC (rev 71304)
@@ -83,7 +83,7 @@
IMPEGFile.setTaggedValue(MTM,re.compile('video/mpe?g'))
IMPEGFile.setTaggedValue(MT,'video/mpeg')
-class IMP4File(IVideoFile):
+class IMP4File(IQuickTimeFile):
"""IMP4File IPod Video File Format"""
IMP4File.setTaggedValue(MTM,re.compile('video/mp4'))
IMP4File.setTaggedValue(MT,'video/mp4')
@@ -111,5 +111,3 @@
"""XML File"""
IXMLFile.setTaggedValue(MTM,re.compile('text/xml'))
IXMLFile.setTaggedValue(MT,'text/xml')
-
-
Modified: z3c.filetype/trunk/src/z3c/filetype/magic.mime
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/magic.mime 2006-11-24 22:23:18 UTC (rev 71303)
+++ z3c.filetype/trunk/src/z3c/filetype/magic.mime 2006-11-25 09:58:52 UTC (rev 71304)
@@ -605,6 +605,11 @@
#
0 string MOVI video/sgi
+# mpeg4 from freedesktop.org.xml
+4 string ftypisom video/mp4
+4 string ftypmp42 video/mp4
+
+
# Apple Quicktime: Scan for all known top-level QT atom markers
4 string moov video/quicktime (moov)
4 string mdat video/quicktime (mdat)
@@ -925,3 +930,4 @@
# Macromedia Flash FLV Video File Format
0 string FLV video/x-flv
+
Modified: z3c.filetype/trunk/src/z3c/filetype/magic.txt
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/magic.txt 2006-11-24 22:23:18 UTC (rev 71303)
+++ z3c.filetype/trunk/src/z3c/filetype/magic.txt 2006-11-25 09:58:52 UTC (rev 71304)
@@ -12,21 +12,22 @@
>>> for name in fileNames:
... if name==".svn": continue
... path = os.path.join(testData, name)
- ... print name, m.detect(file(path))
- DS_Store set([])
- IMG_0504.JPG set(['image/jpeg'])
- faces_gray.avi set(['video/x-msvideo'])
- ftyp.mov set(['video/quicktime'])
- jumps.mov set(['video/quicktime'])
- logo.gif set(['image/gif'])
- logo.gif.bz2 set(['application/x-bzip2'])
- test.flv set(['video/x-flv'])
- test.gnutar set(['application/x-tar'])
- test.html set(['text/html'])
- test.png set(['image/png'])
- test.tar set(['application/x-tar'])
- test.tgz set(['application/x-gzip'])
- test.txt.gz set(['application/x-gzip'])
- test2.html set(['text/html'])
- test2.thml set(['text/html'])
- thumbnailImage_small.jpeg set(['image/jpeg'])
+ ... print '%s --> %r' % (name,sorted(m.detect(file(path))))
+ DS_Store --> []
+ IMG_0504.JPG --> ['image/jpeg']
+ faces_gray.avi --> ['video/x-msvideo']
+ ftyp.mov --> ['video/quicktime']
+ ipod.mp4 --> ['video/mp4', 'video/quicktime']
+ jumps.mov --> ['video/quicktime']
+ logo.gif --> ['image/gif']
+ logo.gif.bz2 --> ['application/x-bzip2']
+ test.flv --> ['video/x-flv']
+ test.gnutar --> ['application/x-tar']
+ test.html --> ['text/html']
+ test.png --> ['image/png']
+ test.tar --> ['application/x-tar']
+ test.tgz --> ['application/x-gzip']
+ test.txt.gz --> ['application/x-gzip']
+ test2.html --> ['text/html']
+ test2.thml --> ['text/html']
+ thumbnailImage_small.jpeg --> ['image/jpeg']
Added: z3c.filetype/trunk/src/z3c/filetype/testdata/ipod.mp4
===================================================================
(Binary files differ)
Property changes on: z3c.filetype/trunk/src/z3c/filetype/testdata/ipod.mp4
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the Checkins
mailing list