HentaiFoundryResolverを追加
This commit is contained in:
56
app/MetadataResolver/HentaiFoundryResolver.php
Normal file
56
app/MetadataResolver/HentaiFoundryResolver.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\MetadataResolver;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Cookie\CookieJar;
|
||||
use Symfony\Component\DomCrawler\Crawler;
|
||||
|
||||
class HentaiFoundryResolver implements Resolver
|
||||
{
|
||||
/**
|
||||
* @var Client
|
||||
*/
|
||||
private $client;
|
||||
/**
|
||||
* @var OGPResolver
|
||||
*/
|
||||
private $ogpResolver;
|
||||
|
||||
public function __construct(Client $client, OGPResolver $ogpResolver)
|
||||
{
|
||||
$this->client = $client;
|
||||
$this->ogpResolver = $ogpResolver;
|
||||
}
|
||||
|
||||
private function nbsp2space(string $string): string
|
||||
{
|
||||
return str_replace("\xc2\xa0", ' ', $string);
|
||||
}
|
||||
|
||||
private function br2nl(string $string): string
|
||||
{
|
||||
return str_replace('<br>', PHP_EOL, $string);
|
||||
}
|
||||
|
||||
public function resolve(string $url): Metadata
|
||||
{
|
||||
$res = $this->client->get(
|
||||
http_build_url($url, ['query' => 'enterAgree=1']),
|
||||
['cookies' => new CookieJar()]
|
||||
);
|
||||
|
||||
$metadata = new Metadata();
|
||||
$crawler = new Crawler((string) $res->getBody());
|
||||
|
||||
$author = $crawler->filter('#picBox .boxtitle a')->text();
|
||||
$description = trim(strip_tags($this->nbsp2space($this->br2nl($crawler->filter('.picDescript')->html()))));
|
||||
|
||||
$metadata->title = $crawler->filter('#picBox .boxtitle .imageTitle')->text();
|
||||
$metadata->description = 'by ' . $author . PHP_EOL . $description;
|
||||
$metadata->image = 'https:' . $crawler->filter('img[src^="//picture"]')->attr('src');
|
||||
$metadata->tags = $crawler->filter('a[rel="tag"]')->extract('_text');
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
}
|
@@ -33,6 +33,7 @@ class MetadataResolver implements Resolver
|
||||
'~store\.steampowered\.com/app/\d+~' => SteamResolver::class,
|
||||
'~www\.xtube\.com/video-watch/.*-\d+$~'=> XtubeResolver::class,
|
||||
'~ss\.kb10uy\.org/posts/\d+$~' => Kb10uyShortStoryServerResolver::class,
|
||||
'~www\.hentai-foundry\.com/pictures/user/.+/\d+/.+~'=> HentaiFoundryResolver::class,
|
||||
];
|
||||
|
||||
public $mimeTypes = [
|
||||
|
Reference in New Issue
Block a user