میڈیاویکی:Gadget-Peshkar-addCategories.js

تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

var peshkarAddEnCategories = (function() {

    // مربوط انگریزی صفحہ اخذ کیا جا رہا ہے
    async function getEnArticle() {
        const pageName = mw.config.get('wgPageName');
        const params = {
            action: 'query',
            titles: pageName,
            prop: 'langlinks',
            lllang: 'en',
            format: 'json',
            formatversion: 2
        };

        const mwapi = new mw.Api();
        try {
            const data = await mwapi.get(params);
            if (data && data.query && data.query.pages) {
                const page = data.query.pages[0];
                if (page.langlinks && page.langlinks.length > 0) {
                    return page.langlinks[0].title;
                }
            }
        } catch (error) {
            console.error('Failed to fetch English article:', error);
        }
        return null;
    }

    // مربوط انگریزی صفحے سے زمرے اخذ کیے جا رہے ہیں
    async function getEnCategories(englishTitle) {
        const endpoint = 'https://en.wikipedia.org/w/api.php';
        const params = new URLSearchParams({
            action: 'query',
            titles: englishTitle,
            prop: 'categories',
            cllimit: 'max',
            format: 'json',
            formatversion: 2,
            clshow: '!hidden'
        });

        try {
            const response = await fetch(`${endpoint}?origin=*&${params.toString()}`, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json'
                }
            });
            const data = await response.json();
            if (data.query && data.query.pages) {
                const page = data.query.pages[0];
                if (page.categories) {
                    return page.categories.map(cat => cat.title);
                }
            }
        } catch (error) {
            console.error('Failed to fetch English categories:', error);
        }
        return [];
    }

    // اردو زمروں کی موجودگی جانچی جا رہی ہے
    async function getUrCategory(englishCategory) {
        const endpoint = 'https://en.wikipedia.org/w/api.php';
        const params = new URLSearchParams({
            action: 'query',
            titles: englishCategory,
            prop: 'langlinks',
            lllang: 'ur',
            format: 'json',
            formatversion: 2
        });

        try {
            const response = await fetch(`${endpoint}?origin=*&${params.toString()}`, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json'
                }
            });
            const data = await response.json();
            if (data.query && data.query.pages) {
                const page = data.query.pages[0];
                if (page.langlinks && page.langlinks.length > 0) {
                    return page.langlinks[0].title;
                }
            }
        } catch (error) {
            console.error('Failed to fetch Urdu category:', error);
        }
        return null;
    }

    // اردو زمرے اکٹھا کیے جا رہے ہیں
    async function putUrduCategories() {
        const englishTitle = await getEnArticle();
        if (englishTitle) {
            const englishCategories = await getEnCategories(englishTitle);
            const urduCategories = [];

            for (const category of englishCategories) {
                const urduCategory = await getUrCategory(category);
                if (urduCategory) {
                    urduCategories.push(urduCategory);
                }
            }

            if (urduCategories.length > 0) {
                return urduCategories;
            } else {
                console.log('No Urdu categories found.');
            }
        } else {
            console.log('No linked English article found.');
        }
        return [];
    }

    return {
        putUrduCategories: putUrduCategories
    };
}());

if (typeof window !== "undefined") {
    window.peshkarAddEnCategories = peshkarAddEnCategories;
}