mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
add FILENAME_METADATA setting to extract metadata from filename
FILENAME_METADATA default to '(?P<date>\d{4}-\d{2}-\d{2}).*' which will allow
to extract date metadata from the filename.
This commit is contained in:
parent
a0049f9fcd
commit
debd6fb3b4
2 changed files with 24 additions and 2 deletions
|
|
@ -1,4 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import re
|
||||||
try:
|
try:
|
||||||
import docutils
|
import docutils
|
||||||
import docutils.core
|
import docutils.core
|
||||||
|
|
@ -207,8 +209,9 @@ for cls in Reader.__subclasses__():
|
||||||
|
|
||||||
def read_file(filename, fmt=None, settings=None):
|
def read_file(filename, fmt=None, settings=None):
|
||||||
"""Return a reader object using the given format."""
|
"""Return a reader object using the given format."""
|
||||||
|
base, ext = os.path.splitext(os.path.basename(filename))
|
||||||
if not fmt:
|
if not fmt:
|
||||||
fmt = filename.split('.')[-1]
|
fmt = ext[1:]
|
||||||
|
|
||||||
if fmt not in _EXTENSIONS:
|
if fmt not in _EXTENSIONS:
|
||||||
raise TypeError('Pelican does not know how to parse %s' % filename)
|
raise TypeError('Pelican does not know how to parse %s' % filename)
|
||||||
|
|
@ -230,4 +233,13 @@ def read_file(filename, fmt=None, settings=None):
|
||||||
content = typogrify(content)
|
content = typogrify(content)
|
||||||
metadata['title'] = typogrify(metadata['title'])
|
metadata['title'] = typogrify(metadata['title'])
|
||||||
|
|
||||||
|
filename_metadata = settings and settings.get('FILENAME_METADATA')
|
||||||
|
if filename_metadata:
|
||||||
|
match = re.match(filename_metadata, base)
|
||||||
|
if match:
|
||||||
|
for k, v in match.groupdict().iteritems():
|
||||||
|
if k not in metadata:
|
||||||
|
k = k.lower() # metadata must be lowercase
|
||||||
|
metadata[k] = reader.process_metadata(k, v)
|
||||||
|
|
||||||
return content, metadata
|
return content, metadata
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import inspect
|
||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
from os.path import isabs
|
from os.path import isabs
|
||||||
|
|
||||||
|
|
@ -60,7 +61,7 @@ _DEFAULT_CONFIG = {'PATH': '.',
|
||||||
'TAG_CLOUD_STEPS': 4,
|
'TAG_CLOUD_STEPS': 4,
|
||||||
'TAG_CLOUD_MAX_ITEMS': 100,
|
'TAG_CLOUD_MAX_ITEMS': 100,
|
||||||
'DIRECT_TEMPLATES': ('index', 'tags', 'categories', 'archives'),
|
'DIRECT_TEMPLATES': ('index', 'tags', 'categories', 'archives'),
|
||||||
'EXTRA_TEMPLATES_PATHS' : [],
|
'EXTRA_TEMPLATES_PATHS': [],
|
||||||
'PAGINATED_DIRECT_TEMPLATES': ('index', ),
|
'PAGINATED_DIRECT_TEMPLATES': ('index', ),
|
||||||
'PELICAN_CLASS': 'pelican.Pelican',
|
'PELICAN_CLASS': 'pelican.Pelican',
|
||||||
'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
||||||
|
|
@ -70,6 +71,7 @@ _DEFAULT_CONFIG = {'PATH': '.',
|
||||||
'DEFAULT_PAGINATION': False,
|
'DEFAULT_PAGINATION': False,
|
||||||
'DEFAULT_ORPHANS': 0,
|
'DEFAULT_ORPHANS': 0,
|
||||||
'DEFAULT_METADATA': (),
|
'DEFAULT_METADATA': (),
|
||||||
|
'FILENAME_METADATA': '(?P<date>\d{4}-\d{2}-\d{2}).*',
|
||||||
'FILES_TO_COPY': (),
|
'FILES_TO_COPY': (),
|
||||||
'DEFAULT_STATUS': 'published',
|
'DEFAULT_STATUS': 'published',
|
||||||
'ARTICLE_PERMALINK_STRUCTURE': '',
|
'ARTICLE_PERMALINK_STRUCTURE': '',
|
||||||
|
|
@ -205,4 +207,12 @@ def configure_settings(settings):
|
||||||
" falling back to the default extension " +
|
" falling back to the default extension " +
|
||||||
_DEFAULT_CONFIG['OUTPUT_SOURCES_EXTENSION'])
|
_DEFAULT_CONFIG['OUTPUT_SOURCES_EXTENSION'])
|
||||||
|
|
||||||
|
filename_metadata = settings.get('FILENAME_METADATA')
|
||||||
|
if filename_metadata and not isinstance(filename_metadata, basestring):
|
||||||
|
logger.error("Detected misconfiguration with FILENAME_METADATA"
|
||||||
|
" setting (must be string or compiled pattern), falling"
|
||||||
|
"back to the default")
|
||||||
|
settings['FILENAME_METADATA'] = \
|
||||||
|
_DEFAULT_CONFIG['FILENAME_METADATA']
|
||||||
|
|
||||||
return settings
|
return settings
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue