Skip to content

Commit 6d86510

Browse files
committed
Add support for batch processing
Add support for pause and resuming tasks
1 parent 1f7a01f commit 6d86510

File tree

18 files changed

+1723
-374
lines changed

18 files changed

+1723
-374
lines changed

CLI/videocr_cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
# Windows-specific metadata for the executable
1010
# nuitka-project-if: {OS} == "Windows":
1111
# nuitka-project: --file-description="VideOCR CLI"
12-
# nuitka-project: --file-version="1.3.3"
12+
# nuitka-project: --file-version="1.4.0"
1313
# nuitka-project: --product-name="VideOCR-CLI"
14-
# nuitka-project: --product-version="1.3.3"
14+
# nuitka-project: --product-version="1.4.0"
1515
# nuitka-project: --copyright="timminator"
1616

1717
import argparse

VideOCR.py

Lines changed: 965 additions & 316 deletions
Large diffs are not rendered by default.

build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import requests
1212

1313
# --- Configuration ---
14-
APP_VERSION = "1.3.3"
14+
APP_VERSION = "1.4.0"
1515
PADDLE_VERSION = "1.3.2"
1616

1717
SUPPORT_FILES_URLS = {

languages/ar.json

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"tab_video": "معالجة الفيديو",
3+
"tab_batch": "قائمة الانتظار",
34
"tab_advanced": "الإعدادات المتقدمة",
45
"tab_about": "حول",
56

6-
"lbl_video_path": "ملف الفيديو:",
7+
"lbl_source": "المصدر:",
78
"lbl_output_srt": "إخراج SRT:",
89
"lbl_sub_lang": "لغة الترجمة:",
910
"lbl_sub_pos": "موضع الترجمة:",
@@ -76,19 +77,43 @@
7677
"tip_send_notification": "إرسال إشعار عند اكتمال العملية.",
7778
"chk_check_updates": "فحص التحديثات عند البدء",
7879
"tip_check_updates": "فحص تلقائي لإصدارات جديدة من VideOCR عند بدء التطبيق.",
79-
"btn_browse": "تصفح...",
80+
81+
"btn_browse": "فتح ملف...",
82+
"btn_browse_folder": "فتح مجلد...",
8083
"btn_save_as": "حفظ باسم...",
8184
"btn_check_now": "فحص الآن",
8285
"btn_ok": "موافق",
8386
"btn_dismiss": "إغلاق",
87+
"btn_add_to_queue": "إضافة لقائمة الانتظار",
88+
"btn_add_all_to_queue": "إضافة الكل للقائمة",
89+
"btn_pause": "إيقاف مؤقت",
90+
"btn_resume": "استئناف",
91+
92+
"lbl_queue_title": "قائمة الانتظار",
93+
"col_video_file": "ملف الفيديو",
94+
"col_output_file": "ملف الإخراج",
95+
"col_status": "الحالة",
96+
"btn_start_queue": "بدء القائمة",
97+
"btn_stop_queue": "إيقاف القائمة",
98+
"btn_reset": "إعادة ضبط",
99+
"btn_edit": "تعديل",
100+
"btn_remove": "إزالة",
101+
"btn_clear_queue": "مسح القائمة",
102+
103+
"tip_batch_up": "تحريك المهمة المحددة للأعلى",
104+
"tip_batch_down": "تحريك المهمة المحددة للأسفل",
105+
"tip_batch_reset": "إعادة ضبط مهمة ملغاة",
106+
"tip_batch_edit": "إرسال المهمة للنافذة الرئيسية للتعديل",
107+
"tip_batch_remove": "إزالة المهمة المحددة من القائمة",
108+
"tip_batch_clear": "مسح القائمة الحالية",
84109

85110
"lbl_about_version": "الإصدار: {version}",
86111
"lbl_get_newest": "احصل على أحدث إصدار هنا:",
87112
"lbl_bug_report": "وجدت خطأ أو لديك اقتراح؟ افتح مشكلة هنا:",
88113

89114
"help_title": "معلومات القطع",
90115
"help_message": "ارسم صندوق قطع فوق منطقة الترجمة في الفيديو.\nاستخدم النقر+السحب للتحديد.\nفي وضع 'المنطقة المزدوجة'، يمكنك رسم صندوقي قطع.\nإذا لم يتم تحديد صندوق قطع، سيتم استخدام الثلث السفلي من الفيديو\nلـ OCR افتراضياً.",
91-
116+
92117
"update_title": "تحديث متاح",
93118
"update_available_1": "إصدار جديد من VideOCR ({}) متاح!",
94119
"update_available_2": "أنت تستخدم حالياً الإصدار {}.",
@@ -106,8 +131,12 @@
106131
"status_success": "تم إنشاء ملف الترجمة بنجاح!\n",
107132
"status_cancelling": "\nإلغاء العملية...\n",
108133
"status_cancelled": "\nتم إلغاء العملية بواسطة المستخدم.\n",
134+
"status_resuming": "\nاستئناف العملية...\n",
135+
"status_pausing": "\nإيقاف العملية مؤقتاً...\n",
109136
"notification_title": "إنشاء الترجمة اكتمل!",
110-
137+
"batch_processing_file": "جاري معالجة",
138+
"batch_finished_count": "اكتملت الدفعة: تمت معالجة {} ملفات.",
139+
111140
"progress_step1": "الخطوة 1: تمت معالجة الصورة {current} من {total} ({percent}%)",
112141
"progress_step2": "الخطوة 2: تم تنفيذ OCR على الصورة {current} من {total} ({percent}%)",
113142
"progress_vfr": "تم ربط الإطار {current} من {total} ({percent}%)",
@@ -139,13 +168,34 @@
139168
"error_already_running": "العملية تعمل بالفعل.\n",
140169
"error_cancel": "\nخطأ في محاولة إلغاء العملية: {}\n",
141170
"error_no_process_to_cancel": "\nلا توجد عملية قيد التشغيل للإلغاء.\n",
142-
171+
"title_error": "خطأ",
172+
143173
"val_err_header": "أخطاء التحقق:\n",
144174
"val_err_start_time": "تنسيق وقت البداية غير صالح. استخدم MM:SS أو HH:MM:SS.",
145175
"val_err_end_time": "تنسيق وقت النهاية غير صالح. استخدم MM:SS أو HH:MM:SS.",
146176
"val_err_start_exceeds": "وقت البداية ({}) يتجاوز مدة الفيديو ({}).",
147177
"val_err_end_exceeds": "وقت النهاية ({}) يتجاوز مدة الفيديو ({}).",
148178
"val_err_start_after_end": "وقت البداية لا يمكن أن يكون بعد وقت النهاية.",
149179
"val_err_numeric": "قيمة غير صالحة لـ {}. يجب أن تكون {} {} {}.",
150-
"val_err_dual_zone": "OCR المنطقة المزدوجة مُفعل، لكن لم يتم تحديد صندوقي قطع.\n"
180+
"val_err_dual_zone": "OCR المنطقة المزدوجة مُفعل، لكن لم يتم تحديد صندوقي قطع.\n",
181+
"err_crop_x_out": "{} X ({}) خارج عرض الفيديو ({}).",
182+
"err_crop_y_out": "{} Y ({}) خارج ارتفاع الفيديو ({}).",
183+
"err_crop_w_out": "{} يمتد خارج الحدود (X+W > العرض).",
184+
"err_crop_h_out": "{} يمتد خارج الحدود (Y+H > الارتفاع).",
185+
186+
"title_duplicate": "تكرار",
187+
"msg_duplicate_queue": "توجد مهمة لـ '{}' بالفعل في القائمة.\n\nيرجى تغيير مسار الإخراج أو حذف المهمة من القائمة.",
188+
"title_duplicate_job": "مهمة مكررة",
189+
"popup_duplicate_msg": "توجد مهمة لملف الإخراج هذا بالفعل (الحالة: {}).\n\nهل تريد إعادة تشغيلها بالإعدادات الحالية؟",
190+
"popup_cannot_remove_running": "لا يمكن إزالة المهمة الجاري تشغيلها أو المتوقفة مؤقتاً حالياً.\nيرجى إيقاف أو إلغاء العملية أولاً.",
191+
192+
"title_progress": "تقدم",
193+
"msg_scanning_init": "جاري بدء المسح...",
194+
"msg_scanning_progress": "جاري مسح الملف {} من {}...",
195+
"reason_dup_path": "مسار إخراج مكرر",
196+
"reason_no_track": "لا يوجد مسار فيديو",
197+
"reason_metadata": "خطأ في البيانات الوصفية",
198+
"title_batch_report": "تقرير الدفعة",
199+
"msg_batch_report_summary": "تمت إضافة {} فيديو.\n\nتم تخطي {} فيديو:\n",
200+
"msg_and_others": "...وغيرها."
151201
}

languages/ch.json

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"tab_video": "处理视频",
3+
"tab_batch": "队列",
34
"tab_advanced": "高级设置",
45
"tab_about": "关于",
56

6-
"lbl_video_path": "视频文件",
7+
"lbl_source": "",
78
"lbl_output_srt": "输出 SRT:",
89
"lbl_sub_lang": "字幕语言:",
910
"lbl_sub_pos": "文本对齐:",
@@ -76,11 +77,35 @@
7677
"tip_send_notification": "处理完成后发送通知。",
7778
"chk_check_updates": "启动时检查更新",
7879
"tip_check_updates": "应用启动时自动检查 VideOCR 的新版本。",
79-
"btn_browse": "浏览...",
80+
81+
"btn_browse": "打开文件...",
82+
"btn_browse_folder": "打开文件夹...",
8083
"btn_save_as": "另存为...",
8184
"btn_check_now": "立即检查",
8285
"btn_ok": "确定",
8386
"btn_dismiss": "关闭",
87+
"btn_add_to_queue": "添加到队列",
88+
"btn_add_all_to_queue": "全部添加到队列",
89+
"btn_pause": "暂停",
90+
"btn_resume": "继续",
91+
92+
"lbl_queue_title": "队列",
93+
"col_video_file": "视频文件",
94+
"col_output_file": "输出文件",
95+
"col_status": "状态",
96+
"btn_start_queue": "开始队列",
97+
"btn_stop_queue": "停止队列",
98+
"btn_reset": "重置",
99+
"btn_edit": "编辑",
100+
"btn_remove": "移除",
101+
"btn_clear_queue": "清空队列",
102+
103+
"tip_batch_up": "将选中的任务向上移动",
104+
"tip_batch_down": "将选中的任务向下移动",
105+
"tip_batch_reset": "重置已取消的任务",
106+
"tip_batch_edit": "将任务发送回主窗口进行编辑",
107+
"tip_batch_remove": "从队列中移除选中的任务",
108+
"tip_batch_clear": "清空当前队列",
84109

85110
"lbl_about_version": "版本:{version}",
86111
"lbl_get_newest": "获取最新版本:",
@@ -106,7 +131,11 @@
106131
"status_success": "字幕文件生成成功!\n",
107132
"status_cancelling": "\n正在取消进程...\n",
108133
"status_cancelled": "\n进程已被用户取消。\n",
134+
"status_resuming": "\n正在恢复进程...\n",
135+
"status_pausing": "\n正在暂停进程...\n",
109136
"notification_title": "字幕生成完成!",
137+
"batch_processing_file": "正在处理",
138+
"batch_finished_count": "批量处理完成:已处理 {} 个文件。",
110139

111140
"progress_step1": "步骤 1:已处理图像 {current} / {total} ({percent}%)",
112141
"progress_step2": "步骤 2:已对图像 {current} / {total} 进行 OCR ({percent}%)",
@@ -139,6 +168,7 @@
139168
"error_already_running": "进程已在运行。\n",
140169
"error_cancel": "\n尝试取消进程时出错:{}\n",
141170
"error_no_process_to_cancel": "\n当前没有可取消的进程。\n",
171+
"title_error": "错误",
142172

143173
"val_err_header": "验证错误:\n",
144174
"val_err_start_time": "无效的开始时间格式。请使用 MM:SS 或 HH:MM:SS。",
@@ -147,5 +177,25 @@
147177
"val_err_end_exceeds": "结束时间 ({}) 超过视频时长 ({})。",
148178
"val_err_start_after_end": "开始时间不能晚于结束时间。",
149179
"val_err_numeric": "{} 的值无效。必须为 {} {} {}。",
150-
"val_err_dual_zone": "已启用双区域 OCR,但未选择两个字幕选区。\n"
180+
"val_err_dual_zone": "已启用双区域 OCR,但未选择两个字幕选区。\n",
181+
"err_crop_x_out": "{} X ({}) 超出视频宽度 ({})。",
182+
"err_crop_y_out": "{} Y ({}) 超出视频高度 ({})。",
183+
"err_crop_w_out": "{} 超出边界 (X+W > 宽度)。",
184+
"err_crop_h_out": "{} 超出边界 (Y+H > 高度)。",
185+
186+
"title_duplicate": "重复",
187+
"msg_duplicate_queue": "队列中已存在 '{}' 的任务。\n\n请更改输出路径或从队列中删除该任务。",
188+
"title_duplicate_job": "重复任务",
189+
"popup_duplicate_msg": "该输出文件的任务已存在(状态:{})。\n\n是否要使用当前设置重新启动它?",
190+
"popup_cannot_remove_running": "无法移除当前正在运行或暂停的任务。\n请先停止或取消进程。",
191+
192+
"title_progress": "进度",
193+
"msg_scanning_init": "正在初始化扫描...",
194+
"msg_scanning_progress": "正在扫描第 {} 个文件(共 {} 个)...",
195+
"reason_dup_path": "重复的输出路径",
196+
"reason_no_track": "无视频轨道",
197+
"reason_metadata": "元数据错误",
198+
"title_batch_report": "批量报告",
199+
"msg_batch_report_summary": "已添加 {} 个视频。\n\n已跳过 {} 个视频:\n",
200+
"msg_and_others": "...以及其他。"
151201
}

languages/de.json

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"tab_video": "Video verarbeiten",
3+
"tab_batch": "Warteschlange",
34
"tab_advanced": "Erweiterte Einstellungen",
45
"tab_about": "Über",
56

6-
"lbl_video_path": "Videodatei:",
7+
"lbl_source": "Quelle:",
78
"lbl_output_srt": "SRT-Ausgabe:",
89
"lbl_sub_lang": "Untertitelsprache:",
910
"lbl_sub_pos": "Untertitelposition:",
@@ -76,11 +77,35 @@
7677
"tip_send_notification": "Sendet eine Benachrichtigung, wenn der Vorgang abgeschlossen ist.",
7778
"chk_check_updates": "Beim Start nach Updates suchen",
7879
"tip_check_updates": "Prüft beim Start der Anwendung automatisch, ob neue Versionen von VideOCR verfügbar sind.",
79-
"btn_browse": "Durchsuchen...",
80+
81+
"btn_browse": "Datei öffnen...",
82+
"btn_browse_folder": "Ordner öffnen...",
8083
"btn_save_as": "Speichern unter...",
8184
"btn_check_now": "Jetzt prüfen",
8285
"btn_ok": "OK",
8386
"btn_dismiss": "Schließen",
87+
"btn_add_to_queue": "Zur Warteschlange hinzufügen",
88+
"btn_add_all_to_queue": "Alle zur Warteschlange hinzufügen",
89+
"btn_pause": "Pause",
90+
"btn_resume": "Fortsetzen",
91+
92+
"lbl_queue_title": "Warteschlange",
93+
"col_video_file": "Videodatei",
94+
"col_output_file": "Ausgabedatei",
95+
"col_status": "Status",
96+
"btn_start_queue": "Warteschlange starten",
97+
"btn_stop_queue": "Warteschlange stoppen",
98+
"btn_reset": "Zurücksetzen",
99+
"btn_edit": "Bearbeiten",
100+
"btn_remove": "Entfernen",
101+
"btn_clear_queue": "Warteschlange leeren",
102+
103+
"tip_batch_up": "Den ausgewählten Auftrag in der Warteschlange nach oben verschieben",
104+
"tip_batch_down": "Den ausgewählten Auftrag in der Warteschlange nach unten verschieben",
105+
"tip_batch_reset": "Einen abgebrochenen Auftrag zurücksetzen",
106+
"tip_batch_edit": "Den Auftrag zur Bearbeitung zurück ins Hauptfenster senden",
107+
"tip_batch_remove": "Ausgewählten Auftrag aus der Warteschlange entfernen",
108+
"tip_batch_clear": "Die aktuelle Warteschlange leeren",
84109

85110
"lbl_about_version": "Version: {version}",
86111
"lbl_get_newest": "Laden Sie die neueste Version hier herunter:",
@@ -106,7 +131,11 @@
106131
"status_success": "Untertiteldatei erfolgreich erstellt!\n",
107132
"status_cancelling": "\nVorgang wird abgebrochen...\n",
108133
"status_cancelled": "\nVorgang vom Benutzer abgebrochen.\n",
134+
"status_resuming": "\nVorgang wird fortgesetzt...\n",
135+
"status_pausing": "\nVorgang wird pausiert...\n",
109136
"notification_title": "Die Erstellung Ihrer Untertitel ist abgeschlossen!",
137+
"batch_processing_file": "Verarbeite",
138+
"batch_finished_count": "Batch abgeschlossen: {} Dateien verarbeitet.",
110139

111140
"progress_step1": "Schritt 1: Bild {current} von {total} verarbeitet ({percent}%)",
112141
"progress_step2": "Schritt 2: OCR auf Bild {current} von {total} durchgeführt ({percent}%)",
@@ -139,6 +168,7 @@
139168
"error_already_running": "Vorgang läuft bereits.\n",
140169
"error_cancel": "\nFehler beim Versuch, den Vorgang abzubrechen: {}\n",
141170
"error_no_process_to_cancel": "\nEs läuft kein Vorgang, der abgebrochen werden kann.\n",
171+
"title_error": "Fehler",
142172

143173
"val_err_header": "Validierungsfehler:\n",
144174
"val_err_start_time": "Ungültiges Startzeit-Format. Verwenden Sie MM:SS oder HH:MM:SS.",
@@ -147,5 +177,25 @@
147177
"val_err_end_exceeds": "Endzeit ({}) überschreitet die Videodauer ({}).",
148178
"val_err_start_after_end": "Startzeit darf nicht nach der Endzeit liegen.",
149179
"val_err_numeric": "Ungültiger Wert für {}. Muss {} {} {} sein.",
150-
"val_err_dual_zone": "Dual-Zone-OCR ist aktiviert, aber es wurden nicht 2 Zuschneidebereiche ausgewählt.\n"
180+
"val_err_dual_zone": "Dual-Zone-OCR ist aktiviert, aber es wurden nicht 2 Zuschneidebereiche ausgewählt.\n",
181+
"err_crop_x_out": "{} X ({}) liegt außerhalb der Videobreite ({}).",
182+
"err_crop_y_out": "{} Y ({}) liegt außerhalb der Videohöhe ({}).",
183+
"err_crop_w_out": "{} ragt über den Rand hinaus (X+B > Breite).",
184+
"err_crop_h_out": "{} ragt über den Rand hinaus (Y+H > Höhe).",
185+
186+
"title_duplicate": "Duplikat",
187+
"msg_duplicate_queue": "Ein Auftrag für '{}' befindet sich bereits in der Warteschlange.\n\nBitte ändern Sie den Ausgabepfad oder löschen Sie den Auftrag aus der Warteschlange.",
188+
"title_duplicate_job": "Doppelter Auftrag",
189+
"popup_duplicate_msg": "Ein Auftrag für diese Ausgabedatei existiert bereits (Status: {}).\n\nMöchten Sie ihn mit den aktuellen Einstellungen neu starten?",
190+
"popup_cannot_remove_running": "Der aktuell laufende oder pausierte Auftrag kann nicht entfernt werden.\nBitte stoppen oder brechen Sie den Vorgang zuerst ab.",
191+
192+
"title_progress": "Fortschritt",
193+
"msg_scanning_init": "Initialisiere Scan...",
194+
"msg_scanning_progress": "Scanne Datei {} von {}...",
195+
"reason_dup_path": "Doppelter Ausgabepfad",
196+
"reason_no_track": "Keine Videospur",
197+
"reason_metadata": "Metadaten-Fehler",
198+
"title_batch_report": "Batch-Bericht",
199+
"msg_batch_report_summary": "{} Videos hinzugefügt.\n\n{} Video(s) übersprungen:\n",
200+
"msg_and_others": "...und weitere."
151201
}

0 commit comments

Comments
 (0)