"""Verification script for midnight video downloads.""" import sys import logging from scheduled_tasks import check_and_download_latest_videos from database import SessionLocal from models import Channel, VideoEntry, DownloadStatus # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def verify_task(): logger.info("Starting verification...") # Run the task synchronously check_and_download_latest_videos() logger.info("Task completed. Checking database...") session = SessionLocal() try: channels = session.query(Channel).all() for channel in channels: logger.info(f"Checking channel: {channel.title}") # Get latest video latest_video = session.query(VideoEntry)\ .filter_by(channel_id=channel.id)\ .order_by(VideoEntry.published_at.desc())\ .first() if latest_video: logger.info(f" Latest video: {latest_video.title}") logger.info(f" Status: {latest_video.download_status.value}") # Check if it was queued (status should be DOWNLOADING or COMPLETED if it was fast enough, # or PENDING if the worker hasn't picked it up yet but the task logic ran. # Wait, the task logic calls .delay(), so the status update happens in download_video task. # The scheduled task only queues it. # However, since we are running without a worker, .delay() might just push to Redis. # But wait, if we want to verify the logic of the scheduled task, we just need to see if it CALLED .delay(). # We can't easily check that without mocking or checking side effects. # But we can check if new videos were added (fetched). pass else: logger.info(" No videos found.") finally: session.close() if __name__ == "__main__": verify_task()