示例#1
0
 /**
  * 動画のURLを取得する
  *
  * @param  simple_html_dom $html
  * @return array
  **/
 public function getMoviesUrl($html)
 {
     $query = 'div.article-body-inner div.article-body-more';
     $more_el = $html->find($query, 0);
     $movie_data = array();
     $manager = new UriManager();
     // 子供要素を持っていなければならない
     if (!$more_el->hasChildNodes()) {
         return $movie_data;
     }
     $child_els = $more_el->childNodes();
     foreach ($child_els as $child_el) {
         // scriptタグであった場合
         if ($child_el->tag == 'script') {
             // 主にFC2動画をembedしている場合
             if ($child_el->hasAttribute('url')) {
                 $movie_url = $child_el->getAttribute('url');
                 $movie_data[] = $manager->resolve($movie_url);
                 continue;
             }
             // 主にasg.toの動画をembedしている場合
             if ($child_el->hasAttribute('src') && $child_el->getAttribute('src') == 'http://asg.to/js/past_uraui.js') {
                 // 次のスクリプト要素内にある関数に与えているmcd値を取得する
                 // e.g. Purauifla("mcd=lNl25A52tkqoweP2", 450, 372); --> lNl25A52tkqoweP2
                 $next_el = $child_el->nextSibling();
                 $pattern = '/Purauifla\\("mcd=([0-9a-zA-Z]+)", [0-9]+, [0-9]+\\);/';
                 preg_match($pattern, $next_el->innertext, $matches);
                 if (!isset($matches[1])) {
                     continue;
                 }
                 $movie_url = 'http://asg.to?mcd=' . $matches[1];
                 $movie_data[] = $manager->resolve($movie_url);
             }
         }
         // iframeタグであった場合
         if ($child_el->tag == 'a') {
             $url = $child_el->getAttribute('href');
             if (!$manager->isXvideosUrl($url)) {
                 continue;
             }
             $movie_data[] = $manager->resolve($url);
         }
     }
     return $movie_data;
 }