diff --git a/src/Parser/Common/UrlParser.php b/src/Parser/Common/UrlParser.php index ce6684ee..cfdb757f 100644 --- a/src/Parser/Common/UrlParser.php +++ b/src/Parser/Common/UrlParser.php @@ -2,6 +2,7 @@ namespace Jikan\Parser\Common; +use Jikan\Helper\JString; use Jikan\Model\Common\Url; use Symfony\Component\DomCrawler\Crawler; @@ -15,7 +16,7 @@ class UrlParser /** * @var Crawler */ - private $crawler; + private Crawler $crawler; /** * MalUrlParser constructor. @@ -34,8 +35,8 @@ public function __construct(Crawler $crawler) public function getModel(): Url { return new Url( - $this->crawler->text(), - $this->crawler->attr('href') + JString::cleanse($this->crawler->text()), + JString::cleanse($this->crawler->attr('href')) ); } } diff --git a/src/Parser/Producer/ProducerParser.php b/src/Parser/Producer/ProducerParser.php index 4cbc8ebb..40639063 100644 --- a/src/Parser/Producer/ProducerParser.php +++ b/src/Parser/Producer/ProducerParser.php @@ -241,16 +241,34 @@ public function getAnimeCount(): int */ public function getExternalLinks(): array { - $links = $this->crawler + $links = []; + + $availableAtLinks = $this->crawler ->filterXPath('//*[@id="content"]/div[1]/div[contains(@class, "user-profile-sns")]/span//a'); - if (!$links->count()) { + if (!$availableAtLinks->count()) { + return []; + } + + $links = array_merge($links, $availableAtLinks + ->each(function (Crawler $c) { + return (new UrlParser($c))->getModel(); + })); + + + $resourcesLinks = $this->crawler + ->filterXPath('//*[@id="content"]/div[1]/div[contains(@class, "pb16")]/span//a'); + + if (!$resourcesLinks->count()) { return []; } - return $links->each(function (Crawler $c) { - return (new UrlParser($c))->getModel(); - }); + $links = array_merge($links, $resourcesLinks + ->each(function (Crawler $c) { + return (new UrlParser($c))->getModel(); + })); + + return $links; } /**