Add a setting to use symbolic links for original files (closes #36).
This commit is contained in:
@@ -293,7 +293,8 @@ def process_image(filepath, outpath, settings):
|
||||
options = {}
|
||||
|
||||
if settings['keep_orig']:
|
||||
shutil.copy(filepath, join(outpath, settings['orig_dir'], filename))
|
||||
copy(filepath, join(outpath, settings['orig_dir'], filename),
|
||||
symlink=settings['orig_link'])
|
||||
|
||||
image.generate_image(filepath, outname, settings, options=options)
|
||||
|
||||
@@ -312,7 +313,8 @@ def process_video(filepath, outpath, settings):
|
||||
outname = join(outpath, base + '.webm')
|
||||
|
||||
if settings['keep_orig']:
|
||||
shutil.copy(filepath, join(outpath, settings['orig_dir'], filename))
|
||||
copy(filepath, join(outpath, settings['orig_dir'], filename),
|
||||
symlink=settings['orig_link'])
|
||||
|
||||
# TODO: Add specific video size settings
|
||||
video.generate_video(filepath, outname, settings['img_size'],
|
||||
@@ -325,6 +327,12 @@ def process_video(filepath, outpath, settings):
|
||||
fit=settings['thumb_fit'], options=settings['jpg_options'])
|
||||
|
||||
|
||||
def copy(src, dst, symlink=False):
|
||||
"""Copy or symlink the file."""
|
||||
func = os.symlink if symlink else shutil.copy2
|
||||
func(src, dst)
|
||||
|
||||
|
||||
def get_metadata(path):
|
||||
""" Get album metadata from DESCRIPTION_FILE:
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ _DEFAULT_CONFIG = {
|
||||
'thumb_fit': True,
|
||||
'keep_orig': False,
|
||||
'orig_dir': 'original',
|
||||
'orig_link': False,
|
||||
'jpg_options': {'quality': 85, 'optimize': True, 'progressive': True},
|
||||
'webm_options': {'crf': '10', 'bitrate': '1.6M',
|
||||
'qmin': '4', 'qmax': '63'},
|
||||
|
||||
@@ -58,6 +58,9 @@ thumb_size = (280, 210)
|
||||
# Subdirectory for original images
|
||||
# orig_dir = 'original'
|
||||
|
||||
# Use symbolic links instead of copying the original images
|
||||
# orig_link = False
|
||||
|
||||
# Jpeg options
|
||||
# jpg_options = {'quality': 85,
|
||||
# 'optimize': True,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import os
|
||||
import pytest
|
||||
|
||||
from sigal.gallery import Gallery, PathsDb, get_metadata
|
||||
from sigal.gallery import Gallery, PathsDb, get_metadata, copy
|
||||
from sigal.settings import read_settings
|
||||
|
||||
CURRENT_DIR = os.path.dirname(__file__)
|
||||
@@ -126,3 +126,17 @@ def test_gallery(tmpdir):
|
||||
html = f.read()
|
||||
|
||||
assert '<title>Sigal test gallery</title>' in html
|
||||
|
||||
|
||||
def test_copy(tmpdir):
|
||||
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2',
|
||||
REF['dir2']['medias'][0])
|
||||
dst = str(tmpdir.join(REF['dir2']['medias'][0]))
|
||||
copy(src, dst)
|
||||
assert os.path.isfile(dst)
|
||||
|
||||
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2',
|
||||
REF['dir2']['medias'][1])
|
||||
dst = str(tmpdir.join(REF['dir2']['medias'][1]))
|
||||
copy(src, dst, symlink=True)
|
||||
assert os.path.islink(dst)
|
||||
|
||||
Reference in New Issue
Block a user