File: //tmp/geekdecoder_asset_check.py
import re
import ssl
import urllib.request
ctx = ssl._create_unverified_context()
html = urllib.request.urlopen('https://geekdecoder.com/', context=ctx, timeout=15).read().decode('utf-8', 'ignore')
urls = []
for url in re.findall(r'''(?:href|src)=["']([^"']+)["']''', html):
if url.startswith('https://geekdecoder.com/') and re.search(r'\.(css|js)(\?|$)', url):
if url not in urls:
urls.append(url)
bad = []
for url in urls[:100]:
try:
response = urllib.request.urlopen(url, context=ctx, timeout=12)
code = response.getcode()
if code >= 400:
bad.append((code, url))
except Exception as exc:
bad.append((type(exc).__name__, url))
print(f'asset_count={len(urls)}')
print(f'bad_asset_count={len(bad)}')
for code, url in bad[:30]:
print(f'bad_asset status={code} url={url}')
print('sample_assets:')
for url in urls[:20]:
print(url)