-
Notifications
You must be signed in to change notification settings - Fork 0
/
check_dead_links.py
54 lines (43 loc) · 1.47 KB
/
check_dead_links.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import requests
import json
CUSTOM_404_SIGNATURES = {
"github.com": "Page not found",
"projectkorra.com": "The requested page could not be found."
}
def check_url(url):
try:
response = requests.get(url, allow_redirects=True)
if response.status_code == 404:
return False
for domain, signature in CUSTOM_404_SIGNATURES.items():
if domain in url and signature in response.text:
print(f"404 detected for {url}")
return False
return True
except requests.RequestException:
return False
def update_json(file_path):
with open(file_path, 'r') as f:
data = json.load(f)
updated = False
for entry in data:
download_url = entry.get('download_url')
source_url = entry.get('source_url')
if download_url and not check_url(download_url):
print(f"Dead link found: {download_url}")
entry['download_url'] = 'DEAD LINK'
updated = True
if source_url and not check_url(source_url):
print(f"Dead link found: {source_url}")
entry['source_url'] = 'DEAD LINK'
updated = True
if updated:
with open(file_path, 'w') as f:
json.dump(data, f, indent=4)
return True
return False
if __name__ == "__main__":
if update_json('forum.json'):
print("forum.json updated")
if update_json('github.json'):
print("github.json updated")