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