Merge branch 'master' of git://gitorious.org/mediagoblin/mediagoblin
This commit is contained in:
commit
a7f02e9514
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
# You can set these variables from the command line.
|
# You can set these variables from the command line.
|
||||||
SPHINXOPTS = -W
|
SPHINXOPTS =
|
||||||
SPHINXBUILD = sphinx-build
|
SPHINXBUILD = sphinx-build
|
||||||
PAPER =
|
PAPER =
|
||||||
BUILDDIR = build
|
BUILDDIR = build
|
||||||
|
@ -49,7 +49,7 @@ redirect_uri
|
|||||||
Response
|
Response
|
||||||
--------
|
--------
|
||||||
|
|
||||||
You will get back a response::
|
You will get back a response:
|
||||||
|
|
||||||
client_id
|
client_id
|
||||||
This identifies a client
|
This identifies a client
|
||||||
|
@ -56,7 +56,6 @@ Part 2: Core plugin documentation
|
|||||||
|
|
||||||
plugindocs/flatpagesfile
|
plugindocs/flatpagesfile
|
||||||
plugindocs/sampleplugin
|
plugindocs/sampleplugin
|
||||||
plugindocs/oauth
|
|
||||||
plugindocs/trim_whitespace
|
plugindocs/trim_whitespace
|
||||||
plugindocs/raven
|
plugindocs/raven
|
||||||
plugindocs/basic_auth
|
plugindocs/basic_auth
|
||||||
|
@ -141,6 +141,7 @@ please note the following:
|
|||||||
|
|
||||||
|
|
||||||
**New features**
|
**New features**
|
||||||
|
|
||||||
* PDF media type!
|
* PDF media type!
|
||||||
* Improved plugin system. More flexible, better documented, with a
|
* Improved plugin system. More flexible, better documented, with a
|
||||||
new plugin authoring section of the docs.
|
new plugin authoring section of the docs.
|
||||||
|
@ -104,47 +104,6 @@ max_height = integer(default=640)
|
|||||||
max_width = integer(default=180)
|
max_width = integer(default=180)
|
||||||
max_height = integer(default=180)
|
max_height = integer(default=180)
|
||||||
|
|
||||||
[media_type:mediagoblin.media_types.image]
|
|
||||||
# One of BICUBIC, BILINEAR, NEAREST, ANTIALIAS
|
|
||||||
resize_filter = string(default="ANTIALIAS")
|
|
||||||
#level of compression used when resizing images
|
|
||||||
quality = integer(default=90)
|
|
||||||
|
|
||||||
[media_type:mediagoblin.media_types.video]
|
|
||||||
# Should we keep the original file?
|
|
||||||
keep_original = boolean(default=False)
|
|
||||||
|
|
||||||
# 0 means autodetect, autodetect means number_of_CPUs - 1
|
|
||||||
vp8_threads = integer(default=0)
|
|
||||||
# Range: 0..10
|
|
||||||
vp8_quality = integer(default=8)
|
|
||||||
# Range: -0.1..1
|
|
||||||
vorbis_quality = float(default=0.3)
|
|
||||||
|
|
||||||
# Autoplay the video when page is loaded?
|
|
||||||
auto_play = boolean(default=False)
|
|
||||||
|
|
||||||
[[skip_transcode]]
|
|
||||||
mime_types = string_list(default=list("video/webm"))
|
|
||||||
container_formats = string_list(default=list("Matroska"))
|
|
||||||
video_codecs = string_list(default=list("VP8 video"))
|
|
||||||
audio_codecs = string_list(default=list("Vorbis"))
|
|
||||||
dimensions_match = boolean(default=True)
|
|
||||||
|
|
||||||
[media_type:mediagoblin.media_types.audio]
|
|
||||||
keep_original = boolean(default=True)
|
|
||||||
# vorbisenc quality
|
|
||||||
quality = float(default=0.3)
|
|
||||||
create_spectrogram = boolean(default=True)
|
|
||||||
spectrogram_fft_size = integer(default=4096)
|
|
||||||
|
|
||||||
[media_type:mediagoblin.media_types.ascii]
|
|
||||||
thumbnail_font = string(default=None)
|
|
||||||
|
|
||||||
[media_type:mediagoblin.media_types.pdf]
|
|
||||||
pdf_js = boolean(default=True)
|
|
||||||
|
|
||||||
|
|
||||||
[celery]
|
[celery]
|
||||||
# default result stuff
|
# default result stuff
|
||||||
CELERY_RESULT_BACKEND = string(default="database")
|
CELERY_RESULT_BACKEND = string(default="database")
|
||||||
|
4
mediagoblin/media_types/ascii/config_spec.ini
Normal file
4
mediagoblin/media_types/ascii/config_spec.ini
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[plugin_spec]
|
||||||
|
thumbnail_font = string(default=None)
|
||||||
|
|
||||||
|
|
@ -55,8 +55,8 @@ class CommonAsciiProcessor(MediaProcessor):
|
|||||||
acceptable_files = ['original', 'unicode']
|
acceptable_files = ['original', 'unicode']
|
||||||
|
|
||||||
def common_setup(self):
|
def common_setup(self):
|
||||||
self.ascii_config = mgg.global_config[
|
self.ascii_config = mgg.global_config['plugins'][
|
||||||
'media_type:mediagoblin.media_types.ascii']
|
'mediagoblin.media_types.ascii']
|
||||||
|
|
||||||
# Conversions subdirectory to avoid collisions
|
# Conversions subdirectory to avoid collisions
|
||||||
self.conversions_subdir = os.path.join(
|
self.conversions_subdir = os.path.join(
|
||||||
|
8
mediagoblin/media_types/audio/config_spec.ini
Normal file
8
mediagoblin/media_types/audio/config_spec.ini
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[plugin_spec]
|
||||||
|
keep_original = boolean(default=True)
|
||||||
|
# vorbisenc quality
|
||||||
|
quality = float(default=0.3)
|
||||||
|
create_spectrogram = boolean(default=True)
|
||||||
|
spectrogram_fft_size = integer(default=4096)
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ class CommonAudioProcessor(MediaProcessor):
|
|||||||
the audio_config, transcoder, thumbnailer and spectrogram_tmp path
|
the audio_config, transcoder, thumbnailer and spectrogram_tmp path
|
||||||
"""
|
"""
|
||||||
self.audio_config = mgg \
|
self.audio_config = mgg \
|
||||||
.global_config['media_type:mediagoblin.media_types.audio']
|
.global_config['plugins']['mediagoblin.media_types.audio']
|
||||||
|
|
||||||
# Pull down and set up the processing file
|
# Pull down and set up the processing file
|
||||||
self.process_filename = get_process_filename(
|
self.process_filename = get_process_filename(
|
||||||
|
7
mediagoblin/media_types/image/config_spec.ini
Normal file
7
mediagoblin/media_types/image/config_spec.ini
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[plugin_spec]
|
||||||
|
# One of BICUBIC, BILINEAR, NEAREST, ANTIALIAS
|
||||||
|
resize_filter = string(default="ANTIALIAS")
|
||||||
|
#level of compression used when resizing images
|
||||||
|
quality = integer(default=90)
|
||||||
|
|
||||||
|
|
@ -138,8 +138,8 @@ class CommonImageProcessor(MediaProcessor):
|
|||||||
"""
|
"""
|
||||||
Set up the workbench directory and pull down the original file
|
Set up the workbench directory and pull down the original file
|
||||||
"""
|
"""
|
||||||
self.image_config = mgg.global_config[
|
self.image_config = mgg.global_config['plugins'][
|
||||||
'media_type:mediagoblin.media_types.image']
|
'mediagoblin.media_types.image']
|
||||||
|
|
||||||
## @@: Should this be two functions?
|
## @@: Should this be two functions?
|
||||||
# Conversions subdirectory to avoid collisions
|
# Conversions subdirectory to avoid collisions
|
||||||
|
5
mediagoblin/media_types/pdf/config_spec.ini
Normal file
5
mediagoblin/media_types/pdf/config_spec.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[plugin_spec]
|
||||||
|
pdf_js = boolean(default=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
22
mediagoblin/media_types/video/config_spec.ini
Normal file
22
mediagoblin/media_types/video/config_spec.ini
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[plugin_spec]
|
||||||
|
# Should we keep the original file?
|
||||||
|
keep_original = boolean(default=False)
|
||||||
|
|
||||||
|
# 0 means autodetect, autodetect means number_of_CPUs - 1
|
||||||
|
vp8_threads = integer(default=0)
|
||||||
|
# Range: 0..10
|
||||||
|
vp8_quality = integer(default=8)
|
||||||
|
# Range: -0.1..1
|
||||||
|
vorbis_quality = float(default=0.3)
|
||||||
|
|
||||||
|
# Autoplay the video when page is loaded?
|
||||||
|
auto_play = boolean(default=False)
|
||||||
|
|
||||||
|
[[skip_transcode]]
|
||||||
|
mime_types = string_list(default=list("video/webm"))
|
||||||
|
container_formats = string_list(default=list("Matroska"))
|
||||||
|
video_codecs = string_list(default=list("VP8 video"))
|
||||||
|
audio_codecs = string_list(default=list("Vorbis"))
|
||||||
|
dimensions_match = boolean(default=True)
|
||||||
|
|
||||||
|
|
@ -126,7 +126,7 @@ class CommonVideoProcessor(MediaProcessor):
|
|||||||
|
|
||||||
def common_setup(self):
|
def common_setup(self):
|
||||||
self.video_config = mgg \
|
self.video_config = mgg \
|
||||||
.global_config['media_type:mediagoblin.media_types.video']
|
.global_config['plugins'][MEDIA_TYPE]
|
||||||
|
|
||||||
# Pull down and set up the processing file
|
# Pull down and set up the processing file
|
||||||
self.process_filename = get_process_filename(
|
self.process_filename = get_process_filename(
|
||||||
|
@ -27,7 +27,7 @@ def skip_transcode(metadata, size):
|
|||||||
|
|
||||||
Returns True if the video matches the requirements in the configuration.
|
Returns True if the video matches the requirements in the configuration.
|
||||||
'''
|
'''
|
||||||
config = mgg.global_config['media_type:mediagoblin.media_types.video']\
|
config = mgg.global_config['plugins']['mediagoblin.media_types.video']\
|
||||||
['skip_transcode']
|
['skip_transcode']
|
||||||
|
|
||||||
medium_config = mgg.global_config['media:medium']
|
medium_config = mgg.global_config['media:medium']
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
media.media_files['original']) %}
|
media.media_files['original']) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% set pdf_js = global_config.get('media_type:mediagoblin.media_types.pdf', {}).get('pdf_js', False) %}
|
{% set pdf_js = global_config['plugins'].get('mediagoblin.media_types.pdf', {}).get('pdf_js', False) %}
|
||||||
|
|
||||||
{% if pdf_js %}
|
{% if pdf_js %}
|
||||||
{% block mediagoblin_html_tag %}
|
{% block mediagoblin_html_tag %}
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
{% set display_type, display_path = media.get_display_media() %}
|
{% set display_type, display_path = media.get_display_media() %}
|
||||||
|
|
||||||
<video controls
|
<video controls
|
||||||
{% if global_config['media_type:mediagoblin.media_types.video']['auto_play'] %}autoplay{% endif %}
|
{% if global_config['plugins']['mediagoblin.media_types.video']['auto_play'] %}autoplay{% endif %}
|
||||||
preload="auto" class="video-js vjs-mg-skin"
|
preload="auto" class="video-js vjs-mg-skin"
|
||||||
data-setup='{"height": {{ media.media_data.height }},
|
data-setup='{"height": {{ media.media_data.height }},
|
||||||
"width": {{ media.media_data.width }} }'>
|
"width": {{ media.media_data.width }} }'>
|
||||||
|
@ -35,7 +35,8 @@ class StaticDirect(object):
|
|||||||
staticdirect to. In general, you should supply a None domain, as
|
staticdirect to. In general, you should supply a None domain, as
|
||||||
that's the "default" domain.
|
that's the "default" domain.
|
||||||
|
|
||||||
Things work like this:
|
Things work like this::
|
||||||
|
|
||||||
>>> staticdirect = StaticDirect(
|
>>> staticdirect = StaticDirect(
|
||||||
... {None: "/static/",
|
... {None: "/static/",
|
||||||
... "theme": "http://example.org/themestatic/"})
|
... "theme": "http://example.org/themestatic/"})
|
||||||
@ -69,17 +70,18 @@ class PluginStatic(object):
|
|||||||
|
|
||||||
This has two mandatory attributes that you must pass in on class
|
This has two mandatory attributes that you must pass in on class
|
||||||
init:
|
init:
|
||||||
- name: this name will be both used for lookup in "urlgen" for
|
|
||||||
your plugin's static resources and for the subdirectory that
|
- *name:* this name will be both used for lookup in "urlgen" for
|
||||||
it'll be "mounted" to for serving via your web browser. It
|
your plugin's static resources and for the subdirectory that
|
||||||
*MUST* be unique. If writing a plugin bundled with MediaGoblin
|
it'll be "mounted" to for serving via your web browser. It
|
||||||
please use the pattern 'coreplugin__foo' where 'foo' is your
|
*MUST* be unique. If writing a plugin bundled with MediaGoblin
|
||||||
plugin name. All external plugins should use their modulename,
|
please use the pattern 'coreplugin__foo' where 'foo' is your
|
||||||
so if your plugin is 'mg_bettertags' you should also call this
|
plugin name. All external plugins should use their modulename,
|
||||||
name 'mg_bettertags'.
|
so if your plugin is 'mg_bettertags' you should also call this
|
||||||
- file_path: the directory your plugin's static resources are
|
name 'mg_bettertags'.
|
||||||
located in. It's recommended that you use
|
- *file_path:* the directory your plugin's static resources are
|
||||||
pkg_resources.resource_filename() for this.
|
located in. It's recommended that you use
|
||||||
|
pkg_resources.resource_filename() for this.
|
||||||
|
|
||||||
An example of using this::
|
An example of using this::
|
||||||
|
|
||||||
|
4
setup.py
4
setup.py
@ -48,7 +48,7 @@ setup(
|
|||||||
'pytest>=2.3.1',
|
'pytest>=2.3.1',
|
||||||
'pytest-xdist',
|
'pytest-xdist',
|
||||||
'werkzeug>=0.7',
|
'werkzeug>=0.7',
|
||||||
'celery',
|
'celery>=3.0',
|
||||||
'kombu',
|
'kombu',
|
||||||
'jinja2',
|
'jinja2',
|
||||||
'sphinx',
|
'sphinx',
|
||||||
@ -63,7 +63,7 @@ setup(
|
|||||||
'itsdangerous',
|
'itsdangerous',
|
||||||
'pytz',
|
'pytz',
|
||||||
'six',
|
'six',
|
||||||
'oauthlib',
|
'oauthlib==0.5.0',
|
||||||
## This is optional!
|
## This is optional!
|
||||||
# 'translitcodec',
|
# 'translitcodec',
|
||||||
## For now we're expecting that users will install this from
|
## For now we're expecting that users will install this from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user