Use libmagic to extract the file's creation year
authorJosh Williams <jwilliams@endpoint.com>
Fri, 4 Oct 2013 13:01:09 +0000 (09:01 -0400)
committerJosh Williams <jwilliams@endpoint.com>
Fri, 4 Oct 2013 13:01:09 +0000 (09:01 -0400)
NOTE: This adds a new Python module requirement.
The added function can of course be expanded to return anything else
the libmagic routine could provide in the future.

karmaworld/apps/notes/gdrive.py
reqs/common.txt

index fd5e9b1ebefedf5f8bf62ccee2c55d966e2f224c..64f6cb65cf5c2a769f9f16be715d909a5c273709 100644 (file)
@@ -3,8 +3,10 @@
 # Copyright (C) 2012  FinalsClub Foundation
 
 import datetime
+import magic
 import mimetypes
 import os
+import re
 import time
 
 import httplib2
@@ -29,6 +31,23 @@ EXT_TO_MIME = {'.docx': 'application/msword'}
 
 PPT_MIMETYPES = ['application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation']
 
+def extract_file_details(fileobj):
+    details = None
+    year = None
+
+    fileobj.open()
+    filebuf = fileobj.read()
+    with magic.Magic() as m:
+        details = m.id_buffer(filebuf)
+    fileobj.close()
+
+    result = re.search(r'Create Time/Date:[^,]+(?P<year>\d{4})', details)
+    if result:
+        if 'year' in result.groupdict():
+            year = result.groupdict()['year']
+
+    return {'year': year}
+
 def build_flow():
     """ Create an oauth2 autentication object with our preferred details """
     scopes = [
@@ -254,6 +273,10 @@ def convert_raw_document(raw_document):
 
     note.text = content_dict['text']
 
+    note_details = extract_file_details(fp_file)
+    if 'year' in note_details and note_details['year']:
+        note.year = note_details['year']
+
     # before we save new html, sanitize a tags in note.html
     #note.sanitize_html(save=False)
     #FIXME: ^^^ disabled until we can get html out of an Etree html element
index 080dfbff08f8ee28e7c8c53bc922037ae4161abb..6339beaf1c19de50e88d23d31a6a95f441ee80fc 100644 (file)
@@ -12,3 +12,4 @@ django-grappelli==2.4.3
 lxml==3.1.0
 git+https://github.com/FinalsClub/django-taggit.git
 django-filepicker==0.1.5
+filemagic==1.6