Initial commit
This commit is contained in:
53
api/utils.py
Normal file
53
api/utils.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# api/utils.py
|
||||
|
||||
import requests
|
||||
|
||||
def load_keywords():
|
||||
"""Load scam-related keywords from file."""
|
||||
try:
|
||||
with open("data/scam_keywords.txt", "r", encoding="utf-8") as f:
|
||||
# Ensure keywords are converted to lowercase
|
||||
return [line.strip().lower() for line in f]
|
||||
except FileNotFoundError:
|
||||
print("File 'scam_keywords.txt' not found.")
|
||||
return []
|
||||
|
||||
def load_numbers():
|
||||
"""Load scam phone numbers from file."""
|
||||
try:
|
||||
with open("data/scam_numbers.txt", "r", encoding="utf-8") as f:
|
||||
return [line.strip() for line in f]
|
||||
except FileNotFoundError:
|
||||
print("File 'scam_numbers.txt' not found.")
|
||||
return []
|
||||
|
||||
def load_domains():
|
||||
"""Load known scam domains from file."""
|
||||
try:
|
||||
with open("data/scam_domains.txt", "r", encoding="utf-8") as f:
|
||||
return [line.strip().lower() for line in f]
|
||||
except FileNotFoundError:
|
||||
print("File 'scam_domains.txt' not found.")
|
||||
return []
|
||||
|
||||
def load_shorteners():
|
||||
"""Load known URL shorteners from file."""
|
||||
try:
|
||||
with open("data/url_shorteners.txt", "r", encoding="utf-8") as f:
|
||||
return [line.strip().lower() for line in f]
|
||||
except FileNotFoundError:
|
||||
print("File 'url_shorteners.txt' not found.")
|
||||
return []
|
||||
|
||||
def resolve_redirect(url: str) -> str:
|
||||
"""
|
||||
Resolves redirects for shortened URLs like bit.ly, tinyurl, etc.
|
||||
Returns the final URL or the original if redirect fails.
|
||||
"""
|
||||
try:
|
||||
response = requests.head(url, allow_redirects=True, timeout=5)
|
||||
return response.url
|
||||
except Exception as e:
|
||||
print(f"[WARN] Failed to resolve redirect: {e}")
|
||||
return url
|
||||
|
||||
Reference in New Issue
Block a user