diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2011-05-03 21:45:13 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2011-05-03 21:45:13 -0500 |
commit | 41f446f4f2642e1cbcdba7e129978743ae598758 (patch) | |
tree | f37651d24a855d2c07b1692cd95e229f93faba1f | |
parent | 9610848c298fff67da83abd495a44be86dd4eea3 (diff) | |
download | mediagoblin-41f446f4f2642e1cbcdba7e129978743ae598758.tar.lz mediagoblin-41f446f4f2642e1cbcdba7e129978743ae598758.tar.xz mediagoblin-41f446f4f2642e1cbcdba7e129978743ae598758.zip |
Add a rudimentary media processing function.
Haven't completely checked it for workingness, and not the final form
this will take :)
-rw-r--r-- | mediagoblin/process_media/__init__.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/mediagoblin/process_media/__init__.py b/mediagoblin/process_media/__init__.py new file mode 100644 index 00000000..0d02a13f --- /dev/null +++ b/mediagoblin/process_media/__init__.py @@ -0,0 +1,50 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011 Free Software Foundation, Inc +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import Image +import mongokit +from celery.task import task + +from mediagoblin.globals import database, queue_store, public_store + + +THUMB_SIZE = 200, 200 + + +@task +def process_media_initial(media_id): + entry = database.MediaEntry.one( + {'_id': mongokit.ObjectId(media_id)}) + + queued_filepath = entry['queue_files'].pop() + queued_file = queue_store.get_file(queued_filepath, 'r') + + with queued_file: + thumb = Image(queued_file) + thumb.thumbnail(THUMB_SIZE, Image.ANTIALIAS) + + thumb_filepath = public_store.get_unique_filepath( + ['media_entries', + unicode(entry['_id']), + 'thumbnail.jpg']) + + with public_store.get_file(thumb_filepath, 'w') as thumb_file: + thumb.save(thumb_file, "JPEG") + + queue_store.delete(queued_filepath) + entry.setdefault('media_files', []).append(thumb_filepath) + entry.state = 'processed' + entry.save() |