UNPKG

get-wikipedia-article

Version:

Fetch Wikipedia article resources (e.g. title, body, links...).

2 lines (1 loc) 8.55 kB
!function(a,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(a="undefined"!=typeof globalThis?globalThis:a||self).fullfiller=n()}(this,(function(){"use strict";class a extends Error{constructor(a,n){super(a),this.library=n}toString(){return`Error in \`${this.library}\` library:\n\t${this.message}`}}const n={aa:"Afar",ab:"Abkhazian",ace:"Achinese",ady:"Adyghe",af:"Afrikaans",ak:"Akan",als:"Alemannisch",alt:"Southern Altai",am:"Amharic",ami:"Amis",an:"Aragonese",ang:"Old English",anp:"Angika",ar:"Arabic",arc:"Aramaic",ary:"Moroccan Arabic",arz:"Egyptian Arabic",as:"Assamese",ast:"Asturian",atj:"Atikamekw",av:"Avaric",avk:"Kotava",awa:"Awadhi",ay:"Aymara",az:"Azerbaijani",azb:"South Azerbaijani",ba:"Bashkir",ban:"Balinese",bar:"Bavarian","bat-smg":"Samogitian",bcl:"Central Bikol",be:"Belarusian","be-x-old":"Belarusian (Taraškievica orthography)",bg:"Bulgarian",bh:"Bhojpuri",bi:"Bislama",bjn:"Banjar",blk:"Pa'O",bm:"Bambara",bn:"Bangla",bo:"Tibetan",bpy:"Bishnupriya",br:"Breton",bs:"Bosnian",bug:"Buginese",bxr:"Russia Buriat",ca:"Catalan","cbk-zam":"Chavacano",cdo:"Min Dong Chinese",ce:"Chechen",ceb:"Cebuano",ch:"Chamorro",cho:"Choctaw",chr:"Cherokee",chy:"Cheyenne",ckb:"Central Kurdish",co:"Corsican",cr:"Cree",crh:"Crimean Tatar",cs:"Czech",csb:"Kashubian",cu:"Church Slavic",cv:"Chuvash",cy:"Welsh",da:"Danish",dag:"Dagbani",de:"German",din:"Dinka",diq:"Zazaki",dsb:"Lower Sorbian",dty:"Doteli",dv:"Divehi",dz:"Dzongkha",ee:"Ewe",el:"Greek",eml:"Emiliano-Romagnolo",en:"English",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",ext:"Extremaduran",fa:"Persian",ff:"Fula",fi:"Finnish","fiu-vro":"võro",fj:"Fijian",fo:"Faroese",fr:"French",frp:"Arpitan",frr:"Northern Frisian",fur:"Friulian",fy:"Western Frisian",ga:"Irish",gag:"Gagauz",gan:"Gan Chinese",gcr:"Guianan Creole",gd:"Scottish Gaelic",gl:"Galician",glk:"Gilaki",gn:"Guarani",gom:"Goan Konkani",gor:"Gorontalo",got:"Gothic",gu:"Gujarati",guc:"Wayuu",gur:"Frafra",guw:"Gun",gv:"Manx",ha:"Hausa",hak:"Hakka Chinese",haw:"Hawaiian",he:"Hebrew",hi:"Hindi",hif:"Fiji Hindi",ho:"Hiri Motu",hr:"Croatian",hsb:"Upper Sorbian",ht:"Haitian Creole",hu:"Hungarian",hy:"Armenian",hyw:"Western Armenian",hz:"Herero",ia:"Interlingua",id:"Indonesian",ie:"Interlingue",ig:"Igbo",ii:"Sichuan Yi",ik:"Inupiaq",ilo:"Iloko",inh:"Ingush",io:"Ido",is:"Icelandic",it:"Italian",iu:"Inuktitut",ja:"Japanese",jam:"Jamaican Creole English",jbo:"Lojban",jv:"Javanese",ka:"Georgian",kaa:"Kara-Kalpak",kab:"Kabyle",kbd:"Kabardian",kbp:"Kabiye",kcg:"Tyap",kg:"Kongo",ki:"Kikuyu",kj:"Kuanyama",kk:"Kazakh",kl:"Kalaallisut",km:"Khmer",kn:"Kannada",ko:"Korean",koi:"Komi-Permyak",kr:"Kanuri",krc:"Karachay-Balkar",ks:"Kashmiri",ksh:"Colognian",ku:"Kurdish",kv:"Komi",kw:"Cornish",ky:"Kyrgyz",la:"Latin",lad:"Ladino",lb:"Luxembourgish",lbe:"Lak",lez:"Lezghian",lfn:"Lingua Franca Nova",lg:"Ganda",li:"Limburgish",lij:"Ligurian",lld:"Ladin",lmo:"Lombard",ln:"Lingala",lo:"Lao",lrc:"Northern Luri",lt:"Lithuanian",ltg:"Latgalian",lv:"Latvian",mad:"Madurese",mai:"Maithili","map-bms":"Basa Banyumasan",mdf:"Moksha",mg:"Malagasy",mh:"Marshallese",mhr:"Eastern Mari",mi:"Māori",min:"Minangkabau",mk:"Macedonian",ml:"Malayalam",mn:"Mongolian",mni:"Manipuri",mnw:"Mon",mr:"Marathi",mrj:"Western Mari",ms:"Malay",mt:"Maltese",mus:"Muscogee",mwl:"Mirandese",my:"Burmese",myv:"Erzya",mzn:"Mazanderani",na:"Nauru",nah:"Nāhuatl",nap:"Neapolitan",nds:"Low German","nds-nl":"Low Saxon",ne:"Nepali",new:"Newari",ng:"Ndonga",nia:"Nias",nl:"Dutch",nn:"Norwegian Nynorsk",no:"Norwegian",nov:"Novial",nqo:"N’Ko",nrm:"Norman",nso:"Northern Sotho",nv:"Navajo",ny:"Nyanja",oc:"Occitan",olo:"Livvi-Karelian",om:"Oromo",or:"Odia",os:"Ossetic",pa:"Punjabi",pag:"Pangasinan",pam:"Pampanga",pap:"Papiamento",pcd:"Picard",pcm:"Nigerian Pidgin",pdc:"Pennsylvania German",pfl:"Palatine German",pi:"Pali",pih:"Norfuk / Pitkern",pl:"Polish",pms:"Piedmontese",pnb:"Western Punjabi",pnt:"Pontic",ps:"Pashto",pt:"Portuguese",pwn:"Paiwan",qu:"Quechua",rm:"Romansh",rmy:"Vlax Romani",rn:"Rundi",ro:"Romanian","roa-rup":"Aromanian","roa-tara":"Tarantino",ru:"Russian",rue:"Rusyn",rw:"Kinyarwanda",sa:"Sanskrit",sah:"Yakut",sat:"Santali",sc:"Sardinian",scn:"Sicilian",sco:"Scots",sd:"Sindhi",se:"Northern Sami",sg:"Sango",sh:"Serbo-Croatian",shi:"Tachelhit",shn:"Shan",si:"Sinhala",simple:"Simple English",sk:"Slovak",skr:"Saraiki",sl:"Slovenian",sm:"Samoan",smn:"Inari Sami",sn:"Shona",so:"Somali",sq:"Albanian",sr:"Serbian",srn:"Sranan Tongo",ss:"Swati",st:"Southern Sotho",stq:"Saterland Frisian",su:"Sundanese",sv:"Swedish",sw:"Swahili",szl:"Silesian",szy:"Sakizaya",ta:"Tamil",tay:"Tayal",tcy:"Tulu",te:"Telugu",tet:"Tetum",tg:"Tajik",th:"Thai",ti:"Tigrinya",tk:"Turkmen",tl:"Tagalog",tn:"Tswana",to:"Tongan",tpi:"Tok Pisin",tr:"Turkish",trv:"Taroko",ts:"Tsonga",tt:"Tatar",tum:"Tumbuka",tw:"Twi",ty:"Tahitian",tyv:"Tuvinian",udm:"Udmurt",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vec:"Venetian",vep:"Veps",vi:"Vietnamese",vls:"West Flemish",vo:"Volapük",wa:"Walloon",war:"Waray",wo:"Wolof",wuu:"Wu Chinese",xal:"Kalmyk",xh:"Xhosa",xmf:"Mingrelian",yi:"Yiddish",yo:"Yoruba",za:"Zhuang",zea:"Zeelandic",zh:"Chinese","zh-classical":"Classical Chinese","zh-min-nan":"Chinese (Min Nan)","zh-yue":"Cantonese",zu:"Zulu"},i=(a,n)=>`Expected \`language\` argument to be one of the supported languages (${n.join(", ")}).`,e="Wikipedia does not have an article with this exact title. Try again using a different query.",t=a=>"This query points to a Wikipedia disambiguation page. You've got to be more specific."+(a.length>0?` Query suggestions:\n- ${a.splice(0,10).join("\n- ")}.`:" No query suggestions were found.");function r(a,n){return`https://${a}.wikipedia.org/w/api.php?&format=json&origin=*&`+Object.entries(n).map((([a,n])=>void 0===n?a:`${a}=${n.toString()}`)).join("&")}async function o(a,n){const i=r(a,n),e=await(await fetch(i)).json(),{pages:t}=e.query;return{...t[Object.keys(t)[0]],...e.continue&&e.continue}}async function s(a,n){const i=await o(a,n),e=i.links.map((a=>a.title));return"plcontinue"in i?e.concat(await s(a,{...n,plcontinue:encodeURIComponent(i.plcontinue)})):e}async function l(a,n){const i={action:"query",prop:"links",redirects:void 0,pllimit:"max",plnamespace:"0",titles:encodeURIComponent(n)};return await s(a,i)}async function c(n,i,t=!1){const o=r(n,{action:"opensearch",limit:t?1:"max",redirects:"resolve",search:encodeURIComponent(i)}),s=await fetch(o),l=(await s.json())[1];if(0===l.length)throw new a(e,"get-wikipedia-article");return l}const u=["title","body"];return async function(e,{language:r="en",include:s=u,format:h="plain"}={}){if(!Object.keys(n).includes(r))throw new a(i(r,Object.keys(n)),"get-wikipedia-article");0===s.length&&s.push(...u);const m={};if(s.includes("title")&&s.includes("related")){const[a,...n]=await c(r,e);m.title=a,m.related=n}else if(s.includes("title")){const[a]=await c(r,e);m.title=a}else if(s.includes("related")){const[,...a]=await c(r,e);m.related=a}const d=m.title||e;if(await async function(a,n){const i={action:"query",prop:"pageprops",ppprop:"disambiguation",redirects:void 0,titles:encodeURIComponent(n)},e=await o(a,i);return void 0!==e.pageprops?.disambiguation}(r,d))throw new a(t(m.related||[]),"get-wikipedia-article");s.includes("body")&&(m.body=await async function(a,n,i){const e={action:"query",prop:"extracts",..."plain"===i&&{explaintext:void 0},redirects:void 0,titles:encodeURIComponent(n)};return(await o(a,e)).extract}(r,d,h)),s.includes("summary")&&(m.summary=m.body?function(a,n){const i="plain"===n?/^[\s\S]*?(?=\n\n\n==)/:/^[\s\S]*?(?=\n\n<h2>)/,e=i.exec(a)?.[0];return e}(m.body,h):await async function(a,n,i){const e={action:"query",prop:"extracts",exintro:void 0,redirects:void 0,..."plain"===i&&{explaintext:void 0},titles:encodeURIComponent(n)};return(await o(a,e)).extract}(r,d,h)),s.includes("categories")&&(m.categories=await async function(a,n){const i={action:"query",prop:"categories",redirects:void 0,cllimit:"max",clshow:"!hidden",titles:encodeURIComponent(n)};return(await o(a,i)).categories.map((a=>a.title.replace(/^Category:/,"")))}(r,d)),s.includes("links")&&(m.links=await l(r,d));const g=["alias","label","description"].filter((a=>s.includes(a)));if(g.length>0){const a=await async function(a,n,i){const e={action:"query",prop:"pageterms",redirects:void 0,wbptlanguage:"en",wbptterms:i.join("|"),titles:encodeURIComponent(n)},t=await o(a,e),{terms:r}=t;return r}(r,d,g);Object.keys(a).forEach((n=>{m[n]=a[n]}))}return m}}));