Thursday, 7 February 2013

Tự viết 1 chương trình download nhạc từ nhaccuatui

NOTE: bài này viết nhanh, do không có nhiều thời gian chỉnh sửa.


1. Mục tiêu:
Input: url bài hát
Output: link download + file mp3 đã down.
Mục tiêu: chứng minh việc viết chương trình download nhạc từ nhaccuatui rất đơn giản.


2. Thực hiện.
2.1 Lấy mẫu thử nghiệm:
Mở 1 link bài hát:
http://www.nhaccuatui.com/bai-hat/our-same-word-orchestra-ver-yiruma.U6_h_PbuBH.html

view source đoạn nút  "Tải nhạc":

<a href="javascript:;" class="btn-download" id="btnDownload" title="Our Same
Word (Orchestra ver.)" key="U6_h_PbuBH" singer="Yiruma">Tải nhạc</a>

nhận thấy có 1 thành phần đặc biệt đó là key="U6_h_PbuBH" (có cả trên link bài hát).

Dừng lại ở đây chưa thể download được. Nhận thấy khi ta bấm vào nút "Tải nhạc" thì 1 box hiện ra với link file mp3. Như vậy mọi thứ diễn ra trong lúc ta bấm nút "Tải nhạc". Đến đây cần một chút hiểu biết về web. Khi bấm vào nút "tải nhạc", nút này đã chạy AJAX để lấy về link download. Ta dùng 1 chương trình nào đó để xem các thông tin browser gửi đi và nhận về.
(có thể sử dụng Firebug, riêng ở bài này sẽ dùng Web Console hỗ trợ sẵn bở firefox)

Tools -> Web Developer -> Web Console. Sau đó chỉ chọn mỗi nút "Net" để console chỉ hiện thị link thôi.

Bấm vào nút  "tải nhạc" một lần nữa, sẽ thấy ở console hiện ra:



ta "vô tình" có được api lấy link download của nhaccuatui:
--
[00:34:18.726] GET http://www.nhaccuatui.com/download/song/U6_h_PbuBH [HTTP/1.1 200 OK 595ms]

http://www.nhaccuatui.com/download/song/U6_h_PbuBH

vậy chỉ cần gửi 1 GET request tới địa chỉ trên là sẽ có được url để down file mp3.
Tới đây mọi việc không còn gì khó khăn nữa.

3. Code
PHP: http://www.familug.org/2013/02/php-code-down-load-nhac-tu-nhaccuatui.html 

Python: -LATER-

Vô cùng cảm ơn hacker mũ hồng +Lam Tung đã trợ giúp giải quyết phần lấy API.