Passed
Push — master ( 1193c4...ee1d1e )
by Darko
12:30
created
app/Services/Categorization/Categorizers/XxxCategorizer.php 1 patch
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -107,23 +107,23 @@  discard block
 block discarded – undo
107 107
         }
108 108
 
109 109
         // Check for known studios/sites
110
-        if (preg_match('/\b(' . self::KNOWN_STUDIOS . ')\b/i', $name)) {
110
+        if (preg_match('/\b('.self::KNOWN_STUDIOS.')\b/i', $name)) {
111 111
             return true;
112 112
         }
113 113
 
114 114
         // Check for known VR sites
115
-        if (preg_match('/\b(' . self::VR_SITES . ')\b/i', $name)) {
115
+        if (preg_match('/\b('.self::VR_SITES.')\b/i', $name)) {
116 116
             return true;
117 117
         }
118 118
 
119 119
         // Check for adult content indicators combined with video markers
120
-        if (preg_match('/\b(' . self::ADULT_KEYWORDS . ')\b/i', $name) &&
120
+        if (preg_match('/\b('.self::ADULT_KEYWORDS.')\b/i', $name) &&
121 121
             preg_match('/\b(720p|1080p|2160p|4k|mp4|mkv|avi|wmv)\b/i', $name)) {
122 122
             return true;
123 123
         }
124 124
 
125 125
         // Check for JAV/AV marker (common in Japanese adult releases)
126
-        if (preg_match('/\b(AV|JAV)\b/', $name) && preg_match('/\b(' . self::KNOWN_STUDIOS . ')\b/i', $name)) {
126
+        if (preg_match('/\b(AV|JAV)\b/', $name) && preg_match('/\b('.self::KNOWN_STUDIOS.')\b/i', $name)) {
127 127
             return true;
128 128
         }
129 129
 
@@ -131,7 +131,7 @@  discard block
 block discarded – undo
131 131
         // This pattern is very common for adult sites but rare for regular content
132 132
         if (preg_match('/^[A-Za-z]+[.\-_ ](19|20)?\d{2}[.\-_ ]\d{2}[.\-_ ]\d{2}[.\-_ ][A-Za-z]/i', $name)) {
133 133
             // Check it's not a TV daily show by checking for adult keywords or specific patterns
134
-            if (preg_match('/\b(' . self::ADULT_KEYWORDS . ')\b/i', $name)) {
134
+            if (preg_match('/\b('.self::ADULT_KEYWORDS.')\b/i', $name)) {
135 135
                 return true;
136 136
             }
137 137
             // Check for performer name patterns (firstname.lastname) after the date
@@ -169,7 +169,7 @@  discard block
 block discarded – undo
169 169
         }
170 170
 
171 171
         // Check for known VR site
172
-        $hasVRSite = preg_match('/\b(' . self::VR_SITES . ')\b/i', $name);
172
+        $hasVRSite = preg_match('/\b('.self::VR_SITES.')\b/i', $name);
173 173
 
174 174
         // Require either a VR site token, explicit VR180/VR360, or VR device
175 175
         if (!preg_match('/\bVR(?:180|360)\b/i', $name) &&
@@ -179,7 +179,7 @@  discard block
 block discarded – undo
179 179
         }
180 180
 
181 181
         // VR pattern matching - includes VR devices
182
-        $vrPattern = '/\b(' . self::VR_SITES . ')\b|\bVR(?:180|360)\b|\b(?:5K|6K|7K|8K)\b.*\bVR\b|\b(?:GearVR|Oculus|Quest[123]?|PSVR|Vive|Index|Pimax)\b/i';
182
+        $vrPattern = '/\b('.self::VR_SITES.')\b|\bVR(?:180|360)\b|\b(?:5K|6K|7K|8K)\b.*\bVR\b|\b(?:GearVR|Oculus|Quest[123]?|PSVR|Vive|Index|Pimax)\b/i';
183 183
 
184 184
         if (preg_match($vrPattern, $name)) {
185 185
             // VR sites are definitively adult content
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
                 return $this->matched(Category::XXX_VR, 0.95, 'vr_site');
188 188
             }
189 189
             // VR device with adult keywords
190
-            if (preg_match('/\bXXX\b/i', $name) || preg_match('/\b(' . self::ADULT_KEYWORDS . ')\b/i', $name)) {
190
+            if (preg_match('/\bXXX\b/i', $name) || preg_match('/\b('.self::ADULT_KEYWORDS.')\b/i', $name)) {
191 191
                 return $this->matched(Category::XXX_VR, 0.9, 'vr_device');
192 192
             }
193 193
         }
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
 
204 204
         // Check for adult markers
205 205
         $hasAdultMarker = preg_match('/\bXXX\b/i', $name) ||
206
-                          preg_match('/\b(' . self::KNOWN_STUDIOS . ')\b/i', strtolower($name)) ||
206
+                          preg_match('/\b('.self::KNOWN_STUDIOS.')\b/i', strtolower($name)) ||
207 207
                           preg_match('/\b(Hardcore|Porn|Sex|Anal|Creampie|MILF|Lesbian|Teen|Interracial)\b/i', $name);
208 208
 
209 209
         if (!$hasAdultMarker) {
@@ -234,12 +234,12 @@  discard block
 block discarded – undo
234 234
         $hasHD = preg_match('/\b(720p|1080p|2160p|HD|4K)\b/i', $name);
235 235
 
236 236
         // Studio + performer + HD resolution
237
-        if (preg_match('/^(' . self::KNOWN_STUDIOS . ')\.([A-Z][a-z]+).*?(720p|1080p|2160p|HD|4K)/i', $name)) {
237
+        if (preg_match('/^('.self::KNOWN_STUDIOS.')\.([A-Z][a-z]+).*?(720p|1080p|2160p|HD|4K)/i', $name)) {
238 238
             return $this->matched(Category::XXX_CLIPHD, 0.9, 'clip_hd_studio');
239 239
         }
240 240
 
241 241
         // Known studio with date pattern: site.YYYY.MM.DD or site.YY.MM.DD
242
-        if (preg_match('/^(' . self::KNOWN_STUDIOS . ')[.\-_ ](19|20)?\d{2}[.\-_ ]\d{2}[.\-_ ]\d{2}/i', $name)) {
242
+        if (preg_match('/^('.self::KNOWN_STUDIOS.')[.\-_ ](19|20)?\d{2}[.\-_ ]\d{2}[.\-_ ]\d{2}/i', $name)) {
243 243
             if ($hasHD) {
244 244
                 return $this->matched(Category::XXX_CLIPHD, 0.95, 'clip_hd_studio_date');
245 245
             }
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
         if (preg_match('/^([A-Z][a-zA-Z0-9]+)[.\-_ ](19|20)\d{2}[.\-_ ]\d{2}[.\-_ ]\d{2}[.\-_ ]/i', $name) &&
252 252
             !preg_match('/\b(S\d{2}E\d{2}|Documentary|Series)\b/i', $name)) {
253 253
             // Check if it has adult keywords or HD resolution
254
-            if ($hasHD || preg_match('/\b(' . self::ADULT_KEYWORDS . ')\b/i', $name)) {
254
+            if ($hasHD || preg_match('/\b('.self::ADULT_KEYWORDS.')\b/i', $name)) {
255 255
                 return $this->matched(Category::XXX_CLIPHD, 0.85, 'clip_hd_date_4digit');
256 256
             }
257 257
         }
@@ -263,7 +263,7 @@  discard block
 block discarded – undo
263 263
         }
264 264
 
265 265
         // JAV compact date pattern: site.YYMMDD (e.g., 10musume.121025)
266
-        if (preg_match('/^(' . self::KNOWN_STUDIOS . ')[.\-_ ](\d{6})/i', $name)) {
266
+        if (preg_match('/^('.self::KNOWN_STUDIOS.')[.\-_ ](\d{6})/i', $name)) {
267 267
             if ($hasHD) {
268 268
                 return $this->matched(Category::XXX_CLIPHD, 0.9, 'clip_hd_jav_date');
269 269
             }
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
         }
272 272
 
273 273
         // Known studio with XXX marker and HD resolution
274
-        if (preg_match('/^(' . self::KNOWN_STUDIOS . ')[.\-_ ].*\bXXX\b.*?(720p|1080p|2160p|HD|4K)/i', $name)) {
274
+        if (preg_match('/^('.self::KNOWN_STUDIOS.')[.\-_ ].*\bXXX\b.*?(720p|1080p|2160p|HD|4K)/i', $name)) {
275 275
             return $this->matched(Category::XXX_CLIPHD, 0.9, 'clip_hd_studio_xxx');
276 276
         }
277 277
 
@@ -323,8 +323,8 @@  discard block
 block discarded – undo
323 323
         }
324 324
 
325 325
         if (preg_match('/web[._ -]dl|web-?rip/i', $name) &&
326
-            (preg_match('/\b(' . self::ADULT_KEYWORDS . ')\b/i', $name) ||
327
-             preg_match('/\b(' . self::KNOWN_STUDIOS . ')\b/i', $name) ||
326
+            (preg_match('/\b('.self::ADULT_KEYWORDS.')\b/i', $name) ||
327
+             preg_match('/\b('.self::KNOWN_STUDIOS.')\b/i', $name) ||
328 328
              preg_match('/\b(XXX|Porn|Adult|JAV|Hentai)\b/i', $name))) {
329 329
             return $this->matched(Category::XXX_WEBDL, 0.85, 'webdl');
330 330
         }
Please login to merge, or discard this patch.