From: Jakob Kramer Date: Sat, 19 May 2012 16:17:33 +0000 (+0200) Subject: added support for original audio download; rename X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=b781c3c9281b0356a8b7cc18065610dfccad7fcf;p=mediagoblin.git added support for original audio download; rename Renamed `ogg' to `webm_audio' in core__file_keynames --- diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini index 01853e48..ce81b356 100644 --- a/mediagoblin/config_spec.ini +++ b/mediagoblin/config_spec.ini @@ -95,6 +95,7 @@ vorbis_quality = float(default=0.3) [media_type:mediagoblin.media_types.audio] +keep_original = boolean(default=True) # vorbisenc qualiy quality = float(default=0.3) create_spectrogram = boolean(default=True) diff --git a/mediagoblin/db/sql/migrations.py b/mediagoblin/db/sql/migrations.py index 98d0d0aa..3b7ee8b4 100644 --- a/mediagoblin/db/sql/migrations.py +++ b/mediagoblin/db/sql/migrations.py @@ -1,5 +1,5 @@ # GNU MediaGoblin -- federated, autonomous media hosting -# Copyright (C) 2011 MediaGoblin contributors. See AUTHORS. +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. # # 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 @@ -14,4 +14,22 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from sqlalchemy import MetaData, Table + +from mediagoblin.db.sql.util import RegisterMigration + + MIGRATIONS = {} + + +@RegisterMigration(1, MIGRATIONS) +def ogg_to_webm_audio(db_conn): + metadata = MetaData(bind=db_conn.bind) + + file_keynames = Table('core__file_keynames', metadata, autoload=True, + autoload_with=db_conn.bind) + + db_conn.execute( + file_keynames.update().where(file_keynames.c.name=='ogg'). + values(name='webm_audio') + ) diff --git a/mediagoblin/media_types/audio/processing.py b/mediagoblin/media_types/audio/processing.py index f0b8d0f9..ef98e533 100644 --- a/mediagoblin/media_types/audio/processing.py +++ b/mediagoblin/media_types/audio/processing.py @@ -19,10 +19,11 @@ import tempfile import os from mediagoblin import mg_globals as mgg -from mediagoblin.processing import create_pub_filepath, BadMediaFail +from mediagoblin.processing import (create_pub_filepath, BadMediaFail, + FilenameBuilder) -from mediagoblin.media_types.audio.transcoders import AudioTranscoder, \ - AudioThumbnailer +from mediagoblin.media_types.audio.transcoders import (AudioTranscoder, + AudioThumbnailer) _log = logging.getLogger(__name__) @@ -48,29 +49,42 @@ def process_audio(entry): queued_filename = workbench.localized_file( mgg.queue_store, queued_filepath, 'source') + name_builder = FilenameBuilder(queued_filename) - ogg_filepath = create_pub_filepath( + webm_audio_filepath = create_pub_filepath( entry, '{original}.webm'.format( original=os.path.splitext( queued_filepath[-1])[0])) + if audio_config['keep_original']: + with open(queued_filename, 'rb') as queued_file: + original_filepath = create_pub_filepath( + entry, name_builder.fill('{basename}{ext}')) + + with mgg.public_store.get_file(original_filepath, 'wb') as \ + original_file: + _log.debug('Saving original...') + original_file.write(queued_file.read()) + + entry.media_files['original'] = original_filepath + transcoder = AudioTranscoder() - with tempfile.NamedTemporaryFile() as ogg_tmp: + with tempfile.NamedTemporaryFile() as webm_audio_tmp: transcoder.transcode( queued_filename, - ogg_tmp.name, + webm_audio_tmp.name, quality=audio_config['quality']) - data = transcoder.discover(ogg_tmp.name) + data = transcoder.discover(webm_audio_tmp.name) _log.debug('Saving medium...') - mgg.public_store.get_file(ogg_filepath, 'wb').write( - ogg_tmp.read()) + mgg.public_store.get_file(webm_audio_filepath, 'wb').write( + webm_audio_tmp.read()) - entry.media_files['ogg'] = ogg_filepath + entry.media_files['webm_audio'] = webm_audio_filepath # entry.media_data_init(length=int(data.audiolength)) diff --git a/mediagoblin/templates/mediagoblin/media_displays/audio.html b/mediagoblin/templates/mediagoblin/media_displays/audio.html index 06d4f882..9713aa49 100644 --- a/mediagoblin/templates/mediagoblin/media_displays/audio.html +++ b/mediagoblin/templates/mediagoblin/media_displays/audio.html @@ -39,7 +39,7 @@ - {% if 'original' in media.media_files %} -

- - {%- trans -%} - Original - {%- endtrans -%} - -

- {% endif %} +{% endblock %} + +{% block mediagoblin_sidebar %} +

{% trans %}Download{% endtrans %}

+ {% endblock %} diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html index 4d41f19e..21990442 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/media.html +++ b/mediagoblin/templates/mediagoblin/user_pages/media.html @@ -184,6 +184,9 @@ {% include "mediagoblin/utils/geolocation_map.html" %} {% include "mediagoblin/utils/exif.html" %} + + {% block mediagoblin_sidebar %} + {% endblock %}
{% endblock %}