تمرين إعادة البناء
منظف روابط محلي
نظّف روابط من stdin بإزالة معاملات التتبع الشائعة.
python
~15 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
import argparse
import sys
from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
TRACKING_PREFIXES = ("utm_",)
TRACKING_NAMES = {"fbclid", "gclid", "mc_cid", "mc_eid", "igshid"}
def clean_url(url: str) -> str:
parsed = urlparse(url.strip())
query = []
for key, value in parse_qsl(parsed.query, keep_blank_values=True):
if key in TRACKING_NAMES or key.startswith(TRACKING_PREFIXES):
continue
query.append((key, value))
return urlunparse(parsed._replace(query=urlencode(query), fragment=""))
def main() -> None:
parser = argparse.ArgumentParser(description="Clean tracking parameters from URLs read from stdin.")
parser.add_argument("url", nargs="?")
args = parser.parse_args()
values = [args.url] if args.url else sys.stdin.read().splitlines()
for value in values:
if value.strip():
print(clean_url(value))
if __name__ == "__main__":
main()اكتب هنا