diff --git a/app/MetadataResolver/XtubeResolver.php b/app/MetadataResolver/XtubeResolver.php index d2b3272..58608dd 100644 --- a/app/MetadataResolver/XtubeResolver.php +++ b/app/MetadataResolver/XtubeResolver.php @@ -11,10 +11,15 @@ class XtubeResolver implements Resolver * @var Client */ private $client; + /** + * @var OGPResolver + */ + private $ogpResolver; - public function __construct(Client $client) + public function __construct(Client $client, OGPResolver $ogpResolver) { $this->client = $client; + $this->ogpResolver = $ogpResolver; } public function resolve(string $url): Metadata @@ -25,17 +30,14 @@ class XtubeResolver implements Resolver $res = $this->client->get($url); $html = (string) $res->getBody(); - $metadata = new Metadata(); + $metadata = $this->ogpResolver->parse($html); $crawler = new Crawler($html); - // poster URL抽出 - $playerConfig = explode("\n", trim($crawler->filter('#playerWrapper script')->last()->text())); - preg_match('~https:\\\/\\\/cdn\d+-s-hw-e5\.xtube\.com\\\/m=(?P.{8})\\\/videos\\\/\d{6}\\\/\d{2}\\\/.{5}-.{4}-\\\/original\\\/\d+\.jpg~', $playerConfig[0], $matches); - $metadata->image = str_replace('\/', '/', $matches[0]); - $metadata->title = trim($crawler->filter('.underPlayerRateForm h1')->text('')); $metadata->description = trim($crawler->filter('.fullDescription ')->text('')); - $metadata->tags = $crawler->filter('.tagsCategories a')->extract('_text'); + $metadata->image = str_replace('m=eSuQ8f', 'm=eaAaaEFb', $metadata->image); + $metadata->image = str_replace('240X180', 'original', $metadata->image); + $metadata->tags = array_map('trim', $crawler->filter('.tagsCategories a')->extract('_text')); return $metadata; } diff --git a/tests/fixture/Xtube/video.html b/tests/fixture/Xtube/video.html index ef4cbc5..893b8b1 100644 --- a/tests/fixture/Xtube/video.html +++ b/tests/fixture/Xtube/video.html @@ -1,9 +1,23 @@ - - - + + + + + + + + + + + + + + + + + @@ -11,21 +25,21 @@ - - - - - + + + + + - + - + - + @@ -136,13 +150,16 @@