- IDHS là một ứng dụng web cho phép dán liên kết từ dịch vụ streaming vào ô tìm kiếm, rồi tìm và hiển thị liên kết của cùng bản nhạc đó trên các nền tảng khác được hỗ trợ; nếu liên kết gốc là Spotify thì còn có cả bản xem trước âm thanh nhanh
- Hỗ trợ cho từng bản nhạc, album, nghệ sĩ, podcast riêng lẻ; playlist được nêu rõ là nằm ngoài phạm vi
- Có các adapter cho Spotify, Tidal, YouTube Music, Apple Music, Deezer, SoundCloud, Qobuz, Bandcamp, Pandora, và mọi adapter đều hỗ trợ tìm kiếm đảo ngược cùng liên kết đã xác minh
- Hệ thống được chia thành parser để trích xuất metadata từ liên kết đầu vào và adapter để tìm liên kết trên nền tảng đích; kết quả tìm kiếm không đảm bảo đó chính xác là track hay bài hát mong muốn
- Để chạy cục bộ cần Bun và một số API key; riêng phần tìm kiếm Spotify tính đến tháng 3/2026 dùng GraphQL API nội bộ của Spotify Web Player cùng token tự làm mới do giới hạn của Web API Spotify
IDHS làm gì
- IDHS (I Don't Have Spotify) cho phép người dùng sao chép liên kết từ dịch vụ streaming yêu thích và dán vào ô tìm kiếm để hiển thị liên kết của mục tương ứng trên các nền tảng khác được hỗ trợ
- Nếu liên kết gốc là Spotify, ứng dụng cung cấp bản xem trước âm thanh nhanh để người dùng xác nhận đúng track
- Phạm vi hỗ trợ là từng bản nhạc, album, nghệ sĩ, podcast riêng lẻ
- Playlist nằm ngoài phạm vi hỗ trợ
Các dịch vụ streaming được hỗ trợ
- Web App và Raycast Extension xử lý việc chuyển đổi liên kết giữa các dịch vụ streaming thông qua adapter
- Các adapter được hỗ trợ gồm:
- Spotify
- Tidal
- YouTube Music
- Apple Music
- Deezer
- SoundCloud
- Qobuz
- Bandcamp
- Pandora
- Tất cả adapter đều hỗ trợ Inverted Search và Verified Links
- Việc có dùng API chính thức hay không khác nhau tùy nền tảng
- Dùng API chính thức: Tidal, Deezer
- Không dùng API chính thức: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora
Cấu trúc parser và adapter
- IDHS trích xuất metadata từ liên kết được cung cấp, rồi dựa trên thông tin đó tạo ra truy vấn tìm kiếm mới để dùng với công cụ tìm kiếm công khai hoặc API chính thức như Apple Music, YouTube, SoundCloud
- Nó chọn mục có vẻ liên quan nhất trong kết quả tìm kiếm, nhưng không đảm bảo liên kết trả về chính xác là track hay bài hát mà người dùng muốn
- Mọi đề xuất cải thiện quy trình tạo truy vấn tìm kiếm đều được hoan nghênh, nhưng có ràng buộc là loại trừ thử lại brute-force để giữ yêu cầu nhanh và tránh giới hạn tốc độ
-
Parsers src/parsers
- Parser xác định nền tảng của liên kết đầu vào và trích xuất metadata đã được chuẩn hóa
- tiêu đề
- mô tả
- loại
- hình ảnh
- âm thanh tùy chọn
- truy vấn tìm kiếm nhất quán
- Ví dụ, liên kết Spotify sẽ thu thập metadata Open Graph và tạo chuỗi tìm kiếm biểu diễn track, album, nghệ sĩ, show, episode
- Truy vấn này sau đó được dùng để tìm kiếm trên các nền tảng khác
-
Adapters src/adapters
- Adapter chuyển truy vấn tìm kiếm đã chuẩn hóa thành liên kết bên ngoài trên nền tảng đích
- Mỗi adapter phụ trách:
- thực hiện tìm kiếm theo nền tảng bằng truy vấn đã chuẩn hóa
- cách tìm kiếm có thể dựa trên API hoặc HTML
- trả về kết quả gồm các giá trị như
type, url, isVerified, notAvailable
- nếu nền tảng cung cấp tín hiệu đối sánh đáng tin cậy thì sẽ ưu tiên verified link
- Sự tách biệt này giúp mô-đun hóa hệ thống để parser tập trung vào việc hiểu nguồn gốc, còn adapter tập trung vào việc tìm liên kết đích
Web App và Raycast Extension
Chạy cục bộ và cấu hình API
- Có thể xem danh sách biến môi trường trong
.env.test
- Các giá trị sau cần cấu hình riêng
- Lệnh chạy ứng dụng như sau
bun install
bun dev
- Để chạy cùng trình rút gọn URL, hãy thiết lập
URL_SHORTENER_API_KEY bằng giá trị dùng trong docker-compose.yml, rồi dùng lệnh sau
docker compose up -d
bun install
bun dev
Cách xử lý tìm kiếm Spotify
- Tìm kiếm Spotify không dùng Spotify Web API mà dùng anonymous access token được trích xuất từ Spotify Web Player trên
open.spotify.com
- Luồng xác thực dựa trên TOTP và sử dụng GraphQL API nội bộ mà Spotify Web Player dùng
- README giải thích rằng tính đến tháng 3/2026, Spotify đã hạn chế Web API bằng cách yêu cầu tài khoản Premium trong Development Mode và giới hạn các endpoint khả dụng
- Dự án này không có tài khoản Premium, nên sử dụng cùng API nội bộ như Spotify Web Player
- Token tự động làm mới theo chu kỳ hết hạn khoảng 1 giờ và không cần tài khoản nhà phát triển
Đóng góp
- Có thể đóng góp bằng cách mở PR
1 bình luận
Các ý kiến trên Hacker News
Cũng có một trang còn ấn tượng hơn, giúp chuyển playlist từ hơn 20 nền tảng, bao gồm Spotify, hoặc từ file văn bản sang hơn 20 nền tảng khác hoặc file văn bản
Mong là mọi người đừng kéo vào đông quá làm sập nhé :)
https://app.tunemymusic.com/transfer
Ước gì có một định dạng nhập/xuất trung lập với nhà cung cấp, thay vì để bên thứ ba phải xử lý mọi tổ hợp tích hợp
Tôi chuyển các nghệ sĩ đã đánh dấu yêu thích, nhưng nó chỉ cố khớp theo tên; nếu có từ hai người cùng tên trở lên thì thất bại thảm hại, gần như chọn ngẫu nhiên. Không biết dịch vụ này sẽ thế nào
Tôi có hơn 10 playlist đầy nhạc bị xóa vì các khiếu nại bản quyền không thỏa đáng, nhưng vì không biết tiêu đề/nghệ sĩ của các track đã bị xóa nên cũng không thể dựng lại playlist
Tôi đã làm một extension Chrome rất đơn giản: khi mở link của dịch vụ nhạc khác, nó tự động redirect sang dịch vụ tôi thích
Trường hợp của tôi đặt là YouTube Music, nên nếu bấm một link kiểu Spotify trong Slack thì nó sẽ chuyển sang YouTube Music
https://chromewebstore.google.com/detail/music-link/gnhphofp...
Tôi muốn thực sự mua nhạc và tự lưu giữ. Vì tôi ngày càng thấy nhiều bài từng có trên Spotify biến mất
Nhưng ngày nay mua nhạc rất khó. Phần lớn được phát hành dưới dạng single, và theo tôi biết thì dường như chỉ có trên các nền tảng streaming. Liệu hiện vẫn có cách nào để mua loại nhạc đang có trên các nền tảng streaming đó dưới dạng file audio thật không?
Hoặc mua trên Bandcamp nếu có thể
Kết quả là rất nhiều bài tôi từng “đánh dấu sao”/“thêm”/“thích” bị chuyển sang màu xám và không phát được nữa. Dù sao, nếu nói đến chuyện thực sự có bản sao của nhạc mình nghe, tôi nghĩ cứ sao chép lậu hẳn, không cần thấy xấu hổ chút nào
Tôi mua được các album mới không vấn đề gì, nhưng các single mới thì không chắc. Ở Mỹ, có vẻ Amazon cho phép mua MP3, nhưng tôi không chắc
Với số tiền tương đương phí thuê bao Spotify, thường mỗi tháng có thể mua một album mới, khá ổn; tôi thích việc bộ sưu tập album của mình tăng lên từ từ
Đã gần 25 năm kể từ khi bước sang thế kỷ 21 rồi; thời Napster phải stream MP3 đã qua
Trên Qobuz cũng thường có các album chất lượng cao hơn stereo 44.1 kHz / 16-bit. Có thể bạn không nghe ra khác biệt, nhưng nếu nghệ sĩ/kỹ sư âm thanh quan tâm đến mức cung cấp tần số lấy mẫu hoặc độ sâu bit cao hơn, thì thường điều đó cũng có nghĩa là họ quan tâm đến việc làm ra âm nhạc có âm thanh hay
Qobuz làm đúng thứ bạn muốn. Bạn có thể mua và tải xuống từng track riêng lẻ hoặc cả album, và không có DRM
Tôi cũng có một bộ sưu tập file audio rip từ CD mình mua theo cách 100% bit-perfect/lossless, đồng thời dùng cả thuê bao Qobuz. Kết quả rip đã được kiểm chứng bằng DB online của những người rip cùng CD
Nhược điểm của Qobuz là tính năng khám phá nhạc không phải tốt nhất, và UI cũng khá tệ. Dù vậy, nó tốt cho những ai coi trọng chất lượng và muốn sở hữu nhạc của mình
Ngày nay hầu hết thiết bị streaming qua mạng đều hỗ trợ Qobuz. Ví dụ tôi dùng ampli Yamaha có tích hợp network streamer (Yamaha R-N1000A), và ứng dụng streaming nhạc của Yamaha là MusicCast cũng hỗ trợ Qobuz, Tidal, Spotify
Thay vì thuê quyền truy cập tạm thời vào một dịch vụ online có thể biến mất dưới chân bạn hoặc gỡ bài bạn đang nghe, bạn có thể thực sự mua và sở hữu từng track riêng lẻ
Cứ xem các gói giá là được. Tùy số lượng bài bạn mua, gói phù hợp hơn có thể khác nhau
Theo tôi hiểu, Spotify cũng đã thông báo rằng dưới áp lực từ Tidal và Qobuz, họ sẽ chuyển sang streaming lossless. Mãi đến năm 2024 mới cuối cùng
Với hai bài đầu tiên thử, việc khớp trên YouTube Music đã thất bại
Two Words của Kanye West: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
Lại dẫn tới Two Words của Milabel Ranque: https://music.youtube.com/watch?v=Y64cFG9dfYo
Never Let Me Down của Kanye West: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
Lại dẫn tới Never Let me Down của Depeche Mode: https://music.youtube.com/watch?v=snILjFUkk_A
Dù trên trang hiện đúng ảnh bìa album vẫn bị như vậy. Thực tế không có bài nào tôi thử đưa vào hoạt động đúng cả. Vốn dĩ nó là thế à? Có phải nó tìm các bài có tiêu đề tương tự không?
https://open.spotify.com/track/5qFL2uwfnGU8FccwLMgPNQ?si=b-a...
https://idonthavespotify.donado.co/?id=b3Blbi5zcG90aWZ5LmNvb...
Ở đây thiếu liên kết YouTube Music:
https://music.youtube.com/watch?v=0IHBCxs7QPE&si=QYvCtGCjKav...
Dù vậy, nếu hoạt động ổn định thì tôi nghĩ mình sẽ dùng nhiều. Đây là một ý tưởng công cụ nhỏ rất hữu ích
https://idonthavespotify.donado.co/?id=b3Blbi5zcG90aWZ5LmNvb...
Liên kết Deezer thì đúng, Tidal không hoạt động, còn lại đều sai
Dù vậy vẫn là một ý tưởng tuyệt vời. Vài năm trước tôi cũng từng nghĩ đến việc thử triển khai thứ như thế này
Khi chia sẻ nhạc trong một nhóm có lẫn người không dùng Spotify, cuối cùng thường phải quay về mẫu số chung là liên kết YouTube
Tôi thường xuyên nhận liên kết Spotify nên cái này hay đấy. Liên kết tốt hơn sẽ là trang dịch vụ thực tế chứ không phải kho GitHub
https://idonthavespotify.donado.co/
Nếu có cả extension cho người dùng Firefox thì thật sự rất tuyệt. Hy vọng một ngày nào đó có ai đó làm
idtrên trang kết quả đến từ đâu, có lẽ cũng có thể làm thành bookmarkletTôi đoán nó giống như một hash đơn giản của liên kết
Khi tạo một trang có liên kết tới nhiều nhà cung cấp nhạc, tôi dùng trang này: https://odesli.co
Hoạt động theo nghệ sĩ, album và bài hát
Nếu đăng nhập thì có thể tùy chỉnh URL
Tôi chỉ là người dùng, không có lợi ích liên quan
Tiếc là không được dùng nhiều và giờ không còn bảo trì nữa
/songlink {url}Một trong những tính năng tốt nhất có được từ NAS là có thể lưu nhạc trên đó và stream tới điện thoại
Tôi thích mua một phần nhạc và tự lưu trữ hơn là phụ thuộc vào dịch vụ thuê bao
Trước đây khi bảo trì bot nhạc Discord, tôi stream từ YouTube
Để URL Spotify hoạt động, việc tìm kiếm trên YouTube phải khớp ổn định; một mẹo rất hiệu quả là đưa cả URL Spotify vào truy vấn tìm kiếm YouTube cùng với tên bài hát, tên nghệ sĩ, v.v.
Mô tả của video YouTube chính thức thường có liên kết Spotify, và vì tìm kiếm YouTube khớp cả phần mô tả nên cách này khá hữu ích để chọn ra video “chính thức”
Dịch vụ này liên kết thêm được vài dịch vụ nữa, nhưng không thể chỉ dán URL hiện có vào: https://odesli.co/
Nó gần giống kiểu dịch vụ linktree hơn, nhưng có thể tìm bài hát và album nên dễ tìm
Ví dụ: https://song.link/i/1051394215
Placeholder của ô tìm kiếm cũng ghi “Search or paste URL”