Rename to FilenameBuilder, with a main method named fill.
I think these names better convey what's actually going on. I updated the documentation a bit while I was at it.
This commit is contained in:
parent
84725abd64
commit
28f364bd6d
@ -19,7 +19,7 @@ import os
|
|||||||
|
|
||||||
from mediagoblin import mg_globals as mgg
|
from mediagoblin import mg_globals as mgg
|
||||||
from mediagoblin.processing import BadMediaFail, \
|
from mediagoblin.processing import BadMediaFail, \
|
||||||
create_pub_filepath, THUMB_SIZE, MEDIUM_SIZE, FilenameMunger
|
create_pub_filepath, THUMB_SIZE, MEDIUM_SIZE, FilenameBuilder
|
||||||
from mediagoblin.tools.exif import exif_fix_image_orientation, \
|
from mediagoblin.tools.exif import exif_fix_image_orientation, \
|
||||||
extract_exif, clean_exif, get_gps_data, get_useful
|
extract_exif, clean_exif, get_gps_data, get_useful
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ def process_image(entry):
|
|||||||
queued_filename = workbench.localized_file(
|
queued_filename = workbench.localized_file(
|
||||||
mgg.queue_store, queued_filepath,
|
mgg.queue_store, queued_filepath,
|
||||||
'source')
|
'source')
|
||||||
name_munger = FilenameMunger(queued_filename)
|
name_builder = FilenameBuilder(queued_filename)
|
||||||
|
|
||||||
# EXIF extraction
|
# EXIF extraction
|
||||||
exif_tags = extract_exif(queued_filename)
|
exif_tags = extract_exif(queued_filename)
|
||||||
@ -75,7 +75,7 @@ def process_image(entry):
|
|||||||
|
|
||||||
# Always create a small thumbnail
|
# Always create a small thumbnail
|
||||||
thumb_filepath = create_pub_filepath(
|
thumb_filepath = create_pub_filepath(
|
||||||
entry, name_munger.munge('{basename}.thumbnail{ext}'))
|
entry, name_builder.fill('{basename}.thumbnail{ext}'))
|
||||||
resize_image(entry, queued_filename, thumb_filepath,
|
resize_image(entry, queued_filename, thumb_filepath,
|
||||||
exif_tags, conversions_subdir, THUMB_SIZE)
|
exif_tags, conversions_subdir, THUMB_SIZE)
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ def process_image(entry):
|
|||||||
# file, a `.medium.jpg` files is created and later associated with the media
|
# file, a `.medium.jpg` files is created and later associated with the media
|
||||||
# entry.
|
# entry.
|
||||||
medium_filepath = create_pub_filepath(
|
medium_filepath = create_pub_filepath(
|
||||||
entry, name_munger.munge('{basename}.medium{ext}'))
|
entry, name_builder.fill('{basename}.medium{ext}'))
|
||||||
resize_image(entry, queued_filename, medium_filepath,
|
resize_image(entry, queued_filename, medium_filepath,
|
||||||
exif_tags, conversions_subdir, MEDIUM_SIZE, MEDIUM_SIZE)
|
exif_tags, conversions_subdir, MEDIUM_SIZE, MEDIUM_SIZE)
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ def process_image(entry):
|
|||||||
|
|
||||||
with queued_file:
|
with queued_file:
|
||||||
original_filepath = create_pub_filepath(
|
original_filepath = create_pub_filepath(
|
||||||
entry, name_munger.munge('{basename}{ext}') )
|
entry, name_builder.fill('{basename}{ext}') )
|
||||||
|
|
||||||
with mgg.public_store.get_file(original_filepath, 'wb') \
|
with mgg.public_store.get_file(original_filepath, 'wb') \
|
||||||
as original_file:
|
as original_file:
|
||||||
|
@ -20,7 +20,7 @@ import os
|
|||||||
|
|
||||||
from mediagoblin import mg_globals as mgg
|
from mediagoblin import mg_globals as mgg
|
||||||
from mediagoblin.processing import mark_entry_failed, \
|
from mediagoblin.processing import mark_entry_failed, \
|
||||||
THUMB_SIZE, MEDIUM_SIZE, create_pub_filepath, FilenameMunger
|
THUMB_SIZE, MEDIUM_SIZE, create_pub_filepath, FilenameBuilder
|
||||||
from . import transcoders
|
from . import transcoders
|
||||||
|
|
||||||
logging.basicConfig()
|
logging.basicConfig()
|
||||||
@ -49,13 +49,13 @@ def process_video(entry):
|
|||||||
queued_filename = workbench.localized_file(
|
queued_filename = workbench.localized_file(
|
||||||
mgg.queue_store, queued_filepath,
|
mgg.queue_store, queued_filepath,
|
||||||
'source')
|
'source')
|
||||||
name_munger = FilenameMunger(queued_filename)
|
name_builder = FilenameBuilder(queued_filename)
|
||||||
|
|
||||||
medium_filepath = create_pub_filepath(
|
medium_filepath = create_pub_filepath(
|
||||||
entry, name_munger.munge('{basename}-640p.webm'))
|
entry, name_builder.fill('{basename}-640p.webm'))
|
||||||
|
|
||||||
thumbnail_filepath = create_pub_filepath(
|
thumbnail_filepath = create_pub_filepath(
|
||||||
entry, name_munger.munge('{basename}.thumbnail.jpg'))
|
entry, name_builder.fill('{basename}.thumbnail.jpg'))
|
||||||
|
|
||||||
# Create a temporary file for the video destination
|
# Create a temporary file for the video destination
|
||||||
tmp_dst = tempfile.NamedTemporaryFile()
|
tmp_dst = tempfile.NamedTemporaryFile()
|
||||||
|
@ -43,28 +43,30 @@ def create_pub_filepath(entry, filename):
|
|||||||
# Media processing initial steps
|
# Media processing initial steps
|
||||||
################################
|
################################
|
||||||
|
|
||||||
class FilenameMunger(object):
|
class FilenameBuilder(object):
|
||||||
"""Easily slice and dice filenames.
|
"""Easily slice and dice filenames.
|
||||||
|
|
||||||
Initialize this class with an original filename, then use the munge()
|
Initialize this class with an original file path, then use the fill()
|
||||||
method to create new filenames based on the original.
|
method to create new filenames based on the original.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
MAX_FILENAME_LENGTH = 255 # VFAT's maximum filename length
|
MAX_FILENAME_LENGTH = 255 # VFAT's maximum filename length
|
||||||
|
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
"""Initialize a munger with one original filename."""
|
"""Initialize a builder from an original file path."""
|
||||||
self.dirpath, self.basename = os.path.split(path)
|
self.dirpath, self.basename = os.path.split(path)
|
||||||
self.basename, self.ext = os.path.splitext(self.basename)
|
self.basename, self.ext = os.path.splitext(self.basename)
|
||||||
self.ext = self.ext.lower()
|
self.ext = self.ext.lower()
|
||||||
|
|
||||||
def munge(self, fmtstr):
|
def fill(self, fmtstr):
|
||||||
"""Return a new filename based on the initialized original.
|
"""Build a new filename based on the original.
|
||||||
|
|
||||||
The fmtstr argumentcan include {basename} and {ext}, which will
|
The fmtstr argument can include the following:
|
||||||
fill in components of the original filename. The extension will
|
{basename} -- the original basename, with the extension removed
|
||||||
always be lowercased. The filename will also be trunacted to this
|
{ext} -- the original extension, always lowercase
|
||||||
class' MAX_FILENAME_LENGTH characters.
|
|
||||||
|
If necessary, {basename} will be truncated so the filename does not
|
||||||
|
exceed this class' MAX_FILENAME_LENGTH in length.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
basename_len = (self.MAX_FILENAME_LENGTH -
|
basename_len = (self.MAX_FILENAME_LENGTH -
|
||||||
|
@ -5,16 +5,16 @@ from nose.tools import assert_equal, assert_true, assert_false
|
|||||||
from mediagoblin import processing
|
from mediagoblin import processing
|
||||||
|
|
||||||
class TestProcessing(object):
|
class TestProcessing(object):
|
||||||
def run_munge(self, input, format, output=None):
|
def run_fill(self, input, format, output=None):
|
||||||
munger = processing.FilenameMunger(input)
|
builder = processing.FilenameBuilder(input)
|
||||||
result = munger.munge(format)
|
result = builder.fill(format)
|
||||||
if output is None:
|
if output is None:
|
||||||
return result
|
return result
|
||||||
assert_equal(output, result)
|
assert_equal(output, result)
|
||||||
|
|
||||||
def test_easy_filename_munge(self):
|
def test_easy_filename_fill(self):
|
||||||
self.run_munge('/home/user/foo.TXT', '{basename}bar{ext}', 'foobar.txt')
|
self.run_fill('/home/user/foo.TXT', '{basename}bar{ext}', 'foobar.txt')
|
||||||
|
|
||||||
def test_long_filename_munge(self):
|
def test_long_filename_fill(self):
|
||||||
self.run_munge('{0}.png'.format('A' * 300), 'image-{basename}{ext}',
|
self.run_fill('{0}.png'.format('A' * 300), 'image-{basename}{ext}',
|
||||||
'image-{0}.png'.format('A' * 245))
|
'image-{0}.png'.format('A' * 245))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user