/** * @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; }
/** * @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; }
/** * @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; }
/** * @param string $embedUrl */ public function setEmbedUrl($embedUrl) { $this->embedUrl = $embedUrl; if (StringHelper::startsWith($this->embedUrl, '//')) { $this->embedUrl = 'https:' . $this->embedUrl; } }
/** * @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; }
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')); }
/** * @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; }
/** * @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; }
/** * @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; }
/** * @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; } }
/** * @param Crawler $crawler * @return ExtractedOwner */ public function extractOwner(Crawler $crawler) { $owner = new ExtractedOwner(); $owner->setName(StringHelper::filterText($crawler, '.under-title-info a')); return $owner; }