Bikarhêner:Balyozxane/skrîpt/py/addsortkey.py

Ji Wîkîpediya, ensîklopediya azad.
#!/usr/bin/env python3
"""
python pwb.py updatewin -f:"addsortkey.py" -s:"Nû"
"""

import re
import pywikibot
import json
from pywikibot import textlib
from kucosmetics import CANCEL, CosmeticChangesToolkit

site = pywikibot.Site("ku", "wikipedia")


def do_kozmetik(page, old_text):
    kozmetik_cebu = ""
    cc_toolkit = CosmeticChangesToolkit(page, ignore=CANCEL.MATCH)
    new_text, summaries = cc_toolkit.change(old_text)
    applied_summaries = ', '.join(summaries.values())
    if new_text is not False and new_text != old_text:
        kozmetik_cebu = "; paqijiyên kozmetîk"
        if applied_summaries:
            kozmetik_cebu += f' ({applied_summaries}.)'

    return new_text, kozmetik_cebu


# Function to add a sort key to a category
def add_sort_key_to_category(main_cat, category_title, sort_key):
    page = pywikibot.Page(site, category_title)
    text = page.text
    new_text = text
    categories = textlib.getCategoryLinks(new_text, site=site)
    if categories:
        new_main = pywikibot.Category(site, main_cat, sort_key=sort_key)
        categories.pop(categories.index(new_main))
        categories.insert(0, new_main)
        new_text = textlib.replaceCategoryLinks(new_text, categories, site=site)

    if text != new_text:
        cleaned_new_text, kozmetik_cebu = do_kozmetik(page, new_text)

        page.text = cleaned_new_text
        page.save(summary=f"[[Bikarhêner:Balyozxane/skrîpt/py/addsortkey.py|Bot]]: Kilîda rêzkirinê li [[{main_cat}]] hat zêdekirin{kozmetik_cebu}")


def main():
    page = pywikibot.Page(site, 'Wîkîpediya:AddSortKey.json')  # Specify the page title
    text = page.text  # Get the page content
    json_data = {}
    kats = None
    pattern = None
    sereke = None

    try:
        json_data = json.loads(text)  # Parse the JSON content
    except json.JSONDecodeError as e:
        print("Failed to parse JSON:", e)

    if not json_data:
        return

    for key, value in json_data.items():
        sereke = key
        pattern = value["pattern"]
        kats = value["kats"]

        print("sereke")
        print(sereke)
        for cat in kats:
            match = re.search(pattern, cat)
            if match:
                sort_key = match.group(1)
                print(cat)
                print(sort_key)
                add_sort_key_to_category(sereke, cat, sort_key)

    page.text = "{}"
    page.save(summary="[[Bikarhêner:Balyozxane/skrîpt/py/addsortkey.py|Bot]]: Hemû çêbû")


if __name__ == "__main__":
    main()