| |
| """ |
| 修复 generation_handler.py - 恢复原始文件并应用 Google Drive 集成 |
| |
| 这个脚本会: |
| 1. 从 commit 6cb83da 恢复原始文件 |
| 2. 添加 GoogleDriveUploader 导入 |
| 3. 在 __init__ 中初始化 google_drive_uploader |
| 4. 修改缓存逻辑以支持 Google Drive 上传 |
| """ |
|
|
| import requests |
| import re |
|
|
| |
| ORIGINAL_FILE_URL = "https://raw.githubusercontent.com/iudd/Sora2mb/6cb83da03e22ad29ee217b1b556cc8bb08637494/src/services/generation_handler.py" |
|
|
| print("📥 Downloading original generation_handler.py...") |
| response = requests.get(ORIGINAL_FILE_URL) |
| content = response.text |
|
|
| print("✏️ Applying modifications...") |
|
|
| |
| import_pattern = r'(from \.concurrency_manager import ConcurrencyManager\n)' |
| import_replacement = r'\1from .google_drive_uploader import GoogleDriveUploader\n' |
| content = re.sub(import_pattern, import_replacement, content) |
|
|
| |
| init_pattern = r'(self\.file_cache = FileCache\(\s+cache_dir="tmp",\s+default_timeout=config\.cache_timeout,\s+proxy_manager=proxy_manager\s+\)\n)' |
| init_replacement = r'''\1 # 初始化 Google Drive 上传器 |
| self.google_drive_uploader = GoogleDriveUploader() |
| ''' |
| content = re.sub(init_pattern, init_replacement, content, flags=re.MULTILINE | re.DOTALL) |
|
|
| |
| cache_pattern = r'''(\s+# 4\) Cache watermark-free video \(if cache enabled\)\n\s+if config\.cache_enabled:)''' |
|
|
| cache_replacement = r''' |
| # 4) Upload to Google Drive or cache locally |
| if config.google_drive_enabled: |
| try: |
| if stream: |
| yield self._format_stream_chunk( |
| reasoning_content="Uploading watermark-free video to Google Drive...\\n" |
| ) |
| |
| # Upload to Google Drive via Gradio API |
| local_url = await self.google_drive_uploader.upload_file_via_api(watermark_free_url) |
| |
| if local_url: |
| if stream: |
| yield self._format_stream_chunk( |
| reasoning_content=f"✅ Video uploaded to Google Drive successfully!\\n" |
| ) |
| |
| # Delete the published post after upload (best-effort) |
| try: |
| debug_logger.log_info(f"Deleting published post: {post_id}") |
| await self.sora_client.delete_post(post_id, token) |
| debug_logger.log_info(f"Published post deleted successfully: {post_id}") |
| except Exception as delete_error: |
| debug_logger.log_error( |
| error_message=f"Failed to delete published post {post_id}: {str(delete_error)}", |
| status_code=500, |
| response_text=str(delete_error) |
| ) |
| else: |
| # Fallback to watermark-free URL if upload fails |
| local_url = watermark_free_url |
| if stream: |
| yield self._format_stream_chunk( |
| reasoning_content="Warning: Google Drive upload failed. Using watermark-free URL instead...\\n" |
| ) |
| except Exception as upload_error: |
| # Fallback to watermark-free URL if upload fails |
| local_url = watermark_free_url |
| if stream: |
| yield self._format_stream_chunk( |
| reasoning_content=( |
| f"Warning: Failed to upload to Google Drive - {str(upload_error)}\\n" |
| "Using original watermark-free URL instead...\\n" |
| ) |
| ) |
| elif config.cache_enabled: |
| # 原来的本地缓存逻辑保持不变''' |
|
|
| content = re.sub(cache_pattern, cache_replacement, content) |
|
|
| |
| OUTPUT_FILE = "src/services/generation_handler.py" |
| with open(OUTPUT_FILE, 'w', encoding='utf-8') as f: |
| f.write(content) |
|
|
| print(f"✅ File modified and saved to {OUTPUT_FILE}") |
| print("📊 Summary:") |
| print(" - Added GoogleDriveUploader import") |
| print(" - Added google_drive_uploader initialization") |
| print(" - Modified cache logic to support Google Drive upload") |
| print("\n🎯 Next: git add, commit, and push!") |
|
|