예제 #1
0
 /**
  * @param $url
  * @param null|int $width
  * @param null|int $height
  * @param null|int $size
  * @return ExtractedImage
  */
 public static function createFromUrl($url, $width = null, $height = null, $size = null, $fetchMetaData = false)
 {
     if (strlen(trim($url)) == 0) {
         return null;
     }
     if (StringHelper::startsWith($url, '//')) {
         $url = 'http:' . $url;
     }
     $curlHelper = new CurlHelper();
     if (!$curlHelper->exists($url)) {
         return null;
     }
     $image = new ExtractedImage();
     $image->setSource($url);
     if ((is_null($width) || is_null($height)) && $fetchMetaData) {
         $dimensions = getimagesize($url);
         if (!empty($dimensions) && is_array($dimensions) && count($dimensions) >= 2) {
             list($width, $height) = $dimensions;
         }
     }
     if (!is_null($width)) {
         $image->setWidth($width);
     }
     if (!is_null($height)) {
         $image->setHeight($height);
     }
     if (is_null($size) && $fetchMetaData) {
         $curlHelper = new CurlHelper();
         $size = $curlHelper->getContentLength($url);
     }
     $image->setSize($size);
     return $image;
 }
예제 #2
0
 /**
  * @param Crawler $crawler
  * @return ExtractedStats
  */
 public function extractStats(Crawler $crawler)
 {
     $views = intval(str_replace(',', '', StringHelper::filterText($crawler, '.under-title-info span:nth-of-type(2)')));
     $stats = new ExtractedStats();
     $stats->setViews($views);
     return $stats;
 }
예제 #3
0
 /**
  * @param Crawler $crawler
  * @return ExtractedOwner
  */
 public function extractOwner(Crawler $crawler)
 {
     $owner = new ExtractedOwner();
     $owner->setAvatarByUrl($crawler->filter('.project-owner-info img.profile-list-image')->attr('src'));
     $owner->setName(StringHelper::filterText($crawler, '.project-owner-info .profile-list-name a'));
     return $owner;
 }
예제 #4
0
 /**
  * @param string $embedUrl
  */
 public function setEmbedUrl($embedUrl)
 {
     $this->embedUrl = $embedUrl;
     if (StringHelper::startsWith($this->embedUrl, '//')) {
         $this->embedUrl = 'https:' . $this->embedUrl;
     }
 }
예제 #5
0
 /**
  * @param Crawler $crawler
  * @return ExtractedStats
  */
 public function extractStats(Crawler $crawler)
 {
     $stats = new ExtractedStats();
     $stats->setDislikes(trim($crawler->filter("*[title='I dislike this']")->text()));
     $stats->setLikes(trim($crawler->filter("*[title='I like this']")->text()));
     $stats->setViews(str_replace(',', '', StringHelper::filterText($crawler, ".watch-view-count")));
     return $stats;
 }
예제 #6
0
 public function testContains()
 {
     $this->assertTrue(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'amet'));
     $this->assertTrue(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'amet magna'));
     $this->assertTrue(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'posuere'));
     $this->assertTrue(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'pis pos'));
     $this->assertFalse(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'turpisn'));
     $this->assertFalse(\pmill\Extract\Helper\StringHelper::contains($this->testString, 'auguefen'));
 }
예제 #7
0
파일: Basic.php 프로젝트: pmill/php-extract
 /**
  * @param Crawler $crawler
  * @return ExtractedAlbum
  */
 public function extract(Crawler $crawler)
 {
     $album = new ExtractedAlbum();
     $album->setTitle(StringHelper::filterText($crawler, 'title'));
     if ($crawler->filter("meta[name='description']")->count() > 0) {
         $album->setDescription($crawler->filter("meta[name='description']")->attr('content'));
     }
     $album->setImages($this->extractImages($crawler));
     return $album;
 }
예제 #8
0
 /**
  * @param string $url
  * @return string
  */
 public function findProvider($url)
 {
     $providerClassName = $this->fallbackProviderName;
     foreach ($this->providers as $domain => $className) {
         if (StringHelper::contains($url, $domain)) {
             $providerClassName = $className;
             break;
         }
     }
     return $providerClassName;
 }
예제 #9
0
 /**
  * @param Crawler $crawler
  * @return ExtractedOwner
  */
 public function extractOwner(Crawler $crawler)
 {
     $ownerImageProperty = $crawler->filter('.photo-attribution .avatar')->attr('style');
     preg_match("/background-image: url\\((.*)\\);/", $ownerImageProperty, $ownerImageOutput);
     $owner = new ExtractedOwner();
     if (count($ownerImageOutput) == 2) {
         $owner->setAvatarByUrl($ownerImageOutput[1]);
     }
     $owner->setName(StringHelper::filterText($crawler, '.owner-name:first-child'));
     return $owner;
 }
예제 #10
0
파일: Vimeo.php 프로젝트: pmill/php-extract
 /**
  * @return ExtractedStats|null
  */
 public function extractStats()
 {
     try {
         $statsCrawler = $this->getStatsPageCrawler();
         $stats = new ExtractedStats();
         $stats->setLikes(str_replace(',', '', StringHelper::filterText($statsCrawler, "#like_totals")));
         $views = StringHelper::filterText($statsCrawler, "#play_totals");
         if (StringHelper::endsWith($views, 'K')) {
             $views = rtrim($views, "K") * 1000;
         }
         $stats->setViews($views);
         return $stats;
     } catch (PageNotFoundException $e) {
         return null;
     } catch (ServerErrorException $e) {
         return null;
     }
 }
예제 #11
0
 /**
  * @param Crawler $crawler
  * @return ExtractedOwner
  */
 public function extractOwner(Crawler $crawler)
 {
     $owner = new ExtractedOwner();
     $owner->setName(StringHelper::filterText($crawler, '.under-title-info a'));
     return $owner;
 }