Files
sena_background_controller/README.md
silverpro89 781629cd43 update
2025-12-30 20:35:29 +07:00

5.0 KiB

🎬 Sena Background Controller

Video Background Controller - Hệ thống quản lý video backgrounds với tính năng upload, metadata management và tích hợp Meilisearch.

📋 Tính năng

  • Upload video files lên server
  • Lưu trữ video trong folder public/
  • Quản lý metadata chi tiết cho mỗi video
  • Tự động tạo file JSON metadata cho Meilisearch
  • Tìm kiếm theo topic, category, theme, colors, tags
  • RESTful API để quản lý videos
  • Giao diện web đẹp và dễ sử dụng

🚀 Cài đặt

1. Clone repository

git clone <repository-url>
cd sena_background_controller

2. Cài đặt dependencies

npm install

3. Khởi động server

npm start

Hoặc dùng nodemon để tự động reload:

npm run dev

Server sẽ chạy tại: http://localhost:3000

📁 Cấu trúc thư mục

sena_background_controller/
├── data/                    # Data directory (original)
├── public/                  # Uploaded video files
├── metadata/                # JSON metadata files
├── src/
│   ├── index.html          # Web interface
│   └── server.js           # Express server
├── package.json
└── README.md

🎯 Sử dụng

1. Upload Video qua Web Interface

  1. Mở trình duyệt và truy cập: http://localhost:3000
  2. Chọn video file
  3. Điền thông tin metadata:
    • Topic: Chủ đề của video (VD: Nature, Technology, Abstract)
    • Category: Danh mục (Abstract, Nature, Technology, Urban, etc.)
    • Theme: Dark hoặc Light
    • Colors: Chọn các màu nền có trong video (Blue, Green, Yellow, Red, Purple, Orange, Pink, Black, White)
    • Tags: Các tag bổ sung (phân cách bằng dấu phẩy)
  4. Click "Upload Video & Generate Metadata"

2. API Endpoints

Upload Video

POST http://localhost:3000/upload
Content-Type: multipart/form-data

Form Data:
- video: [video file]
- topic: "Nature Landscape"
- category: "nature"
- theme: "light"
- colors: ["blue", "green"]
- tags: ["4k", "loop", "smooth"]

Lấy danh sách tất cả videos

GET http://localhost:3000/videos

Lấy thông tin 1 video

GET http://localhost:3000/video/:id

Xóa video

DELETE http://localhost:3000/video/:id

Lấy tất cả metadata cho Meilisearch

GET http://localhost:3000/meilisearch/update

🔍 Tích hợp Meilisearch

1. Cài đặt Meilisearch

Trên Windows:

# Download từ GitHub releases
# hoặc dùng curl
curl -L https://install.meilisearch.com | sh

Trên macOS:

brew install meilisearch

Trên Linux:

curl -L https://install.meilisearch.com | sh

2. Khởi động Meilisearch

meilisearch --master-key="YOUR_MASTER_KEY"

Meilisearch sẽ chạy tại: http://localhost:7700

3. Tạo Index và Upload Documents

Sử dụng Meilisearch API hoặc SDK để tạo index và upload metadata:

const { MeiliSearch } = require('meilisearch');

const client = new MeiliSearch({
  host: 'http://localhost:7700',
  apiKey: 'YOUR_MASTER_KEY',
});

// Tạo index
const index = client.index('videos');

// Lấy tất cả metadata từ server
fetch('http://localhost:3000/meilisearch/update')
  .then(res => res.json())
  .then(data => {
    // Upload documents lên Meilisearch
    index.addDocuments(data.documents);
  });

4. Cấu hình Searchable Attributes

index.updateSearchableAttributes([
  'topic',
  'category',
  'theme',
  'colors',
  'tags',
  'searchableText'
]);

index.updateFilterableAttributes([
  'category',
  'theme',
  'colors'
]);

5. Tìm kiếm Videos

// Tìm kiếm theo text
const results = await index.search('nature blue');

// Tìm kiếm với filters
const results = await index.search('landscape', {
  filter: ['theme = dark', 'colors = blue']
});

📝 Format Metadata JSON

Mỗi video sẽ có 1 file JSON metadata với format sau:

{
  "id": "video_1703925601234",
  "filename": "nature_landscape_1703925601234.mp4",
  "originalName": "nature_landscape.mp4",
  "path": "/public/nature_landscape_1703925601234.mp4",
  "size": 52428800,
  "mimetype": "video/mp4",
  "topic": "Nature Landscape",
  "category": "nature",
  "theme": "light",
  "colors": ["blue", "green"],
  "tags": ["4k", "loop", "smooth"],
  "uploadedAt": "2023-12-30T10:00:01.234Z",
  "searchableText": "Nature Landscape nature light blue green 4k loop smooth"
}

🎨 Danh sách Categories

  • Abstract
  • Nature
  • Technology
  • Urban
  • Particles
  • Gradient
  • Geometric
  • Animation
  • Other

🎨 Danh sách Colors

  • Blue (🔵)
  • Green (🟢)
  • Yellow (🟡)
  • Red (🔴)
  • Purple (🟣)
  • Orange (🟠)
  • Pink (🌸)
  • Black ()
  • White ()

🛠️ Technologies

  • Backend: Node.js + Express
  • File Upload: Multer
  • Search: Meilisearch
  • Frontend: HTML5 + CSS3 + Vanilla JavaScript

📄 License

ISC