パーソナルラジオチャートの作成

VKontakteは多くの人に愛されていますが、音楽の素晴らしい安定したリポジトリを提供します。 以下に説明するスクリプトのフレームワークでは、そこから曲を名前でダウンロードし、ラジオ局のチャートを解析し、ダウンロードした曲をzipアーカイブにパックする方法を学びます。 歌はチャート上の場所に従って番号が付けられ、通常100曲がCDに簡単に排出されます。

また、主要な役割の1つにmoskva.fmがありました。moskva.fmは、多数のラジオ局とチャートのリストを1か所で注意深く収集しました。 すべてが非常に簡単ですが、初心者プログラマーの多くが興味を持っていると思います。

何が起こったかの画面:





ロゴをクリックすると、このステーションのtop100の新しいzipアーカイブがダウンロードされ、mp3形式のファイルが含まれます。

それでは、小さい方から大きい方へ行ってみましょう。

error_reporting(E_ALL); //    simplehtmldom include_once('simplydom.php'); //100   50  = 5000  //  - 9000 set_time_limit(9000);
      
      





Simpl e HTMLDOMプロジェクトは、SimplyXMLやその他のHTML / DOMライブラリの気取らない類似物です。 特徴的な機能:中国人は名前で見えるものを書き、マークアップのエラーを絶対に吐き出し、ファイルを解析しようとしました。 数回使用するとセグメンテーション違反になります。 激しく記憶を食べる 同じオブジェクトに親と子を保存する各ノードについて、print_rを介してオブジェクトを表示することで内部を明確に見ることができます。また、小さな、すぐに見えないが非常にクールなものもあります。たとえば、負のインデックスで検索できます。 ページの最後から3番目のdivを取得する必要がある場合、これは問題になりません。

さらに進んでください-名前で曲を受け取り、定義した場所に保存する関数を作成します。

 /* *          $title *        $path, *      "$number $title.mp3" */ function getSongByTitle($title,$path,$number) { //    UserAgent $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13)'; $cookie = ''; //     $login = '*******@gmail.com'; $password = '********'; // cURL $ch = curl_init(); //   POST  curl_setopt($ch, CURLOPT_POST, true); // UserAgent curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //        //         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //     curl_setopt($ch, CURLOPT_TIMEOUT, 10); //    Location: ... curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //        curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login'); // POST- $post = array( 'act' => 'login', 'q' => '', 'al_frame' => '1', 'expire' => '', 'captcha_sid' => '', 'captcha_key' => '', 'from_host' => 'vkontakte.ru', 'email' => $login, 'pass' => $password ); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); // $answer = curl_exec($ch); //  -    $sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60); $cookie = 'remixsid=' . $sid; //    GET curl_setopt($ch, CURLOPT_POST, false); // cookie curl_setopt($ch, CURLOPT_COOKIE, $cookie); // URL curl_setopt($ch, CURLOPT_URL, 'http://vkontakte.ru/al_search.php?al=1&c[q]='.urlencode($title).'&c[section]=audio'); //    $answer = curl_exec($ch); curl_close($ch); //     json    html //       $answer = substr($answer,strpos($answer,'{"section":"audio"')); $answer = substr($answer,strpos($answer,'<!> ')+4); $answer = trim($answer); //     ,     if (!file_exists($path . $number . ' ' . $title . '.mp3')) { if (strpos($answer,'      ')==false) { //  simplydom, $html = str_get_html($answer); //   input,  99%   //     $filelink = $html->find('input',0)->attr['value']; //      http://....mp3,bitrate // -  -    bitrate $filelink = explode(",",$filelink); $filelink = $filelink[0]; echo "   $filelink \n"; $ch = curl_init(); //    (  ,   ) $fp = fopen($path . $number . ' ' . $title . '.mp3', 'w'); //    cURL    curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_URL, $filelink); curl_setopt($ch, CURLOPT_COOKIE, $cookie); $answer = curl_exec($ch); fclose($fp); echo "  $filelink \n"; //   ,     PHP  seg.fault $html->clear(); unset($html); } else { echo "  \n"; } } } /* *   zip-,         */ function create_zip($files = array(),$destination = '') { if(file_exists($destination)) { return false; } $valid_files = array(); if(is_array($files)) { foreach($files as $file) { if(file_exists($file)) { $valid_files[] = $file; } } } if(count($valid_files)) { $zip = new ZipArchive(); if($zip->open($destination,ZIPARCHIVE::CREATE) !== true) { return false; } foreach($valid_files as $file) { $zip->addFile($file,$file); } $zip->close(); return file_exists($destination); } else { return false; } } $filename = array(); $filename[] = array('href'=>'http://www.moskva.fm/stations/FM_90.8/top100','fm'=>'90_8'); //    ,       //           $filename[] = array('href'=>'http://www.moskva.fm/stations/FM_101.2/top100','fm'=>'101_2'); foreach ($filename as $item) { //    -     $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) Gecko/20101203'; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_URL, $item['href']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $answer = curl_exec($ch); $answer = trim($answer); curl_close($ch); echo '  ' . $item['href'] . ' '; $html = str_get_html($answer); // $filesarray            $filesarray = array(); for ($i = 0; $i < 100; $i++) { echo '----' . $i . '-------- '; $song = $html->find('td[class=name] pa[class=song]', $i)->innertext; $artist = $html->find('td[class=name] pa[class=artist]', $i)->innertext; $fullsongname = $artist . ' - ' . $song; echo '  ' . $i . ' ' . $fullsongname . "\n"; if (!is_dir($_SERVER['DOCUMENT_ROOT'].'/mp3/'.$item['fm'])) { mkdir($_SERVER['DOCUMENT_ROOT'].'/mp3/'.$item['fm'],0755); } //   ,        //        if ($i+1<10) { $number = '0'.$i+1; } else { $number = $i+1; } //  getSongByTitle($fullsongname,$_SERVER['DOCUMENT_ROOT'].'/mp3/'.$item['fm'].'/',$number); //      $filesarray[] = $_SERVER['DOCUMENT_ROOT'].'/mp3/'.$item['fm'].'/' . $number . ' ' . $fullsongname . '.mp3'; echo " \n"; } if (!is_dir($_SERVER['DOCUMENT_ROOT'].'/zip')) { mkdir($_SERVER['DOCUMENT_ROOT'].'/zip',0755); } //      create_zip($filesarray,$_SERVER['DOCUMENT_ROOT'].'/mp3/zip/'.$item['fm'].'.zip'); //   ,     PHP  seg.fault $html->clear(); unset($html); }
      
      







モスクワ駅の周波数+美しいpngを示すロゴの選択



All Articles