Files
easystream-main/__install/add_subtitles_system.sql
SamiAhmed7777 0b7e2d0a5b feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
2025-10-21 00:39:45 -07:00

94 lines
5.2 KiB
SQL

-- ============================================================================
-- EasyStream Subtitle/Caption System Installation
-- ============================================================================
-- This SQL file adds complete subtitle/caption support to EasyStream
--
-- Features:
-- - Multiple subtitle tracks per video (different languages)
-- - Support for .srt and .vtt formats
-- - Auto-generated captions integration
-- - Default language selection
-- - Subtitle enable/disable per video
--
-- Installation:
-- docker exec -i easystream-db mysql -u easystream -peasystream easystream < __install/add_subtitles_system.sql
-- ============================================================================
-- Create subtitles table
CREATE TABLE IF NOT EXISTS `db_subtitles` (
`sub_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`file_id` int(10) unsigned NOT NULL COMMENT 'Foreign key to video/audio/live file',
`file_type` varchar(10) NOT NULL DEFAULT 'video' COMMENT 'video, audio, live, short',
`usr_id` int(10) unsigned NOT NULL COMMENT 'Owner user ID',
`sub_language` varchar(10) NOT NULL DEFAULT 'en' COMMENT 'Language code (en, es, fr, etc.)',
`sub_label` varchar(100) NOT NULL DEFAULT 'English' COMMENT 'Display label (English, Spanish, etc.)',
`sub_filename` varchar(255) NOT NULL COMMENT 'Filename on disk',
`sub_format` varchar(10) NOT NULL DEFAULT 'vtt' COMMENT 'vtt or srt',
`sub_kind` varchar(20) NOT NULL DEFAULT 'subtitles' COMMENT 'subtitles, captions, descriptions',
`sub_default` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Is this the default track?',
`sub_auto_generated` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Auto-generated via speech-to-text',
`sub_filesize` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'File size in bytes',
`upload_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`active` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`sub_id`),
KEY `idx_file_type` (`file_id`, `file_type`),
KEY `idx_usr_id` (`usr_id`),
KEY `idx_language` (`sub_language`),
KEY `idx_active` (`active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Subtitle/caption tracks for videos';
-- Add subtitle settings to config table
INSERT INTO `db_settings` (`setting_name`, `setting_value`, `setting_type`, `setting_category`, `setting_description`, `setting_default`) VALUES
('subtitles_enabled', '1', 'boolean', 'video', 'Enable subtitle/caption uploads for videos', '1'),
('subtitles_max_size', '1048576', 'number', 'video', 'Maximum subtitle file size in bytes (default 1MB)', '1048576'),
('subtitles_allowed_formats', 'vtt,srt', 'text', 'video', 'Allowed subtitle formats (comma-separated)', 'vtt,srt'),
('subtitles_auto_convert', '1', 'boolean', 'video', 'Auto-convert SRT to VTT format', '1'),
('subtitles_max_per_video', '10', 'number', 'video', 'Maximum subtitle tracks per video', '10'),
('subtitles_require_approval', '0', 'boolean', 'video', 'Require admin approval for user-uploaded subtitles', '0')
ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value);
-- Add captions_enabled field to video files if it doesn't exist
ALTER TABLE `db_videofiles`
ADD COLUMN IF NOT EXISTS `captions_enabled` tinyint(1) DEFAULT 1 COMMENT 'Enable captions for this video';
ALTER TABLE `db_shortfiles`
ADD COLUMN IF NOT EXISTS `captions_enabled` tinyint(1) DEFAULT 1 COMMENT 'Enable captions for this short';
ALTER TABLE `db_livefiles`
ADD COLUMN IF NOT EXISTS `captions_enabled` tinyint(1) DEFAULT 1 COMMENT 'Enable captions for this stream';
ALTER TABLE `db_audiofiles`
ADD COLUMN IF NOT EXISTS `captions_enabled` tinyint(1) DEFAULT 1 COMMENT 'Enable captions for this audio';
-- Add subtitle count to files
ALTER TABLE `db_videofiles`
ADD COLUMN IF NOT EXISTS `subtitle_count` int(10) unsigned DEFAULT 0 COMMENT 'Number of subtitle tracks';
ALTER TABLE `db_shortfiles`
ADD COLUMN IF NOT EXISTS `subtitle_count` int(10) unsigned DEFAULT 0 COMMENT 'Number of subtitle tracks';
ALTER TABLE `db_livefiles`
ADD COLUMN IF NOT EXISTS `subtitle_count` int(10) unsigned DEFAULT 0 COMMENT 'Number of subtitle tracks';
ALTER TABLE `db_audiofiles`
ADD COLUMN IF NOT EXISTS `subtitle_count` int(10) unsigned DEFAULT 0 COMMENT 'Number of subtitle tracks';
-- ============================================================================
-- Sample Data (optional - for testing)
-- ============================================================================
-- Uncomment below to add sample subtitle track
-- INSERT INTO `db_subtitles` (`file_id`, `file_type`, `usr_id`, `sub_language`, `sub_label`, `sub_filename`, `sub_format`, `sub_kind`, `sub_default`, `sub_auto_generated`)
-- VALUES (1, 'video', 1, 'en', 'English', 'sample_video_en.vtt', 'vtt', 'subtitles', 1, 0);
-- ============================================================================
-- Indexes for Performance
-- ============================================================================
-- Ensure fast subtitle lookup by file
CREATE INDEX IF NOT EXISTS idx_subtitles_lookup ON `db_subtitles` (`file_id`, `file_type`, `active`, `sub_default`);
-- ============================================================================
-- END OF INSTALLATION
-- ============================================================================