import json import re import urllib.request from flask import make_response def jsonify(data, status=200): """Custom jsonify dengan indent 2 dan ensure_ascii False.""" response = make_response(json.dumps(data, indent=2, ensure_ascii=False), status) response.headers["Content-Type"] = "application/json; charset=utf-8" return response def validate_tiktok_url(url): """Validasi apakah URL adalah URL TikTok yang valid (video atau photo).""" patterns = [ r'https?://(www\.)?tiktok\.com/@[\w.]+/(video|photo)/\d+/?', r'https?://(vm|vt)\.tiktok\.com/[\w]+/?', r'https?://(www\.)?tiktok\.com/t/[\w]+/?', ] return any(re.match(pattern, url) for pattern in patterns) def resolve_url(url): """Mengikuti redirect URL untuk mendapatkan URL final (misal dari vt.tiktok ke tiktok.com/@user/video/id).""" try: req = urllib.request.Request( url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'} ) with urllib.request.urlopen(req, timeout=15) as response: return response.geturl() except Exception: return url