Add a setting to use symbolic links for original files (closes #36).

This commit is contained in:
Simon Conseil
2013-10-17 00:17:06 +02:00
parent 7916d5e4cc
commit 440ef5f218
4 changed files with 29 additions and 3 deletions

View File

@@ -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:

View 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'},

View File

@@ -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,

View File

@@ -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)