50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
import argparse
|
|
import sys
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
import structlog
|
|
from sqlmodel import Session, select
|
|
|
|
# Add the src directory to the system path
|
|
sys.path.append(str(Path(__file__).resolve().parent.parent / "src"))
|
|
|
|
import models as models
|
|
|
|
log = structlog.get_logger()
|
|
|
|
|
|
def update_pub_date(episode_id: str, new_date: str):
|
|
with Session(models.engine) as session:
|
|
episode = session.exec(
|
|
select(models.PodcastEpisode).where(models.PodcastEpisode.id == episode_id)
|
|
).first()
|
|
|
|
if episode is None:
|
|
log.error("Could not find episode")
|
|
return
|
|
|
|
episode.publish_date = datetime.fromisoformat(new_date)
|
|
assert episode.publish_date.tzinfo is not None, "timezone is required"
|
|
|
|
session.add(episode)
|
|
session.commit()
|
|
|
|
log.info("Updated episode", episode.id)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
prog="update-pub-date.py",
|
|
description="Update an episode publish date",
|
|
)
|
|
parser.add_argument("episode_id")
|
|
parser.add_argument("new_date")
|
|
|
|
args = parser.parse_args()
|
|
|
|
update_pub_date(args.episode_id, args.new_date)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|