User:DannyS712 test/Bilateral bot.js

(function { var BL_bot_config = {	name: 'Bilateral bot',	testing: false,	disclaimer: "Bot in trial (BRFA)",	version: 1.4,	debug: false }; var BL_bot_summary = 'Task 4: Add a short description with ' + BL_bot_config.name + ' (version ' + BL_bot_config.version + ')'; if (BL_bot_config.testing){	BL_bot_advert = BL_bot_config.disclaimer + ": " + BL_bot_advert; }

var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php'; var names = { "Afghanistan": "The Islamic Republic of Afghanistan", "Albania": "the Republic of Albania", "Algeria": "the People's Democratic Republic of Algeria", "Andorra": "the Principality of Andorra", "Angola": "the Republic of Angola", "Antigua and Barbuda": "Antigua and Barbuda", "Argentina": "the Argentine Republic", "Armenia": "the Republic of Armenia", "Australia": "Australia", "Austria": "the Republic of Austria", "Azerbaijan": "the Republic of Azerbaijan", "Bahamas": "the Commonwealth of the Bahamas", "Bahrain": "the Kingdom of Bahrain", "Bangladesh": "the People's Republic of Bangladesh", "Barbados": "Barbados", "Belarus": "the Republic of Belarus", "Belgium": "the Kingdom of Belgium", "Belize": "Belize", "Benin": "the Republic of Benin", "Bhutan": "the Kingdom of Bhutan", "Bolivia": "the Plurinational State of Bolivia", "Bosnia and Herzegovina": "Bosnia and Herzegovina", "Botswana": "the Republic of Botswana", "Brazil": "the Federative Republic of Brazil", "Brunei Darussalam": "Brunei Darussalam", "Bulgaria": "the Republic of Bulgaria", "Burkina Faso": "Burkina Faso", "Burundi": "the Republic of Burundi", "Cabo Verde": "Republic of Cabo Verde", "Cambodia": "the Kingdom of Cambodia", "Cameroon": "the Republic of Cameroon", "Canada": "Canada", "Central African Republic": "the Central African Republic", "Chad": "the Republic of Chad", "Chile": "the Republic of Chile", "China": "the People's Republic of China", "Colombia": "the Republic of Colombia", "Comoros": "the Union of the Comoros", "Congo": "the Republic of the Congo", "Cook Islands": "the Cook Islands", "Costa Rica": "the Republic of Costa Rica", "Croatia": "the Republic of Croatia", "Cuba": "the Republic of Cuba", "Cyprus": "the Republic of Cyprus", "Czechia": "the Czech Republic", "Côte d'Ivoire": "the Republic of Côte d'Ivoire", "Ivory Coast": "the Republic of Côte d'Ivoire", "Democratic People's Republic of Korea": "the Democratic People's Republic of Korea", "Democratic Republic of the Congo": "the Democratic Republic of the Congo", "Denmark": "the Kingdom of Denmark", "Djibouti": "the Republic of Djibouti", "Dominica": "the Commonwealth of Dominica", "Dominican Republic": "the Dominican Republic", "Ecuador": "the Republic of Ecuador", "Egypt": "the Arab Republic of Egypt", "El Salvador": "the Republic of El Salvador", "Equatorial Guinea": "the Republic of Equatorial Guinea", "Eritrea": "the State of Eritrea", "Estonia": "the Republic of Estonia", "Eswatini": "the Kingdom of Eswatini", "Ethiopia": "the Federal Democratic Republic of Ethiopia", "Faroe Islands": "Faroe Islands", "Fiji": "the Republic of Fiji", "Finland": "the Republic of Finland", "France": "the French Republic", "Gabon": "the Gabonese Republic", "Gambia": "the Republic of the Gambia", "Georgia (country)": "Georgia", "Germany": "the Federal Republic of Germany", "Ghana": "the Republic of Ghana", "Greece": "the Hellenic Republic", "Grenada": "Grenada", "Guatemala": "the Republic of Guatemala", "Guinea": "the Republic of Guinea", "Guinea-Bissau": "the Republic of Guinea-Bissau", "Guyana": "the Republic of Guyana", "Haiti": "the Republic of Haiti", "Honduras": "the Republic of Honduras", "Hungary": "Hungary", "Iceland": "the Republic of Iceland", "India": "the Republic of India", "Indonesia": "the Republic of Indonesia", "Iran (Islamic Republic of)": "the Islamic Republic of Iran", "Iran": "the Islamic Republic of Iran", "Iraq": "the Republic of Iraq", "Ireland": "Ireland", "Israel": "the State of Israel", "Italy": "the Republic of Italy", "Jamaica": "Jamaica", "Japan": "Japan", "Jordan": "the Hashemite Kingdom of Jordan", "Kazakhstan": "the Republic of Kazakhstan", "Kenya": "the Republic of Kenya", "Kiribati": "the Republic of Kiribati", "Kuwait": "the State of Kuwait", "Kyrgyzstan": "the Kyrgyz Republic", "Lao People's Democratic Republic": "the Lao People's Democratic Republic", "Laos": "the Lao People's Democratic Republic", "Latvia": "the Republic of Latvia", "Lebanon": "the Lebanese Republic", "Lesotho": "the Kingdom of Lesotho", "Liberia": "the Republic of Liberia", "Libya": "State of Libya", "Lithuania": "the Republic of Lithuania", "Luxembourg": "the Grand Duchy of Luxembourg", "Madagascar": "the Republic of Madagascar", "Malawi": "the Republic of Malawi", "Malaysia": "Malaysia", "Maldives": "the Republic of Maldives", "Mali": "the Republic of Mali", "Malta": "the Republic of Malta", "Marshall Islands": "the Republic of the Marshall Islands", "Mauritania": "the Islamic Republic of Mauritania", "Mauritius": "the Republic of Mauritius", "Mexico": "the United Mexican States", "Micronesia (Federated States of)": "the Federated States of Micronesia", "Micronesia": "the Federated States of Micronesia", "Monaco": "the Principality of Monaco", "Mongolia": "Mongolia", "Montenegro": "Montenegro", "Morocco": "the Kingdom of Morocco", "Mozambique": "the Republic of Mozambique", "Myanmar": "the Republic of the Union of Myanmar", "Namibia": "the Republic of Namibia", "Nauru": "the Republic of Nauru", "Nepal": "the Federal Democratic Republic of Nepal", "Netherlands": "the Kingdom of the Netherlands", "New Zealand": "New Zealand", "Nicaragua": "the Republic of Nicaragua", "Niger": "the Republic of the Niger", "Nigeria": "the Federal Republic of Nigeria", "Niue": "Niue", "Norway": "the Kingdom of Norway", "Oman": "the Sultanate of Oman", "Pakistan": "the Islamic Republic of Pakistan", "Palau": "the Republic of Palau", "Panama": "the Republic of Panama", "Papua New Guinea": "Independent State of Papua New Guinea", "Paraguay": "the Republic of Paraguay", "Peru": "the Republic of Peru", "Philippines": "the Republic of the Philippines", "Poland": "the Republic of Poland", "Portugal": "the Portuguese Republic", "Qatar": "the State of Qatar", "Republic of Korea": "the Republic of Korea", "Republic of Moldova": "the Republic of Moldova", "Romania": "Romania", "Russian Federation": "the Russian Federation", "Rwanda": "the Republic of Rwanda", "Saint Kitts and Nevis": "Saint Kitts and Nevis", "Saint Lucia": "Saint Lucia", "Saint Vincent and the Grenadines": "Saint Vincent and the Grenadines", "Samoa": "the Independent State of Samoa", "San Marino": "the Republic of San Marino", "Sao Tome and Principe": "the Democratic Republic of Sao Tome and Principe", "Saudi Arabia": "the Kingdom of Saudi Arabia", "Senegal": "the Republic of Senegal", "Serbia": "the Republic of Serbia", "Seychelles": "the Republic of Seychelles", "Sierra Leone": "the Republic of Sierra Leone", "Singapore": "the Republic of Singapore", "Slovakia": "the Slovak Republic", "Slovenia": "the Republic of Slovenia", "Solomon Islands": "Solomon Islands", "Somalia": "the Federal Republic of Somalia", "South Africa": "the Republic of South Africa", "South Sudan": "the Republic of South Sudan", "Spain": "the Kingdom of Spain", "Sri Lanka": "the Democratic Socialist Republic of Sri Lanka", "Sudan": "the Republic of the Sudan", "Suriname": "the Republic of Suriname", "Sweden": "the Kingdom of Sweden", "Switzerland": "the Swiss Confederation", "Syrian Arab Republic": "the Syrian Arab Republic", "Tajikistan": "the Republic of Tajikistan", "Thailand": "the Kingdom of Thailand", "The former Yugoslav Republic of Macedonia": "The former Yugoslav Republic of Macedonia", "Macedonia": "Republic of Macedonia", "Timor-Leste": "the Democratic Republic of Timor-Leste", "Togo": "the Togolese Republic", "Tokelau": "Tokelau", "Tonga": "the Kingdom of Tonga", "Trinidad and Tobago": "the Republic of Trinidad and Tobago", "Tunisia": "the Republic of Tunisia", "Turkey": "the Republic of Turkey", "Turkmenistan": "Turkmenistan", "Tuvalu": "Tuvalu", "Uganda": "the Republic of Uganda", "Ukraine": "Ukraine", "United Arab Emirates": "the United Arab Emirates", "United Kingdom": "the United Kingdom of Great Britain and Northern Ireland", "United Republic of Tanzania": "the United Republic of Tanzania", "Tanzania": "the United Republic of Tanzania", "United States of America": "the United States of America", "United States": "the United States of America", "Uruguay": "the Eastern Republic of Uruguay", "Uzbekistan": "the Republic of Uzbekistan", "Vanuatu": "the Republic of Vanuatu", "Venezuela (Bolivarian Republic of)": "the Bolivarian Republic of Venezuela", "Venezuela": "the Bolivarian Republic of Venezuela", "Vietnam": "the Socialist Republic of Viet Nam", "Yemen": "the Republic of Yemen", "Zambia": "the Republic of Zambia", "Zimbabwe": "the Republic of Zimbabwe", "Austria-Hungary": "the Austro-Hungarian Empire", "Austrian Empire": "the Austrian Empire", "Great Britain": "Kingdom of Great Britain", "Hawaii": "the Kingdom of Hawaii", "Holy Roman Empire": "the Holy Roman Empire", "England": "the Kingdom of England", "Ottoman": "the Ottoman Empire", "Soviet Union": "the Union of Soviet Socialist Republics", "Czechoslovakia": "Czechoslovakia", "Sino": "The Republic of China" }; mw.loader.using( 'mediawiki.util', function {    $(document).ready( function  { mw.util.addPortletLink( 'p-cactions', 'javascript:void(0)', 'Bilateral bot', 'ca-bilateral-bot', 'bilateral-bot'); $('#ca-bilateral-bot').click( function ( event ) {           event.preventDefault;            if ( mw.config.get( 'wgNamespaceNumber' ) == 14) bot_run( mw.config.get( 'wgPageName' ));            else console.log("Error - must be run at the category's page");        } ); } ); } ); function bot_run( cat_name ){ var ar_of_pages = get_page_list( cat_name, 0); console.log( ar_of_pages ); for (var jjj = 0; jjj < ar_of_pages.length; jjj++){ bilateral_run( ar_of_pages[jjj]); } } function bilateral_run( title ){ var regex = /([a-z]+(?: [a-z]+)*)[–-]([a-z]+(?: [a-z]+)*) relations/gi; var match = regex.exec( title ); console.log( title, match ); if (match !== null){ var content = get_page( title ); if( BL_bot_config.debug) console.log( content ); var already_has = false; if (content.indexOf('{{Short description\|') > -1) already_has = true; console.log( already_has ); if (!(already_has)){ for (var iii = 0; iii < match.length; iii++){ if (match[iii] in names){ match[iii] = names[match[iii]]; }			}			//console.log ( match ); var short_desc = "{{Short description|1=Diplomatic relations between " + match[1] + " and " + match[2] + "}}"; //console.log ( short_desc ); var new_content = short_desc + "\n" + content; if( BL_bot_config.debug) console.log( new_content ); set_new( title, new_content ); }	} } function get_page_list( category, current_depth ){ var get_pages = { action: 'query', list: 'categorymembers', cmlimit: 'max', cmtitle: category, cmprop: 'title', format: 'json' };   var result = null; $.ajax({		url: scriptUrl,		type: 'get',		data: get_pages,		dataType: 'json',		async: false,		success: function(catResponse) {	   	//console.log( catResponse );			var pages = catResponse.query.categorymembers;			//console.log( pages );			var good_pages = [];			var sub_cats = [];			for (var i = 0; i < pages.length; i++) {				if ( pages[i].ns === 0 ) {					var regex = /([a-z]+(?: [a-z]+)*)–([a-z]+(?: [a-z]+)*) relations/gi;					var match = regex.exec( pages[i].title);					if (match !== null) good_pages.push(pages[i].title);				}				else if (pages[i].ns === 14) {					sub_cats.push(pages[i].title);				}			}			console.log( good_pages );			console.log( sub_cats );			if (current_depth < 1){				for (var j = 0; j < sub_cats.length; j++){					good_pages = good_pages.concat( get_page_list(sub_cats[j], current_depth + 1));				}			}			result = good_pages;			//console.log( result );		} 	}); return result; } function get_page( name ){ var page_to_get = { action: 'query', titles: name, prop: 'revisions', rvprop: 'content', format: 'json', formatversion: 2 };   var result = null; $.ajax({		url: scriptUrl,		type: 'get',		data: page_to_get,		dataType: 'json',		async: false,		success: function(page) {			//console.log( page );	   	result = page.query.pages["0"].revisions["0"].content;	    	//console.log( result );		} 	}); return result; } function set_new ( page, new_content ){ if( BL_bot_config.debug) console.log( page, new_content ); var to_send = { action: 'edit', title: page, //pageid: mw.config.get( 'wgArticleId' ), text: new_content, notminor: true, bot: true, summary: BL_bot_summary, token: mw.user.tokens.get( 'csrfToken' ) };   console.log( to_send ); $.when(       $.post( scriptUrl, to_send, function( response ){ } )    ).done( function {        //alert('Short description added');        console.log( response );        //location.reload;    } ); } });