Example #1
0
 /**
  * @param Crawler $crawler
  * @return ExtractedVideo
  */
 public function extract(Crawler $crawler)
 {
     $video = new ExtractedVideo();
     $video->setEmbedUrl($this->url);
     $urlParts = explode('/', $this->url);
     $videoId = end($urlParts);
     $thumbnailUrl = 'https://i.ytimg.com/vi/' . $videoId . '/maxresdefault.jpg';
     $video->setThumbnailByUrl($thumbnailUrl);
     return $video;
 }
Example #2
0
 /**
  * @param Crawler $crawler
  * @return ExtractedVideo
  */
 public function extract(Crawler $crawler)
 {
     $video = new ExtractedVideo();
     $video->setEmbedUrl(trim($crawler->filter("meta[property='og:video:url']")->attr('content')));
     $video->setDescription(trim($crawler->filter('#eow-description')->html()));
     $video->setTitle(trim($crawler->filter('#eow-title')->html()));
     $video->setThumbnailByUrl(trim($crawler->filter("meta[property='og:image']")->attr('content')));
     $publishedText = str_replace('Published on ', '', $crawler->filter("#watch-uploader-info")->text());
     $video->setPublishedOn(\DateTime::createFromFormat('M j, Y', $publishedText));
     $video->setStats($this->extractStats($crawler));
     $video->setOwner($this->extractOwner($crawler));
     return $video;
 }
Example #3
0
 /**
  * @param Crawler $crawler
  * @return ExtractedVideo
  */
 public function extract(Crawler $crawler)
 {
     $video = new ExtractedVideo();
     $video->setEmbedUrl($this->url);
     preg_match_all('/https?:\\/\\/i\\.vimeocdn\\.com\\/video\\/([0-9]*)_([0-9]*)\\.([a-z]*)/i', $crawler->filter('html')->html(), $matches);
     if (count($matches) == 4) {
         list($urls, $videoIds, $sizes, $extensions) = $matches;
         $url = $urls[0];
         $size = $sizes[0];
         foreach ($urls as $i => $url) {
             if ($sizes[$i] > $size) {
                 $url = $urls[$i];
                 $size = $sizes[$i];
             }
         }
         $video->setThumbnailByUrl($url);
     }
     return $video;
 }
Example #4
0
 /**
  * @param Crawler $crawler
  * @return ExtractedVideo
  */
 public function extract(Crawler $crawler)
 {
     $oembedData = $this->getOEmbedData($crawler);
     $video = new ExtractedVideo();
     if (is_array($oembedData) && isset($oembedData['description'])) {
         $video->setDescription($oembedData['description']);
     } else {
         $video->setDescription(trim($crawler->filter(".description_wrapper")->text()));
     }
     if (is_array($oembedData) && isset($oembedData['title'])) {
         $video->setTitle($oembedData['title']);
     } else {
         $video->setTitle(trim($crawler->filter("h1.js-clip_title")->html()));
     }
     if (is_array($oembedData) && isset($oembedData['thumbnail_url'])) {
         $thumbnail = ExtractedImageFactory::createFromUrl($oembedData['thumbnail_url'], isset($oembedData['thumbnail_width']) ? $oembedData['thumbnail_width'] : null, isset($oembedData['thumbnail_height']) ? $oembedData['thumbnail_height'] : null);
         $video->setThumbnail($thumbnail);
     }
     if (is_array($oembedData) && isset($oembedData['html'])) {
         $doc = new DOMDocument();
         $doc->loadHTML($oembedData['html']);
         /** @var DOMNodeList $iframes */
         $iframes = $doc->getElementsByTagName('iframe');
         if ($iframes->length > 0) {
             $video->setEmbedUrl($iframes->item(0)->getAttribute('src'));
         }
     }
     $publishedOn = $crawler->filter("time")->attr('datetime');
     $publishedDatetime = new \DateTime($publishedOn);
     $video->setPublishedOn($publishedDatetime);
     $video->setStats($this->extractStats());
     $video->setOwner($this->extractOwner($crawler, $oembedData));
     return $video;
 }
Example #5
0
 /**
  * @param Crawler $crawler
  * @return \pmill\Extract\ExtractedImage[]
  */
 public function extractVideos(Crawler $crawler)
 {
     $foundVideos = $crawler->filter("#primary-project-content .project-module-embed iframe")->extract(array('src'));
     $extract = new Extract();
     /** @var ExtractedImage[] $videos */
     $videos = array();
     foreach ($foundVideos as $url) {
         $providerClassName = $extract->findProvider($url);
         if ($providerClassName == '\\pmill\\Extract\\Provider\\Basic') {
             $video = new ExtractedVideo();
             $video->setEmbedUrl($url);
         } else {
             $pageFetcher = new Curl();
             $videoPageContent = $pageFetcher->fetch($url);
             $videoCrawler = new Crawler($videoPageContent);
             /** @var \pmill\Extract\Interfaces\ExtractProvider $provider */
             $provider = new $providerClassName();
             $provider->setUrl($url);
             $video = $provider->extract($videoCrawler);
         }
         $videos[] = $video;
     }
     return $videos;
 }