diff --git a/src/server/services/bulk_service.py b/src/server/services/bulk_service.py deleted file mode 100644 index 04f6f62..0000000 --- a/src/server/services/bulk_service.py +++ /dev/null @@ -1,1122 +0,0 @@ -""" -Bulk Operations Manager for Multiple Series Management - -This module provides bulk operation capabilities for managing multiple series -simultaneously, including batch downloads, deletions, updates, and organization. -""" - -from typing import List, Dict, Any, Optional, Set -import asyncio -import json -import os -from datetime import datetime -import threading -from concurrent.futures import ThreadPoolExecutor -import time - -class BulkOperationsManager: - """Manages bulk operations for multiple series.""" - - def __init__(self, app=None): - self.app = app - self.active_operations = {} - self.operation_history = [] - self.max_concurrent_operations = 5 - self.executor = ThreadPoolExecutor(max_workers=self.max_concurrent_operations) - - def init_app(self, app): - """Initialize with Flask app.""" - self.app = app - - def get_bulk_operations_js(self): - """Generate JavaScript code for bulk operations functionality.""" - return """ -// AniWorld Bulk Operations Manager -class BulkOperationsManager { - constructor() { - this.selectedItems = new Set(); - this.operations = new Map(); - this.init(); - } - - init() { - this.setupSelectionControls(); - this.setupBulkActions(); - this.setupOperationProgress(); - this.setupKeyboardShortcuts(); - } - - setupSelectionControls() { - // Add selection checkboxes to series items - const seriesItems = document.querySelectorAll('.series-item, .anime-card'); - seriesItems.forEach(item => { - this.addSelectionCheckbox(item); - }); - - // Add bulk selection controls - this.createBulkSelectionBar(); - - // Setup click handlers - document.addEventListener('click', this.handleItemClick.bind(this)); - document.addEventListener('change', this.handleCheckboxChange.bind(this)); - } - - addSelectionCheckbox(item) { - if (item.querySelector('.bulk-select-checkbox')) return; - - const checkbox = document.createElement('input'); - checkbox.type = 'checkbox'; - checkbox.className = 'bulk-select-checkbox form-check-input position-absolute'; - checkbox.style.top = '10px'; - checkbox.style.left = '10px'; - checkbox.style.zIndex = '10'; - checkbox.dataset.itemId = item.dataset.seriesId || item.dataset.id; - - item.style.position = 'relative'; - item.appendChild(checkbox); - } - - createBulkSelectionBar() { - const existingBar = document.querySelector('.bulk-selection-bar'); - if (existingBar) return; - - const selectionBar = document.createElement('div'); - selectionBar.className = 'bulk-selection-bar bg-primary text-white p-3 mb-3 rounded d-none'; - selectionBar.innerHTML = ` -
Searching...
-No results found. Try adjusting your search terms or filters.
-No saved searches
'; - return; - }} - - const searches = Object.entries(this.savedSearches).map(([id, search]) => ` -