AzLearn

تمرين إعادة البناء

منظف روابط محلي

نظّف روابط من 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()
اكتب هنا