diff --git a/core/repair_worker.py b/core/repair_worker.py index 1b4b950b..ee36c93d 100644 --- a/core/repair_worker.py +++ b/core/repair_worker.py @@ -1331,7 +1331,7 @@ class RepairWorker: return {'success': False, 'error': 'Missing album_id or missing_tracks in finding details'} # Phase 1: Gather context from existing album tracks - existing_tracks = self.db.get_tracks_by_album(int(album_id)) + existing_tracks = self.db.get_tracks_by_album(album_id) if not existing_tracks: return {'success': False, 'error': 'No existing tracks found for this album — cannot determine album folder or quality'} @@ -1392,7 +1392,7 @@ class RepairWorker: for cand in candidates: if cand.id in existing_track_ids: continue - if cand.album_id == int(album_id): + if str(cand.album_id) == str(album_id): continue # Fuzzy title match diff --git a/web_server.py b/web_server.py index f2cd2b9a..7f6ab042 100644 --- a/web_server.py +++ b/web_server.py @@ -21592,17 +21592,18 @@ def _on_download_completed(batch_id, task_id, success=True): successful_downloads = finished_count - failed_count add_activity_item("✅", "Download Batch Complete", f"'{playlist_name}' - {successful_downloads} tracks downloaded", "Now") - # Emit batch_complete event for automation engine - try: - if automation_engine: - automation_engine.emit('batch_complete', { - 'playlist_name': playlist_name, - 'total_tracks': str(len(queue)), - 'completed_tracks': str(successful_downloads), - 'failed_tracks': str(failed_count), - }) - except Exception: - pass + # Emit batch_complete event for automation engine (only if something downloaded) + if successful_downloads > 0: + try: + if automation_engine: + automation_engine.emit('batch_complete', { + 'playlist_name': playlist_name, + 'total_tracks': str(len(queue)), + 'completed_tracks': str(successful_downloads), + 'failed_tracks': str(failed_count), + }) + except Exception: + pass # Update YouTube playlist phase to 'download_complete' if this is a YouTube playlist playlist_id = batch.get('playlist_id') @@ -24361,17 +24362,18 @@ def _check_batch_completion_v2(batch_id): successful_downloads = finished_count - failed_count add_activity_item("✅", "Download Batch Complete", f"'{playlist_name}' - {successful_downloads} tracks downloaded", "Now") - # Emit batch_complete event for automation engine - try: - if automation_engine: - automation_engine.emit('batch_complete', { - 'playlist_name': playlist_name, - 'total_tracks': str(len(queue)), - 'completed_tracks': str(successful_downloads), - 'failed_tracks': str(failed_count), - }) - except Exception: - pass + # Emit batch_complete event for automation engine (only if something downloaded) + if successful_downloads > 0: + try: + if automation_engine: + automation_engine.emit('batch_complete', { + 'playlist_name': playlist_name, + 'total_tracks': str(len(queue)), + 'completed_tracks': str(successful_downloads), + 'failed_tracks': str(failed_count), + }) + except Exception: + pass else: print(f"✅ [Completion Check V2] Batch {batch_id} already marked complete - skipping duplicate processing") return True # Already complete