Việc tìm kiếm và duyệt nội dung trên giao diện Web của YouTube thường gặp nhiều xao nhãng và giới hạn về khả năng lọc dữ liệu nâng cao. yt-browse ra đời như một giải pháp "YouTube cho Power Users", cho phép người dùng khám phá toàn bộ kho video, danh sách phát của bất kỳ kênh nào ngay trong Terminal. Với tốc độ phản hồi cực nhanh, khả năng tìm kiếm mờ (fuzzy search) và lọc theo thời gian thực (Regex, Date), dự án này biến việc nghiên cứu nội dung video thành một trải nghiệm năng suất cao, không quảng cáo và cực kỳ tinh gọn.
Dưới góc độ kỹ thuật, yt-browse là một minh chứng xuất sắc về việc ứng dụng kiến trúc MVU (Model-View-Update) thông qua Charm stack, kỹ thuật Pipelined Detail Fetching và hệ thống Smart Caching nén nhị phân.
Github: https://github.com/v8u7/yt-browse
🛠️ 1. Nền tảng công nghệ: The Charm Stack và Go
yt-browse tận dụng những công nghệ hàng đầu hiện nay để xây dựng giao diện Terminal hiện đại và hiệu năng cao:
- Logic Core (Golang): Đảm nhiệm vai trò điều phối API và xử lý dữ liệu nhị phân. Go được chọn nhờ khả năng biên dịch thành file nhị phân duy nhất (Single Binary) và mô hình Concurrency mạnh mẽ.
- TUI Infrastructure (Bubble Tea & Lip Gloss): Sử dụng framework Bubble Tea để quản lý trạng thái giao diện theo phong cách lập trình hàm (Functional Programming). Lip Gloss được dùng để xây dựng hệ thống Design System cho terminal với border, màu sắc và layout linh hoạt.
- YouTube Data Engine: Tích hợp trực tiếp Google YouTube API v3, thực hiện trích xuấtMetadata chuyên sâu bao gồm lượt xem, thời lượng và mô tả đầy đủ của video.
- Search Engine: Sử dụng thư viện
sahilm/fuzzyđể cung cấp khả năng tìm kiếm mờ ngay tại phía máy khách, giúp người dùng tìm thấy nội dung ngay cả khi gõ sai tiêu đề.
🏗️ 2. Trụ cột kiến trúc: MVU và Decoupled Persistence
Kiến trúc của dự án được thiết kế để duy trì sự mượt mà của giao diện (Smooth UI) trong khi xử lý các yêu cầu mạng nặng nề:
- Multi-model State Management: Ứng dụng duy trì 3 mô hình danh sách (
list.Model) riêng biệt. Kỹ thuật này cho phép người dùng chuyển đổi tức thì giữa các tab "Video", "Playlists" mà không làm mất vị trí cuộn trang (Scroll state) hay từ khóa tìm kiếm đang gõ dở. - Decoupled Logic Layers: Mã nguồn được phân rã thành các gói
internal/youtube(nguồn tri thức),internal/cache(lớp lưu trữ) vàinternal/tui(lớp trình diễn), giúp triệt tiêu sự phụ thuộc lẫn nhau và dễ dàng kiểm thử (Unit Testing). - Smart Binary Caching: Dữ liệu metadata được lưu dưới dạng JSON nén Gzip tại máy cục bộ. Hệ thống tích hợp bộ máy quản lý vòng đời cache (TTL 24h), tự động dọn dẹp để duy trì dung lượng dưới ngưỡng 200MB, đảm bảo tốc độ khởi động tức thì cho các lần sử dụng sau.
🔄 3. Workflow: Vòng đời từ Yêu cầu tìm kiếm đến Hiển thị (Sequence Diagram)
Sơ đồ mô tả quy trình hệ thống điều phối việc tải dữ liệu phân trang và render giao diện:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Pipelined Detail Fetching: Một kỹ thuật tối ưu hóa API cực kỳ thông minh. Vì API YouTube không trả về thông tin chi tiết (như thời lượng) trong danh sách tệp, dự án thực hiện "nhìn trước": vừa nhận được ID của trang hiện tại, hệ thống lập tức khởi chạy goroutine để lấy thông tin chi tiết, giúp người dùng không bao giờ thấy trạng thái "Loading..." khi cuộn danh sách.
- Shorts Heuristic Detection: API chính thức không dán nhãn cho YouTube Shorts. yt-browse tự xây dựng logic suy luận dựa trên Metadata thời lượng (
duration <= 60s) để gắn nhãn và lọc nội dung, một tính năng cực kỳ hữu ích cho việc phân loại thư viện. - Advanced Search Syntax: Tích hợp bộ máy phân tích cú pháp tìm kiếm hỗ trợ từ khóa đặc biệt (
before:,after:) và biểu thức chính quy (Regex). Điều này cho phép lọc hàng nghìn video theo các điều kiện thời gian và nội dung phức tạp ngay trong giao diện terminal. - Async Viewport Rendering: Khi xem chi tiết video, phần mô tả được nạp vào một
viewportriêng biệt với cơ chế wrap văn bản thông minh, đảm bảo thông tin dài hàng nghìn từ vẫn hiển thị ngăn nắp trên mọi kích thước cửa sổ terminal.
⚖️ 5. So sánh chiến lược
| Tiêu chí | yt-browse | YouTube Web UI | ytfzf |
|---|---|---|---|
| Trải nghiệm | TUI (Interactive) | GUI (Ads/Slow) | CLI (Script-based) |
| Tốc độ duyệt | Cực nhanh (Caching) | Chậm | Nhanh |
| Lọc dữ liệu | Chuyên sâu (Regex/Date) | Cơ bản | Trung bình |
| Tính di động | Single Binary | N/A | Phụ thuộc script/mpv |
| Quyền riêng tư | Tuyệt đối | Thấp | Tuyệt đối |
✅ Kết luận: Tại sao yt-browse là hình mẫu cho Modern TUI?
yt-browse chứng minh rằng một công cụ hỗ trợ công việc có thể vừa mạnh mẽ về tính năng, vừa nhẹ nhàng về hạ tầng. Bằng cách làm chủ kỹ thuật Asynchronous Data Pipeline trong Go và tận dụng sức mạnh của Bubble Tea, dự án đã tạo ra một hạ tầng khám phá nội dung vượt xa các giải pháp truyền thống về cả tốc độ lẫn tính thực dụng.
Đối với các kỹ sư Backend, nghiên cứu yt-browse giúp bạn hiểu sâu về:
- Kỹ thuật điều phối API Requests phân tầng.
- Cách xây dựng Giao diện dòng lệnh có trạng thái (MVU).
- Tư duy thiết kế Hệ thống Cache nhị phân tối ưu.