Mirror from https://github.com/jopa79/GrabZilla21. No changes made or change in license implied.
|
|
3 maanden geleden | |
|---|---|---|
| .github | 3 maanden geleden | |
| .kiro | 3 maanden geleden | |
| assets | 3 maanden geleden | |
| binaries | 3 maanden geleden | |
| scripts | 3 maanden geleden | |
| src | 3 maanden geleden | |
| styles | 3 maanden geleden | |
| tests | 3 maanden geleden | |
| types | 3 maanden geleden | |
| .gitignore | 3 maanden geleden | |
| ALL_COMMITS_COMPLETE.md | 3 maanden geleden | |
| CLAUDE.md | 3 maanden geleden | |
| COMMIT_SUMMARY.md | 3 maanden geleden | |
| Claude's Plan - Phase 4 Part 2.md | 3 maanden geleden | |
| Claude's Plan - Phase 4.md | 3 maanden geleden | |
| FEATURES.md | 3 maanden geleden | |
| HANDOFF_NOTES.md | 3 maanden geleden | |
| HANDOFF_PACKAGE_MANIFEST.md | 3 maanden geleden | |
| HANDOFF_PACKAGE_README.md | 3 maanden geleden | |
| METADATA_OPTIMIZATION_COMPLETE.md | 3 maanden geleden | |
| METADATA_OPTIMIZATION_SUMMARY.md | 3 maanden geleden | |
| P1_TO_P4_COMPLETION_SUMMARY.md | 3 maanden geleden | |
| PHASE_4_PART_2_COMPLETE.md | 3 maanden geleden | |
| PHASE_4_PART_3_COMPLETE.md | 3 maanden geleden | |
| PHASE_4_PART_3_PLAN.md | 3 maanden geleden | |
| README.md | 3 maanden geleden | |
| SESSION_CONTINUATION.md | 3 maanden geleden | |
| SESSION_JAN7_SETTINGS_AND_COOKIE_FIX.md | 3 maanden geleden | |
| SESSION_OCT5_METADATA_UX_FIX.md | 3 maanden geleden | |
| SUBAGENT_DEMO_SUMMARY.md | 3 maanden geleden | |
| TODO.md | 3 maanden geleden | |
| UNIVERSAL_HANDOFF.md | 3 maanden geleden | |
| VERIFICATION_COMPLETE.md | 3 maanden geleden | |
| index.html | 3 maanden geleden | |
| package-lock.json | 3 maanden geleden | |
| package.json | 3 maanden geleden | |
| performance-report.json | 3 maanden geleden | |
| performance-report.md | 3 maanden geleden | |
| project-state.json | 3 maanden geleden | |
| run-tests.js | 3 maanden geleden | |
| setup.js | 3 maanden geleden | |
| test-batch-large.js | 3 maanden geleden | |
| test-batch-metadata.js | 3 maanden geleden | |
| test-metadata-optimization.js | 3 maanden geleden | |
| verify-project-state.js | 3 maanden geleden | |
| vitest.config.js | 3 maanden geleden |
Production-ready Electron-based YouTube/Vimeo downloader with professional video management interface.
A fully functional standalone desktop application for downloading YouTube and Vimeo videos with a professional dark-themed interface. Built with Electron, featuring smart URL parsing, cookie file support, local binary management, and comprehensive testing for reliable video downloading and conversion.
Status: โ Production Ready - All core functionality implemented, tested, and documented
# Install dependencies
npm install
# Setup binaries (downloads yt-dlp and ffmpeg)
npm run setup
# Run in development mode
npm run dev
# Build for production
npm run build
Run the setup script to automatically download required binaries:
npm run setup
If automatic setup fails, manually place these binaries in ./binaries/:
Platform-specific filenames:
yt-dlp, ffmpegyt-dlp.exe, ffmpeg.exeMake executable on macOS/Linux:
chmod +x binaries/yt-dlp binaries/ffmpeg
# Development mode (with DevTools)
npm run dev
# Production mode
npm start
# Run tests
npm test
npm run test:ui # Test with UI
npm run test:run # Run tests once
# Build for specific platforms
npm run build:mac # macOS
npm run build:win # Windows
npm run build:linux # Linux
App
โโโ Header (branding, window controls)
โโโ InputSection (URL input, config controls)
โโโ VideoList (queue management, status display)
โโโ ControlPanel (bulk actions, download controls)
src/main.js): System integration, IPC handlers, binary executionsrc/preload.js): Secure bridge with contextBridge APIscripts/app.js): UI logic, state management, user interactionsindex.html + styles/main.css): Complete UI with video queue management// Required state structure
const app = {
videos: [], // Video queue array
config: { // User preferences
quality: '720p',
format: 'mp4',
savePath: '',
cookieFile: null
},
ui: { // UI state
isDownloading: false,
selectedVideos: []
}
};
The application is now fully functional with:
Status: โ Production-ready with all core functionality implemented, tested, and actively maintained.
/
โโโ src/ # Electron main process
โ โโโ main.js # Main process with IPC handlers and binary integration
โ โโโ preload.js # Secure contextBridge API for renderer communication
โโโ scripts/ # Application logic and utilities
โ โโโ app.js # Main application class and UI management
โ โโโ components/ # UI component modules
โ โโโ constants/ # Application constants and configuration
โ โ โโโ config.js # App-wide configuration values
โ โโโ core/ # Core application modules
โ โ โโโ event-bus.js # Event system for component communication
โ โโโ models/ # Data models and factories
โ โ โโโ AppState.js # Application state management
โ โ โโโ Video.js # Video object model
โ โ โโโ video-factory.js # Video creation and validation
โ โโโ services/ # External service integrations
โ โ โโโ metadata-service.js # Video metadata fetching with caching
โ โโโ utils/ # Utility modules
โ โโโ accessibility-manager.js # Accessibility and keyboard navigation
โ โโโ app-ipc-methods.js # IPC method definitions
โ โโโ config.js # Configuration management
โ โโโ desktop-notifications.js # System notification integration
โ โโโ download-integration-patch.js # Download functionality patches
โ โโโ enhanced-download-methods.js # Advanced download features
โ โโโ error-handler.js # Error handling and recovery
โ โโโ event-emitter.js # Event system utilities
โ โโโ ffmpeg-converter.js # Video format conversion
โ โโโ ipc-integration.js # IPC communication utilities
โ โโโ ipc-methods-patch.js # IPC method patches
โ โโโ keyboard-navigation.js # Keyboard navigation system
โ โโโ live-region-manager.js # Accessibility live regions
โ โโโ performance.js # Performance monitoring
โ โโโ state-manager.js # State persistence and management
โ โโโ url-validator.js # URL validation and parsing
โโโ binaries/ # Local executables (auto-downloaded)
โ โโโ yt-dlp # YouTube downloader (macOS/Linux)
โ โโโ yt-dlp.exe # YouTube downloader (Windows)
โ โโโ ffmpeg # Video converter (macOS/Linux)
โ โโโ ffmpeg.exe # Video converter (Windows)
โ โโโ README.md # Binary setup instructions
โโโ assets/icons/ # SVG icons and app assets
โ โโโ logo.svg # App logo
โ โโโ add.svg # Add button icon
โ โโโ folder.svg # Folder selection icon
โ โโโ download.svg # Download icon
โ โโโ refresh.svg # Refresh icon
โ โโโ trash.svg # Delete icon
โ โโโ [other icons] # Additional UI element icons
โโโ styles/ # Styling and design system
โ โโโ main.css # Main stylesheet with design system
โ โโโ components/ # Component-specific styles
โ โโโ header.css # Header component styles
โโโ tests/ # Comprehensive test suite
โ โโโ accessibility.test.js # Accessibility and keyboard navigation tests
โ โโโ binary-integration.test.js # yt-dlp and ffmpeg integration tests
โ โโโ cross-platform.test.js # Cross-platform compatibility tests
โ โโโ desktop-notifications.test.js # Desktop notification tests
โ โโโ e2e-playwright.test.js # End-to-end Playwright tests
โ โโโ error-handling.test.js # Error handling and recovery tests
โ โโโ ffmpeg-conversion.test.js # Video conversion tests
โ โโโ integration-workflow.test.js # Complete workflow integration tests
โ โโโ ipc-integration.test.js # IPC communication tests
โ โโโ setup.js # Test setup and configuration
โ โโโ state-management.test.js # State management tests
โ โโโ status-components.test.js # UI component tests
โ โโโ url-validation-simple.test.js # Basic URL validation tests
โ โโโ url-validation.test.js # Advanced URL validation tests
โ โโโ video-model.test.js # Video object model tests
โโโ types/ # TypeScript definitions
โ โโโ electron.d.ts # Electron type definitions
โโโ dist/ # Build output directory
โโโ index.html # Application entry point
โโโ setup.js # Binary download and setup script
โโโ run-tests.js # Test runner script
โโโ vitest.config.js # Vitest configuration
โโโ package.json # Dependencies and build configuration
โโโ README.md # Project documentation
The application follows a streamlined design system based on Apple's Human Interface Guidelines:
All colors use CSS custom properties - never hardcoded values:
/* Primary Colors */
--primary-blue: #155dfc;
--success-green: #00a63e;
--error-red: #e7000b;
/* Backgrounds */
--bg-dark: #1d293d;
--header-dark: #0f172b;
--card-bg: #314158;
--border-color: #45556c;
/* Text */
--text-primary: #ffffff;
--text-secondary: #cad5e2;
--text-muted: #90a1b9;
--text-disabled: #62748e;
youtube.com/watch?v=, youtu.be/, youtube.com/playlist?list=vimeo.com/[id], player.vimeo.com/video/[id]./binaries/yt-dlp and ./binaries/ffmpeg (never system binaries).exe suffix on Windows with proper error handling// Standard binary execution with platform detection
const getBinaryPath = (name) => {
const ext = process.platform === 'win32' ? '.exe' : '';
return `./binaries/${name}${ext}`;
};
const { spawn } = require('child_process');
const ytdlp = spawn(getBinaryPath('yt-dlp'), args, {
stdio: ['pipe', 'pipe', 'pipe']
});
// โ Never use system PATH binaries
// spawn('yt-dlp', args)
// โ
Always use bundled binaries with proper platform detection
// spawn(getBinaryPath('yt-dlp'), args)
Note: UI structure is complete with sample data. Dynamic functionality will be implemented in upcoming tasks starting with Task 5.
The application uses a sophisticated metadata service layer:
# Run all tests
npm test
# Run tests with UI
npm run test:ui
# Run tests once
npm run test:run
# Run specific test suites
npm run test:unit # Unit tests
npm run test:validation # URL validation tests
npm run test:components # Component tests
npm run test:system # System integration tests
npm run test:accessibility # Accessibility tests
npm run test:integration # Integration tests (requires binaries)
npm run test:e2e # End-to-end tests (requires Playwright)
The application includes a complete testing suite with 15+ test files covering:
video-model.test.js): Video object structure and validationstate-management.test.js): Application state handlingurl-validation.test.js, url-validation-simple.test.js): URL parsing and validationstatus-components.test.js): UI component functionalitybinary-integration.test.js): yt-dlp and ffmpeg integrationipc-integration.test.js): Main/renderer process communicationffmpeg-conversion.test.js): Video format conversiondesktop-notifications.test.js): System notificationserror-handling.test.js): Error management and recoverycross-platform.test.js): macOS, Windows, Linux compatibilityaccessibility.test.js): WCAG compliance and keyboard navigationintegration-workflow.test.js): Complete download workflowse2e-playwright.test.js): Complete user workflows with real Electron appThe app can be built for all major platforms using electron-builder:
# Build for current platform
npm run build
# Build for specific platforms
npm run build:mac # macOS DMG
npm run build:win # Windows NSIS installer
npm run build:linux # Linux AppImage
Build Configuration:
dist/com.grabzilla.appassets/icons/logo.png./binaries/yt-dlp and ./binaries/ffmpeg.exe suffix on WindowsMIT License - See LICENSE file for details