Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import datetime
- import os
- import re
- import shutil
- from pptx import Presentation # requirements: python-pptx
- FILE_PATTERN = r"ECL_Progress_Meeting_\d{8}_문준오.pptx$"
- NEW_FILE_FORMAT = "ECL_Progress_Meeting_{}_문준오.pptx"
- DURATAION_PATTERN = r"\d{4}[.]\d{2}.\d{2}-\d{4}[.]\d{2}.\d{2}"
- def main():
- pattern = re.compile(FILE_PATTERN)
- so_far_latest = max(os.path.join(root, file)
- for root, dirs, files in os.walk(".")
- for file in files if pattern.search(os.path.join(root, file))
- )
- meeting_date = get_next_friday().strftime("%Y%m%d")
- new_filename = NEW_FILE_FORMAT.format(meeting_date)
- create_pptx_with_new_date(so_far_latest, new_filename)
- return
- def get_next_friday(today=datetime.datetime.now()) -> datetime.datetime:
- FRIDAY = 4
- weekday: int = today.weekday()
- if weekday <= FRIDAY:
- friday = today + datetime.timedelta(days=FRIDAY - weekday)
- else:
- friday = today + datetime.timedelta(days=weekday - FRIDAY + 7)
- assert friday.weekday() == FRIDAY
- return friday
- def create_pptx_with_new_date(src_name: str, dst_name: str):
- pattern = re.compile(DURATAION_PATTERN)
- prs = Presentation(src_name)
- cell = next(cell
- for slide in prs.slides
- for shape in slide.shapes if shape.has_table
- for cell in shape.table.iter_cells() if pattern.search(cell.text)
- )
- run = next(run
- for para in cell.text_frame.paragraphs
- for run in para.runs
- )
- run.text = replace_date()
- print(f"New date: {run.text}")
- prs.save(dst_name)
- return
- def replace_date(today=datetime.datetime.now()) -> str:
- end_time = get_next_friday(today)
- start_time = end_time - datetime.timedelta(days=4)
- return f"""{start_time.strftime("%Y.%m.%d")}-{end_time.strftime("%Y.%m.%d")}"""
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement