******************************************************************************* * _api_read_indicators * *! v 16.3 8Jul2020 by Joao Pedro Azevedo * change API end point to HTTPS /*******************************************************************************/ program define _api_read_indicators, rclass version 9 syntax /// , /// UPDATE /// [ /// PRESERVEOUT /// FILE1(string) /// FILE2(string) /// FILE3(string) /// CHECK /// QUERY /// ] quietly { set checksum off ************************************ /* Overall Parameters */ ************************************ if ("`check'" == "") { local what "update `query'" } if ("`check'" != "") { local what "check" } local date: disp %td date("`c(current_date)'", "DMY") tempfile indicator1 indicator2 indicator3 local query1 "https://api.worldbank.org/v2/indicators?per_page=10000&page=1" local query2 "https://api.worldbank.org/v2/indicators?per_page=10000&page=2" local query3 "https://api.worldbank.org/v2/source/40/indicators?per_page=10000&page=1" **************************************** /* Download Indicator list using API */ **************************************** noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 1/3...}" cap: copy "`query1'" "`indicator1'", text replace * noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 1/3...COMPLETED!}" noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 2/3...}" cap: copy "`query2'" "`indicator2'", text replace * noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 2/3...COMPLETED!}" noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 3/3...}" cap: copy "`query3'" "`indicator3'", text replace * noi di in smcl in g "" noi di in smcl in g "{bf: Downloading indicators list 3/3...COMPLETED!}" noi di in smcl in g "" noi di in smcl in g "{bf: Preparing indicator data for `what'...}" ************************************ /* Preapre Indicator list (TXT) */ ************************************ tempfile in out source out3 hlp1 hlp2 indicator help file1tmp file2tmp file3tmp tempname in2 in3 in4 out2 in_tmp saving source1 source2 source3 source4 source5 hlp hlp01 hlp02 local skipnumber = 1 local trimnumber = 1 file open `in2' using `indicator1' , read file open `in3' using `indicator2' , read file open `in4' using `indicator3' , read if ("`preserveout'" == "") { file open `out2' using `out' , write text replace file open `source3' using `file1tmp' , write text replace file open `source4' using `file2tmp' , write text replace } else { if ("`file1'"=="") { local file1 "file1.txt" } if ("`file2'"=="") { local file2 "file2.txt" } file open `source3' using `file1tmp' , write text replace file open `source4' using `file2tmp' , write text replace } file write `source3' "indicatorcode#type#valuelabel# " _n file write `source4' "indicatorcode#indicatorname#sourceID #sourceOrganization #sourceNote #type # topicID " _n foreach inputfile in in2 in3 in4 { file read ``inputfile'' line local l = 0 while !r(eof) { local ++l file read ``inputfile'' line if(`l'>`skipnumber') { local line = subinstr(`"`line'"', `"""', "", .) *file write `out2' `"`line'"' _n if ("`line'" != "") { local line = subinstr(`"`line'"', `"""', "", .) if (strmatch("`line'", "*"," - ",.) local namevar2 = subinstr("`namevar'"," - ","",.) *file write `source2' "`namevar'" *file write `source3' "`namevar2' # # # " _n } if (strmatch("`line'", "**")==1) { local labvar = "`line'" local labvar = trim(subinstr("`labvar'","","",.)) local labvar = subinstr("`labvar'","","",.) local labvar = trim(substr("`labvar'",1,200)) *file write `source2' "`labvar'" _n *file write `hlp01' "{synopt:{opt `namevar2'}} `labvar'{p_end}" _n file write `source3' "`namevar2' # indicatorname # `labvar' # " _n } if (strmatch("`line'", "*","",.) file write `source3' "`namevar2' # sourceID # `sourceID' # " _n } if (strmatch("`line'", "**")==1) { local sourceNote = "`line'" local sourceNote = trim(subinstr("`sourceNote'","","",.)) local sourceNote = subinstr("`sourceNote'","","",.) file write `source3' "`namevar2' # sourceNote # `sourceNote' #" _n } if (strmatch("`line'", "**")==1) { local sourceOrganization = "`line'" local sourceOrganization = trim(subinstr("`sourceOrganization'","","",.)) local sourceOrganization = subinstr("`sourceOrganization'","","",.) file write `source3' "`namevar2' # sourceOrganization # `sourceOrganization' #" _n } if (strmatch("`line'", "*","",.) file write `source3' "`namevar2' # topicID # `topicID'" _n file write `source4' "`namevar2' # `labvar' # `sourceID' # `sourceOrganization' # `sourceNote' # topicID # `topicID'" _n } if (strmatch("`line'", "*