MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
Tìm và nghe nhạc YouTube Music trên iPhone với giao diện kiểu Spotify, hỗ trợ phát nền và tải offline
Translation pending
AI summary · website and README
MediaTypeScript · JavaScriptGitHub @HoangDuc1003OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
🎵 Melo: nghe nhạc kiểu Spotify trên iPhone Tìm và nghe YouTube Music với giao diện kiểu Spotify. Tắt màn hình vẫn phát, tự chuyển bài, tải về nghe offline. Chạy hoàn toàn trên iPhone, không cần server.Read the full README ↗
Tìm và nghe YouTube Music với giao diện kiểu Spotify. Tắt màn hình vẫn phát, tự chuyển bài, tải về nghe offline. Chạy hoàn toàn trên iPhone, không cần server.
| Trang chủ | Tìm kiếm | Album |
|---|---|---|
| Chọn nhanh, playlist, album mới, nghệ sĩ. | Lọc theo bài hát, video, album, nghệ sĩ. | Tải cả album bằng 1 nút ⬇. |
| Trình phát | Lời bài hát | Hàng chờ |
|---|---|---|
| Màu nền theo ảnh bìa, vuốt xuống để đóng. | Lời chạy theo nhạc, chạm một dòng để tua. | Kéo thả đổi thứ tự, bật/tắt radio. |
| Thư viện | Đang tải | Cài đặt tải về |
|---|---|---|
| Bài đã thích, đã tải, playlist của bạn. | Tải nhiều bài cùng lúc, hiện tốc độ. | Tự động hoặc cố định 1–15 bài. |
Ảnh chụp ở chế độ dữ liệu mẫu (npm run dev:mock), khổ iPhone 390×844. Ảnh bìa là tranh SVG tự vẽ theo tên bài (src/youtube/mock/covers.ts), không phải ảnh bìa thật; khi dùng thật, app hiện ảnh bìa từ YouTube Music.
Apple chỉ cho cài app đã được ký. Melo không có trên App Store (lý do), nên có 2 cách:
| 🆓 Cách 1: SideStore (khuyên dùng) | 💳 Cách 2: Cài 1 chạm (Ad Hoc) | |
|---|---|---|
| Chi phí | 0 đ | Apple Developer 99 USD/năm |
| Máy tính | Cần 1 lần, khoảng 15 phút | Cần 1 lần (lấy UDID, tạo chứng chỉ) |
| Cập nhật | Bấm UPDATE trong SideStore | Mở trang cài đặt, bấm Cài đặt Melo |
| Gia hạn | 7 ngày, tự gia hạn trên iPhone | 1 năm |
flowchart LR
PC["💻 PC Windows<br/>iTunes + iloader"] -->|"cài SideStore<br/>(chỉ 1 lần)"| IP["📱 iPhone<br/>Tin cậy + Chế độ<br/>nhà phát triển"]
IP --> SS["🧩 SideStore<br/>+ source Melo"]
SS -->|"GET / UPDATE"| M["🎵 Melo"]
SC["⏰ Phím tắt<br/>3:00 hằng ngày"] -.->|"tự gia hạn 7 ngày"| SS
Chuẩn bị:
.msi): https://github.com/nab138/iloader/releasesLink source để dán vào SideStore (Sources → +):
https://github.com/HoangDuc1003/music_melo/releases/download/ios-latest/source.json
Xong! Từ giờ:
| Hiện tượng | Cách xử lý |
|---|---|
| iloader không thấy iPhone | Cài iTunes bản tải từ Apple, không dùng bản Microsoft Store. Vẫn không được thì thử app Apple Devices. Cắm lại cáp, bấm Tin cậy. |
| Mở app báo "Nhà phát triển không được tin cậy" | Làm lại bước 2, mục Tin cậy. |
| SideStore báo lỗi khi cài, cập nhật hoặc gia hạn | Mở LocalDevVPN, bấm Connect, dùng Wi‑Fi rồi thử lại. |
| Melo không mở được sau 7 ngày | Mở SideStore, bấm 7 DAYS cạnh Melo. Nhạc đã tải không mất. |
| Báo đã đủ số app | Apple ID miễn phí cho tối đa 3 app tự cài, tính cả SideStore. Gỡ bớt một app. |
| Melo lỗi khi đang dùng | Trong Melo: Cài đặt → Nhật ký lỗi → Copy, rồi gửi cho người sửa app. Nhật ký đã tự ẩn IP, link và token. |
Sau khi thiết lập một lần, mỗi lần cài hay cập nhật chỉ cần:
Không cần SideStore, không cần VPN, không phải gia hạn 7 ngày. Hồ sơ dùng được 1 năm.
Thiết lập một lần:
CI sẽ tự ký và đăng trang cài đặt. Hướng dẫn từng lệnh (làm được trên Windows): docs/CAI_DAT.md.
iOS tạm dừng JavaScript khi app chạy nền. Vì vậy hàng chờ và việc phát nhạc nằm trong plugin Swift (AVPlayer); phần JavaScript chỉ lo những việc cần mạng.
sequenceDiagram
participant U as 👤 Bạn
participant UI as 💻 Giao diện (React)
participant C as 🎛️ controller.ts
participant N as 🍎 MeloPlayer (Swift)
participant YT as ▶️ YouTube Music
U->>UI: Bấm phát album
UI->>C: playTracks()
C->>N: setQueue (cả hàng chờ, bài đã tải dùng file)
C->>YT: Lấy link 20 bài tới (youtubei.js, bằng IP của iPhone)
C->>N: updateItem(link)
Note over N: Khoá màn hình: AVPlayer tự chuyển bài,<br/>điều khiển trên màn hình khoá
N-->>C: needsUrl (link hết hạn hoặc lỗi)
C->>YT: Lấy link mới
C->>N: updateItem(link mới)
C->>YT: Còn ≤ 3 bài: lấy radio, nối vào hàng chờ
music_melo/
├── src/ # Giao diện + logic (React, TypeScript)
│ ├── pages/ # Trang chủ, Tìm kiếm, Thư viện, Album, Nghệ sĩ, Đã tải, Cài đặt
│ ├── components/ # Trình phát mini/toàn màn hình, hàng chờ, lời bài hát, menu bài
│ ├── player/ # Bộ điều khiển: hàng chờ, lấy link trước, radio, lưu/khôi phục
│ ├── downloads/ # Tải về: hàng đợi, tải song song tự điều chỉnh, lưu file
│ ├── sync/ # Đồng bộ Spotify: đăng nhập PKCE, Web API, ghép bài sang YouTube Music
│ ├── youtube/ # youtubei.js, BotGuard, chọn client, dữ liệu mẫu (mock/)
│ ├── lib/ # IndexedDB (Dexie), thư viện, lời bài hát, nhật ký lỗi
│ └── ui/ # Điều hướng theo tab, lớp phủ, thông báo
├── plugins/player/ # Plugin Swift "MeloPlayer": AVPlayer, hàng chờ native, màn hình khoá
│ └── ios/Tests/ # XCTest cho hàng chờ native
├── ios/App/ # Dự án Xcode (Capacitor), PrivacyInfo.xcprivacy
├── scripts/ # Ký Ad Hoc, tạo source SideStore, kiểm tra giao diện, chụp ảnh README
├── docs/ # Kế hoạch, hướng dẫn cài, App Store, chính sách quyền riêng tư, ảnh
└── .github/workflows/ios.yml # CI: quét bí mật → test → build IPA → Release → trang cài đặt
| Phần | Công nghệ |
|---|---|
| Giao diện | React 19, TypeScript, Vite, Tailwind CSS 4, Zustand, TanStack Query |
| App iPhone | Capacitor 8, plugin Swift tự viết (AVPlayer, MediaPlayer, AVAudioSession) |
| Nguồn nhạc | youtubei.js (InnerTube), BotGuard / PO token (bgutils-js) |
| Đồng bộ Spotify | Spotify Web API, OAuth PKCE (không client secret), token trong Keychain, ghép bài sang YouTube Music |
| Lưu trên máy | IndexedDB (Dexie), file nhạc trong Library/NoCloud, File Transfer |
| Lời bài hát | LRCLIB, dự phòng bằng lời trên YouTube |
| Kiểm thử | Vitest (85 test), XCTest (15 test), Playwright (9 luồng giao diện) |
| CI/CD | GitHub Actions trên macOS: gitleaks, npm audit, build IPA, giới hạn dung lượng JS, Release, Pages |
| Phát hành | GitHub Releases + source SideStore/AltStore, trang cài Ad Hoc trên GitHub Pages |
git clone https://github.com/HoangDuc1003/music_melo.git
cd music_melo
npm install
npm run dev:mock # dữ liệu mẫu, không cần YouTube: http://localhost:5173
npm run dev # dữ liệu thật qua proxy của Vite
npm test # vitest
npm run build # kiểm tra kiểu + build
cd plugins/player && swift test # test hàng chờ native (macOS/Linux)
Melo.ipa và đăng lên Releases.MELO_LAN=1 npm run dev. Lưu ý lệnh này mở cả proxy dev ra mạng LAN.scripts/readme-shots.mjs và scripts/install-illustrations.mjs.https hoặc file trong máy.Dự án dùng cho cá nhân, không phát hành lên App Store và không chia sẻ file IPA cho người khác. Nội dung nhạc thuộc YouTube và chủ sở hữu quyền. Vì sao không thể lên App Store và cách làm một phiên bản hợp lệ: docs/APP_STORE.md.
Nguyễn Đức Hoàng
Nếu thấy dự án hữu ích, hãy cho một ⭐ nhé!