from django.core.management.base import BaseCommand
from user_management.models import Video
from user_management.tasks import publish_scheduled_video

class Command(BaseCommand):
    help = '手动发布视频'
    
    def add_arguments(self, parser):
        parser.add_argument('video_id', type=int, help='视频ID')
    
    def handle(self, *args, **options):
        video_id = options['video_id']
        
        try:
            # 获取视频对象
            video = Video.objects.get(id=video_id)
        except Video.DoesNotExist:
            self.stderr.write(self.style.ERROR(f'错误: 未找到ID为{video_id}的视频'))
            return
            
        # 检查视频状态是否允许发布
        if video.status not in ['draft', 'scheduled']:
            self.stderr.write(self.style.ERROR(
                f'错误: 当前视频状态为 {video.get_status_display()}，无法发布'
            ))
            return
            
        self.stdout.write(f'开始发布视频 "{video.title}" (ID: {video.id})...')
        
        # 执行发布任务
        try:
            result = publish_scheduled_video(video.id)
            
            if isinstance(result, dict) and result.get('success', False):
                self.stdout.write(self.style.SUCCESS(
                    f'视频发布成功!\n'
                    f'标题: {video.title}\n'
                    f'平台: {video.platform_account.get_platform_name_display()}\n'
                    f'账号: {video.platform_account.account_name}\n'
                    f'视频链接: {result.get("video_url")}\n'
                    f'发布时间: {result.get("publish_time")}'
                ))
            else:
                self.stderr.write(self.style.ERROR(
                    f'发布失败: {result.get("error", "未知错误")}'
                ))
                
        except Exception as e:
            self.stderr.write(self.style.ERROR(f'发布过程中出错: {str(e)}')) 