Hướng dẫn get link nhạc, video trang nhaccuatui.com

Hôm nay mình sẽ hướng dẫn các bạn get link nhạc và video của trang nhaccuatui.com. Nếu đã đọc hướng dẫn cách get link của trang mp3.zing.vn rồi thì bạn sẽ rất dễ dàng trong việc get link của trang nhaccuatui.com này, vì các ý tưởng thực hiện nó cũng tương tự như vậy. Trước hết cùng dùng thử tool demo trước:

Demo tool get link nhaccuatui.com: Demo
Nếu xem demo ok rồi thì chúng ta cùng bắt đầu phân tích cách get link.



Ý tưởng thực hiện:

Cũng tương tự như trang zing, nhaccuatui cũng như vậy, mỗi bài hát hoặc video, data đều được lưu vào file xml, nên ta sẽ đi tìm file xml đó để lấy thông tin bài hát. Có điều đặc biệt hơn zing là nhaccuatui cho phép mình có thông tin nhạc 320kbps và video độ phân giải cao 720p .
Bước đầu ta phân tích các kiểu url trên trang.

Trên nhaccuatui.com có 3 kiểu link nhạc:

  • Track đơn: http://www.nhaccuatui.com/bai-hat/*
  • Playlist và Album: http://www.nhaccuatui.com/playlist/*
  • Video: http://www.nhaccuatui.com/video-clip/*
Vì mỗi link khác nhau nên có kiểu lưu data xml khác nhau.

Chúng ta có 3 dạng lưu file xml:

  • Track đơn: http://www.nhaccuatui.com/flash/xml?key1=*
  • Album và playlist: http://www.nhaccuatui.com/flash/xml?key2=*
  • Video: http://www.nhaccuatui.com/flash/xml?key3=*
Các bạn có thể view source link nó ra: view-source:http://mp3.zing.vn/bai-hat/Vo-Nguoi-Ta-Phan-Manh-Quynh/ZW7WBZBI.html
Khi truy cập vào file xml đó ta sẽ thấy rõ các thông tin của bài hát này. Trong đó có <location>(chính là link mp3 của bài hát đó), <title>, <creator>, <info>….Tương tự như vậy các kiểu playlist cũng thế, còn video thì nó sẽ trả ra <location>, <lowquality>, <highquality> tương ứng với độ phân giải của video.

Vậy các bước thực hiện sẽ là:

view source -> tìm file xml -> đọc file xml -> trả ra kết quả
Để thực hiện được việc này trước tiên chúng ta phải có function curl:

function curl($url){    $ch = @curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    $head[] = "Connection: keep-alive";    $head[] = "Keep-Alive: 300";    $head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";    $head[] = "Accept-Language: en-us,en;q=0.5";    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');    curl_setopt($ch, CURLOPT_ENCODING, '');    curl_setopt($ch, CURLOPT_HTTPHEADER, $head);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($ch, CURLOPT_TIMEOUT, 60);    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);    curl_setopt($ch, CURLOPT_HTTPHEADER, array(        'Expect:'    ));    $page = curl_exec($ch);    curl_close($ch);    return $page;}

Nếu các bạn theo dõi các bài viết get link của mình thì không lạ gì với function curl này rồi đúng không.

Các bước thực hiện:

  • View souce link ra, hay đọc nội dung link đó, chúng ta sử dụng function curl trên:

$content = curl($link);

Tìm file xml:
preg_match("/http\:\/\/(www\.)?nhaccuatui\.com\/flash\/xml\?.*\"/",$content,$arr_preg);

  • Đọc file xml, chúng ta sử dụng lại function curl:
$linkXML = str_replace('"','',$arr_preg[0]); // bỏ ký tự " trong chuỗi lấy được$xml_data = curl($linkXML);
Trả ra kết quả, ở đây mình có 2 cách trả ra. Thứ 1 là dùng hàm preg_match để tách nội dung muốn lấy, thứ 2 là dùng simplexml_load_string chuyển nội dung file thành mảng, ở đây mình sẽ chỉ cách thứ 2 nếu bạn muốn xem rõ hơn cách 1 thì có thể quay về bài hướng dẫn get link trang mp3 zing
$xml_string = str_replace("&lt;![CDATA[","",$xml_data); // xóa bỏ &lt;![CDATA[ khỏi chuỗi $xml_string = str_replace("]]&gt;","",$xml_string); // xóa bỏ ]]&gt; khỏi chuỗi$xml_string = preg_replace('#&amp;(?=[a-z_0-9]+=)#', '&amp;amp;', $xml_string); // thay thế ký tự đặc biệt$xml_arr = json_decode(json_encode((array) simplexml_load_string($xml_string)), 1); // chuyển đổi thành mảngif($xml_arr['track']){     $item = $xml['track'];     $linkMp3 = $item['location'];     $title = $item['title'];}
Như vậy là chúng ta đã lấy được thông tin bài hát đó rồi function đầy đủ sẽ là:
function getMp3($link){
 $link = trim($link);
 $content = curl($link);
 preg_match("/http\:\/\/(www\.)?nhaccuatui\.com\/flash\/xml\?.*\"/",$content,$arr_preg);
 $return = array();
 if($arr_preg){
 $linkXML = str_replace('"','',$arr_preg[0]);
 $xml_data = curl($linkXML);
 $xml_string = str_replace("&amp;amp;lt;![CDATA[","",$xml_data);
 $xml_string = str_replace("]]&amp;amp;gt;","",$xml_string);
 $xml_string = preg_replace('#&amp;amp;amp;(?=[a-z_0-9]+=)#', '&amp;amp;amp;amp;', $xml_string);
 $xml_arr = json_decode(json_encode((array) simplexml_load_string($xml_string)), 1);
 if($xml_arr['track']){
 $item = $xml_arr['track'];
 $return['title'] = $item['title'];
 $return['creator'] = $item['creator'];
 $return['link128'] = $item['location'];
 $return['info'] = $item['info'];
 $return['lyric'] = $item['lyric'];
 $return['image'] = $item['bgimage'];
 $return['newtab'] = $item['newtab'];
 }
 }
 return $return;
}



Chỉ với 2 function curl và getMp3 chúng ta có thể get thông tin bài hát đó rồi, bạn chỉ cần điền link bài hát vào function getMp3, nó sẽ trả về cho bạn các thông tin cơ bản. Cách get playlist và video bạn có thể dựa vào các đoạn code trên để làm tương tự được rồi.

Cách get nhạc 320kbps nhaccuatui.com

Bạn để ý với link nhạc: http://www.nhaccuatui.com/bai-hat/vo-nguoi-ta-phan-manh-quynh.DRfuHT6Q2LvC.html
thì đoạn mình bôi đỏ đó chính là ID của nhạc.
Bạn chỉ cần truy cập đường dẫn: http://www.nhaccuatui.com/download/song/DRfuHT6Q2LvC
Nó sẽ trả về cho bạn thông tin link nhạc 320kbps:

{"error_message":"Success","data":{"stream_url":"http:\/\/download.s95.stream.nixcdn.com\/6e5c151d54d8a3c499c5166b81dda78d\/565aa7ae\/NhacCuaTui906\/VoNguoiTa-PhanManhQuynh-4108287_hq.mp3","is_charge":"false"},"error_code":0,"STATUS_READ_MODE":true}

đoạn stream_url chính là link nhạc 320kbps.
Đến thời điểm hiện tại(29/11/2015) thì trang nhaccuatui.com chưa fix cái này, ngày trước zing cũng có thể làm tương tự nhưng nó đã fix mất rồi. Mình sẽ viết 1 function get link nhạc này:

function getLink320($link){
    $regex_link = '/http\:\/\/(www\.)?nhaccuatui\.com\/bai\-hat\/(.*?).html/';
    if (preg_match($regex_link, $link, $arr_preg)) {
        $slug = $arr_preg[2];
        $idSong = substr($slug, strrpos($slug, '.')+1);
        $link320 = 'http://www.nhaccuatui.com/download/song/'.$idSong;
        $data = curl($link320);
        $stream_url = explode('"stream_url":"',$data);
        if($stream_url){
            $arr_link = explode('","',$stream_url[1]);
            $link = str_replace('\\','',$arr_link[0]);
            return $link;
        }
    }
}

Bạn chỉ cần bỏ link vào function nó sẽ trả về cho bạn link nhạc 320kbps.
Chúc bạn thành công.

Nguồn:blogit.vn 
Share on Google Plus

About NHOCLAK DJ

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 nhận xét:

Đăng nhận xét