59 lines
1.1 KiB
Python
59 lines
1.1 KiB
Python
import re
|
|
|
|
from datetime import datetime
|
|
|
|
from markdown import markdown
|
|
|
|
|
|
def create_date(date_str, date_formats=None):
|
|
"""
|
|
2016
|
|
2016.10
|
|
2016.10.10
|
|
-> datetime
|
|
|
|
:param date_str:
|
|
:return:
|
|
"""
|
|
if not date_formats:
|
|
date_formats = [
|
|
'%Y',
|
|
'%Y.%m',
|
|
'%Y.%m.%d'
|
|
]
|
|
|
|
for format in date_formats:
|
|
try:
|
|
return datetime.strptime(date_str, format)
|
|
except:
|
|
continue
|
|
return None
|
|
|
|
|
|
# 2016 На крыльях бабочек
|
|
# 2016.10 На крыльях бабочек
|
|
# 2016.10.10 На крыльях бабочек
|
|
folder_name_pattern = re.compile('([\d.]+)(.*)')
|
|
|
|
|
|
def create_date_and_title_from_folder_name(folder_name, date_formats=None):
|
|
m = folder_name_pattern.findall(folder_name)
|
|
if not m:
|
|
return None, None
|
|
|
|
date_str, title = m[0]
|
|
title = title.strip()
|
|
date = create_date(date_str, date_formats)
|
|
|
|
if not date:
|
|
return None, title
|
|
|
|
return date, title
|
|
|
|
|
|
create_post_from_image_list = lambda images: markdown(
|
|
'\n'.join(map(
|
|
lambda i: ''.format(img=i),
|
|
images
|
|
))
|
|
) |