From 28bf526d53eb9169f908ea6c2a51de5bdfa422c8 Mon Sep 17 00:00:00 2001 From: ghost Date: Tue, 9 May 2023 13:26:19 +0300 Subject: [PATCH] add host nsfw settings --- config/app.php.txt | 21 ++++++++++++++++----- crontab/crawler.php | 9 +++++++++ database/yggo.mwb | Bin 21202 -> 21357 bytes library/mysql.php | 6 +++--- public/api.php | 3 ++- public/search.php | 3 +++ 6 files changed, 33 insertions(+), 9 deletions(-) diff --git a/config/app.php.txt b/config/app.php.txt index c5af62a..8469469 100644 --- a/config/app.php.txt +++ b/config/app.php.txt @@ -270,14 +270,24 @@ define('CRAWL_HOST_DEFAULT_STATUS', true); define('CRAWL_HOST_DEFAULT_META_ONLY', false); /* - * Images limit per new host by default + * Not suitable/safe for work status for new host by default * - * Crawler stops indexing on this limit reach to prevent disk overuse + * Could be filtered in search results + * + * Custom rule for specified host could be provided in the DB `host`.`nsfw` field + * + */ +define('CRAWL_HOST_DEFAULT_NSFW', false); + +/* + * Not suitable/safe for work status for new host by default + * + * Could be filtered in crawl conditions or search results * - * Custom rule for specified host could be provided in the DB `host`.`crawlImageLimit` field + * Custom rule for specified host could be provided in the DB `host`.`nsfw` field * */ -define('CRAWL_HOST_DEFAULT_IMAGES_LIMIT', 1000); +define('CRAWL_HOST_DEFAULT_NSFW', false); /* * Default robots.txt rules on remote file not exists @@ -314,7 +324,7 @@ define('CRAWL_MANIFEST', true); * Manifest API version compatibility * */ -define('CRAWL_MANIFEST_API_VERSION', 0.6); +define('CRAWL_MANIFEST_API_VERSION', 0.7); /* * Set default auto-crawl status for new manifest added @@ -438,6 +448,7 @@ define('API_HOSTS_FIELDS', `host`.`crawlImageLimit`, `host`.`robots`, `host`.`robotsPostfix`, + `host`.`nsfw`, `host`.`timeAdded`, `host`.`timeUpdated`, (SELECT COUNT(*) FROM `hostPage` WHERE `hostPage`.`hostId` = `host`.`hostId`) AS `hostPagesTotal`, diff --git a/crontab/crawler.php b/crontab/crawler.php index fea424b..a390572 100644 --- a/crontab/crawler.php +++ b/crontab/crawler.php @@ -171,6 +171,7 @@ try { if ($host = $db->getHost(crc32($hostURL))) { $hostStatus = $host->status; + $hostNsfw = $host->nsfw; $hostPageLimit = $host->crawlPageLimit; $hostImageLimit = $host->crawlImageLimit; $hostId = $host->hostId; @@ -198,6 +199,7 @@ try { $hostRobotsPostfix = CRAWL_ROBOTS_POSTFIX_RULES; $hostStatus = CRAWL_HOST_DEFAULT_STATUS; + $hostNsfw = CRAWL_HOST_DEFAULT_NSFW; $hostPageLimit = CRAWL_HOST_DEFAULT_PAGES_LIMIT; $hostImageLimit= CRAWL_HOST_DEFAULT_IMAGES_LIMIT; @@ -211,6 +213,7 @@ try { $hostImageLimit, (string) CRAWL_HOST_DEFAULT_META_ONLY, (string) $hostStatus, + (string) $hostNsfw, $hostRobots, $hostRobotsPostfix); @@ -534,6 +537,7 @@ try { if ($host = $db->getHost(crc32($hostImageURL->string))) { $hostStatus = $host->status; + $hostNsfw = $host->nsfw; $hostPageLimit = $host->crawlPageLimit; $hostImageLimit = $host->crawlImageLimit; $hostId = $host->hostId; @@ -561,6 +565,7 @@ try { $hostRobotsPostfix = CRAWL_ROBOTS_POSTFIX_RULES; $hostStatus = CRAWL_HOST_DEFAULT_STATUS; + $hostNsfw = CRAWL_HOST_DEFAULT_NSFW; $hostPageLimit = CRAWL_HOST_DEFAULT_PAGES_LIMIT; $hostImageLimit= CRAWL_HOST_DEFAULT_IMAGES_LIMIT; $hostId = $db->addHost($hostImageURL->scheme, @@ -573,6 +578,7 @@ try { $hostImageLimit, (string) CRAWL_HOST_DEFAULT_META_ONLY, (string) $hostStatus, + (string) $hostNsfw, $hostRobots, $hostRobotsPostfix); @@ -692,6 +698,7 @@ try { if ($host = $db->getHost(crc32($hostURL->string))) { $hostStatus = $host->status; + $hostNsfw = $host->nsfw; $hostPageLimit = $host->crawlPageLimit; $hostImageLimit = $host->crawlImageLimit; $hostId = $host->hostId; @@ -719,6 +726,7 @@ try { $hostRobotsPostfix = CRAWL_ROBOTS_POSTFIX_RULES; $hostStatus = CRAWL_HOST_DEFAULT_STATUS; + $hostNsfw = CRAWL_HOST_DEFAULT_NSFW; $hostPageLimit = CRAWL_HOST_DEFAULT_PAGES_LIMIT; $hostImageLimit= CRAWL_HOST_DEFAULT_IMAGES_LIMIT; $hostId = $db->addHost($hostURL->scheme, @@ -731,6 +739,7 @@ try { $hostImageLimit, (string) CRAWL_HOST_DEFAULT_META_ONLY, (string) $hostStatus, + (string) $hostNsfw, $hostRobots, $hostRobotsPostfix); diff --git a/database/yggo.mwb b/database/yggo.mwb index 330c00553ff83703fc9c9aa847ba8e03d39bd15f..fd58c141df3b75561adb5070cc974388b0f57386 100644 GIT binary patch delta 20205 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 U0002Cfyk41QXT?$Qj?fcI#!kccmMzZ delta 20100 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 B0x19h diff --git a/library/mysql.php b/library/mysql.php index c21a4a7..9dddd2b 100644 --- a/library/mysql.php +++ b/library/mysql.php @@ -102,11 +102,11 @@ class MySQL { return $query->fetch()->total; } - public function addHost(string $scheme, string $name, mixed $port, int $crc32url, int $timeAdded, mixed $timeUpdated, int $crawlPageLimit, int $crawlImageLimit, string $crawlMetaOnly, string $status, mixed $robots, mixed $robotsPostfix) { + public function addHost(string $scheme, string $name, mixed $port, int $crc32url, int $timeAdded, mixed $timeUpdated, int $crawlPageLimit, int $crawlImageLimit, string $crawlMetaOnly, string $status, string $nsfw, mixed $robots, mixed $robotsPostfix) { - $query = $this->_db->prepare('INSERT INTO `host` (`scheme`, `name`, `port`, `crc32url`, `timeAdded`, `timeUpdated`, `crawlPageLimit`, `crawlImageLimit`, `crawlMetaOnly`, `status`, `robots`, `robotsPostfix`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); + $query = $this->_db->prepare('INSERT INTO `host` (`scheme`, `name`, `port`, `crc32url`, `timeAdded`, `timeUpdated`, `crawlPageLimit`, `crawlImageLimit`, `crawlMetaOnly`, `status`, `nsfw`, `robots`, `robotsPostfix`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); - $query->execute([$scheme, $name, $port, $crc32url, $timeAdded, $timeUpdated, $crawlPageLimit, $crawlImageLimit, $crawlMetaOnly, $status, $robots, $robotsPostfix]); + $query->execute([$scheme, $name, $port, $crc32url, $timeAdded, $timeUpdated, $crawlPageLimit, $crawlImageLimit, $crawlMetaOnly, $status, $nsfw, $robots, $robotsPostfix]); return $this->_db->lastInsertId(); } diff --git a/public/api.php b/public/api.php index 9639022..becf6ae 100644 --- a/public/api.php +++ b/public/api.php @@ -1,7 +1,7 @@ [ 'websiteDomain' => WEBSITE_DOMAIN, 'crawlUrlRegexp' => CRAWL_URL_REGEXP, + 'crawlHostDefaultNsfw' => CRAWL_HOST_DEFAULT_NSFW, 'crawlHostDefaultPagesLimit' => CRAWL_HOST_DEFAULT_PAGES_LIMIT, 'crawlHostDefaultImagesLimit' => CRAWL_HOST_DEFAULT_IMAGES_LIMIT, 'crawlHostDefaultStatus' => CRAWL_HOST_DEFAULT_STATUS, diff --git a/public/search.php b/public/search.php index b801fab..8567163 100644 --- a/public/search.php +++ b/public/search.php @@ -59,6 +59,7 @@ if (filter_var($q, FILTER_VALIDATE_URL) && preg_match(CRAWL_URL_REGEXP, $q)) { if ($host = $db->getHost(crc32($hostURL->string))) { $hostStatus = $host->status; + $hostNsfw = $host->nsfw; $hostPageLimit = $host->crawlPageLimit; $hostId = $host->hostId; $hostRobots = $host->robots; @@ -82,6 +83,7 @@ if (filter_var($q, FILTER_VALIDATE_URL) && preg_match(CRAWL_URL_REGEXP, $q)) { $hostRobotsPostfix = CRAWL_ROBOTS_POSTFIX_RULES; $hostStatus = CRAWL_HOST_DEFAULT_STATUS; + $hostNsfw = CRAWL_HOST_DEFAULT_NSFW; $hostPageLimit = CRAWL_HOST_DEFAULT_PAGES_LIMIT; $hostId = $db->addHost($hostURL->scheme, $hostURL->name, @@ -92,6 +94,7 @@ if (filter_var($q, FILTER_VALIDATE_URL) && preg_match(CRAWL_URL_REGEXP, $q)) { $hostPageLimit, (string) CRAWL_HOST_DEFAULT_META_ONLY, (string) $hostStatus, + (string) $hostNsfw, $hostRobots, $hostRobotsPostfix); }