From 41f446f4f2642e1cbcdba7e129978743ae598758 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Tue, 3 May 2011 21:45:13 -0500 Subject: [PATCH] Add a rudimentary media processing function. Haven't completely checked it for workingness, and not the final form this will take :) --- mediagoblin/process_media/__init__.py | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mediagoblin/process_media/__init__.py 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 . + +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() -- 2.25.1