Unlike other video scraping libraries, HideVideo, a personal lightweight video management system, places greater emphasis on the collection of various personal videos.
![]() |
![]() |
![]() |
![]() |
- Backend: Go, Gin, GORM, SQLite3
- Video Processing: FFmpeg
docker run -d \
-v $(pwd)/data:/app/data \
-p 49377:49377 \
--name hidevideo \
--restart unless-stopped \
pureages/hidevideo:latest
docker exec hidevideo apt-get update
docker exec hidevideo apt-get install -y ffmpeg
docker exec hidevideo rm -rf /var/lib/apt/lists/*
Note: (1)The directory for adding video libraries is /app/data/……, and your video folder should be placed in $(pwd)/data(2)$(pwd) defaults to your username, but you can also customize the path!
- Go 1.18+
- FFmpeg (for video processing and cover generation)
- FFprobe (for video info parsing)
git clone https://github.com/pureages/HideVideo.git
cd HideVideogo mod tidy
go run main.goBackend will start at http://localhost:49377
Open browser to http://localhost:49377 (or: <your-server-ip>:49377)
Default admin account:
- Username: admin
- Password: admin123
- User Authentication - Login/logout with admin and member roles
- Video Library Management - Add/remove local video libraries, scan videos, generate covers
- Folder Mode - Browse video hierarchy like a local file manager
- Tag Management - (admin only) - Multi-tag filtering, tag reordering
- Actor Management - (admin only) - Actor library management, link videos, view actor filmography
- Sorting - Sort by creation time, play count, rating, or random
- Search - Search by tag/video name/video ID
- Video Display - Pagination, grid configuration (3x4, 4x3, 5x3, 6x3)
- Video Playback - Popup player, seek, playback speed, fullscreen, click to play/pause
- Rating & Comments - 10-point rating system, comment functionality
- Icon Generation - Auto-generate video icons
- User Management (admin only) - Add/delete users
- Settings Page - Basic settings, security settings (change password)
- Preference Persistence - Home sorting, items per page, grid columns, tag columns auto-saved
- Video Streaming - Public access, no login required
- Clean Invalid Indexes - Clean up database indexes for deleted videos
POST /api/auth/login- LoginPOST /api/auth/logout- LogoutGET /api/auth/check- Check login status
GET /api/libraries- Get video library listPOST /api/libraries- Add video libraryDELETE /api/libraries/:id- Delete video libraryPOST /api/libraries/:id/scan- Scan video libraryPOST /api/libraries/:id/cover- Generate coversPOST /api/libraries/:id/icon- Generate iconsPOST /api/libraries/clean-invalid- Clean invalid indexesGET /api/libraries/:id/files- Get library file listGET /api/libraries/:id/path- Get library path
GET /api/videos- Get video listGET /api/videos/folders- Get folder treeGET /api/videos/by-path- Get videos by pathGET /api/videos/:id- Get video detailsGET /videos/:id/stream- Video streamingPUT /api/videos/:id/rating- Update ratingPUT /api/videos/:id/filename- Rename videoPOST /api/videos/:id/play- Increment play countDELETE /api/videos/:id- Delete video
GET /api/videos/:id/tags- Get video tagsPOST /api/videos/:id/tags- Add video tagDELETE /api/videos/:id/tags/:tagId- Remove video tag
GET /api/videos/:id/actors- Get video actorsPOST /api/videos/:id/actors- Add video actorDELETE /api/videos/:id/actors/:actorId- Remove video actor
GET /api/videos/:id/comments- Get commentsPOST /api/videos/:id/comments- Add commentDELETE /api/comments/:id- Delete comment
GET /api/tags- Get tag listPOST /api/tags- Add tagPUT /api/tags/reorder- Reorder tagsPUT /api/tags/:id- Update tagDELETE /api/tags/:id- Delete tag
GET /api/actors- Get actor listPOST /api/actors- Add actorPUT /api/actors/reorder- Reorder actorsPUT /api/actors/:id- Update actorDELETE /api/actors/:id- Delete actorGET /api/actors/:id/videos- Get actor's videos
GET /api/users- Get user listPOST /api/users- Add userDELETE /api/users/:id- Delete userPUT /api/users/:id/password- Admin change user passwordPUT /api/users/:id/info- Admin change user infoPUT /api/users/password- User change own passwordPUT /api/users/info- User change own infoGET /api/users/me- Get current user info
MIT License



