]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env python3 | |
2 | """ | |
3 | This script employs a VERY basic heuristic ('porn' in webpage.lower()) to check | |
4 | if we are not 'age_limit' tagging some porn site | |
5 | ||
6 | A second approach implemented relies on a list of porn domains, to activate it | |
7 | pass the list filename as the only argument | |
8 | """ | |
9 | ||
10 | # Allow direct execution | |
11 | import os | |
12 | import sys | |
13 | ||
14 | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
15 | ||
16 | from test.helper import gettestcases | |
17 | ||
18 | from yt_dlp.utils import compat_urllib_parse_urlparse, compat_urllib_request | |
19 | ||
20 | if len(sys.argv) > 1: | |
21 | METHOD = 'LIST' | |
22 | LIST = open(sys.argv[1]).read().decode('utf8').strip() | |
23 | else: | |
24 | METHOD = 'EURISTIC' | |
25 | ||
26 | for test in gettestcases(): | |
27 | if METHOD == 'EURISTIC': | |
28 | try: | |
29 | webpage = compat_urllib_request.urlopen(test['url'], timeout=10).read() | |
30 | except Exception: | |
31 | print('\nFail: {}'.format(test['name'])) | |
32 | continue | |
33 | ||
34 | webpage = webpage.decode('utf8', 'replace') | |
35 | ||
36 | RESULT = 'porn' in webpage.lower() | |
37 | ||
38 | elif METHOD == 'LIST': | |
39 | domain = compat_urllib_parse_urlparse(test['url']).netloc | |
40 | if not domain: | |
41 | print('\nFail: {}'.format(test['name'])) | |
42 | continue | |
43 | domain = '.'.join(domain.split('.')[-2:]) | |
44 | ||
45 | RESULT = ('.' + domain + '\n' in LIST or '\n' + domain + '\n' in LIST) | |
46 | ||
47 | if RESULT and ('info_dict' not in test or 'age_limit' not in test['info_dict'] | |
48 | or test['info_dict']['age_limit'] != 18): | |
49 | print('\nPotential missing age_limit check: {}'.format(test['name'])) | |
50 | ||
51 | elif not RESULT and ('info_dict' in test and 'age_limit' in test['info_dict'] | |
52 | and test['info_dict']['age_limit'] == 18): | |
53 | print('\nPotential false negative: {}'.format(test['name'])) | |
54 | ||
55 | else: | |
56 | sys.stdout.write('.') | |
57 | sys.stdout.flush() | |
58 | ||
59 | print() |