Countryfetchで国の情報を表示

Countryfetchという色々な国に情報をscreenfetchのような形式で表示してくれるcliアプリケーションを知ったので試してみました．

nik-rev/countryfetch: A Command-line tool similar to Neofetch for obtaining information about your country

countryfetch – A neofetch-like tool for fetching information about your country.

とりあえずreleasesからbinaryをもらってきて試します．

$ wget2 -cv https://github.com/nik-rev/countryfetch/releases/download/v0.1.9/countryfetch-x86_64-unknown-linux-gnu.tar.xz \
https://github.com/nik-rev/countryfetch/releases/download/v0.1.9/countryfetch-x86_64-unknown-linux-gnu.tar.xz.sha256
$ sha256sum -c countryfetch-x86_64-unknown-linux-gnu.tar.xz.sha256
countryfetch-x86_64-unknown-linux-gnu.tar.xz: OK
$ countryfetch-x86_64-unknown-linux-gnu/countryfetch-x86_64-unknown-linux-gnu/countryfetch --help

A Command-line tool similar to Neofetch for obtaining information about your country

Usage: countryfetch [OPTIONS] [COUNTRY]...

Arguments:
[COUNTRY]...

Options:
--all-countries Print information about all countries
--list-countries Print a list of all countries that can be passed
-h, --help Print help
-V, --version Print version

Config:
--no-area Exclude information about area of country
--no-flag Exclude ASCII flag art
--no-emoji Exclude country emoji
--no-continent Exclude continent
--no-population Exclude population
--no-tld Exclude top-level domain
--no-languages Exclude languages
--no-currency Exclude currency
--no-neighbours Exclude neighbours
--no-established-date Exclude established date
--no-iso-codes Exclude iso codes
--no-driving-side Exclude driving side
--no-capital Exclude capital
--no-dialing-code Exclude dialing code
--no-palette Exclude the country flag's palette
--no-color No colored output
$ countryfetch-x86_64-unknown-linux-gnu/countryfetch-x86_64-unknown-linux-gnu/countryfetch --version
countryfetch 0.1.9

そのまま実行するとgeoipから実行した場所の国の情報を表示しようとします．

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Japan 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Area: 377,930 km² (145,900 miles²)
@@@@@@@@@@@@@@@@#OznnzO#@@@@@@@@@@@@@@@@ Continent: Asia
@@@@@@@@@@@@@@k/++++++++/k@@@@@@@@@@@@@@ Population: 125,836,021 People
@@@@@@@@@@@@@U++++++++++++U@@@@@@@@@@@@@ Neighbours: No neighbours
@@@@@@@@@@@@Z++++++++++++++Z@@@@@@@@@@@@ Capital: Tokyo
@@@@@@@@@@@@1++++++++++++++)@@@@@@@@@@@@ ISO Codes: JP / JPN
@@@@@@@@@@@@_++++++++++++++_@@@@@@@@@@@@ Driving side: left
@@@@@@@@@@@@(++++++++++++++(@@@@@@@@@@@@ Dialing code: +81
@@@@@@@@@@@@q++++++++++++++q@@@@@@@@@@@@ Language: Japanese
@@@@@@@@@@@@@Q_++++++++++_Q@@@@@@@@@@@@@ Established: February 11, 660 BC
@@@@@@@@@@@@@@oj_++++++_jo@@@@@@@@@@@@@@ Currency: ¥ JPY (Japanese yen)
@@@@@@@@@@@@@@@@&qJXXJq&@@@@@@@@@@@@@@@@ Top Level Domains: .jp, .みんな
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ███████████████████████████
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

geoipは ip-api.com を利用しているようです．

$ grep http ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/countryfetch-0.1.9/src/location.rs
"http://ip-api.com/json/{ip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,offset,currency,isp,org,as,asname,reverse,mobile,proxy,hosting,query"
$ curl -s http://ip-api.com/json/`curl -s ifconfig.me/ip`?fields=status,country | jq . │
│{ │
│ "status": "success", │
│ "country": "Japan" │
│}
$ curl -s http://ip-api.com/json/`torify curl -s ifconfig.me/ip`?fields=status,country | jq . │
│{ │
│ "status": "success", │
│ "country": "Ukraine" │
│}

特定の国を表示したい場合は後ろに国名を付けます．

$ countryfetch-x86_64-unknown-linux-gnu/countryfetch-x86_64-unknown-linux-gnu/countryfetch UnitedKingdom

/Z%@8C];;;;;;;;;\@]]]]@\;;;;;;;;;]YQt}zo United Kingdom 
Q(}YM@@d\I;;;;;;\@]]]]@\;;;;;;I\ZU}(0%@$ -------
~c0x[xd$@#c<;;;;\@]]]]@\;;;;~c0x[xd$@Mc~ Area: 242,900 km² (93,800 miles²)
;;I\ZY}(0%@BO[;;\@]]]]@\;;[QQ(}YM@@b\I;; Continent: Europe
;;;;;]UQ/}zo@@kjf@]]]]@fj0z}/Z%@8C];;;;; Population: 67,215,293 People
rrrrrrrv*aYXwB@@$@]]]]@BwXYa@@@*vrrrrrrr Neighbour: Ireland
aaaaaaaaaaaaaaaaaa]]]]aaaaaaaaaaaaaaaaaa Capital: London
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ISO Codes: GB / GBR
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] Driving side: left
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] Dialing code: +44
WWWWWWWWWWWWWWWWWW]]]]WWWWWWWWWWWWWWWWWW Language: English
|||||||x*@@$qunw8@]]]]@%@@Bwnuqox||||||| Established: January 1, 1801
;;;;I(m$@WC))JC(/@]]]]@/(m$@WC))JL(I;;;; Currency: £ GBP (British pound)
;;!n#@@au]fZX~;;\@]]]]@\;;+U8@$qt]umn!;; Top Level Domain: .uk
]C8@%Z/}zQj!;;;;\@]]]]@\;;;;!jk@@oz}/QU]
@@MY}(QL[;;;;;;;\@]]]]@\;;;;;;;[O$@%0(}Y ███████████████████████████
au]fZX~;;;;;;;;;\@]]]]@\;;;;;;;;;~Y8@$qt

国コードでも良さそう．

$ countryfetch-x86_64-unknown-linux-gnu/countryfetch-x86_64-unknown-linux-gnu/countryfetch de

Germany 
-------
Area: 357,114 km² (137,900 miles²)
Continent: Europe
Population: 83,240,525 People
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Neighbours: Austria, Belgium,
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ Czechia, Denmark, France, Luxembourg,
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ Netherlands, Poland, Switzerland
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ Capital: Berlin
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ ISO Codes: DE / DEU
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ Driving side: right
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk Dialing code: +49
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Language: German
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Established: October 3, 1990
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Currency: EUR € (Euro)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Top Level Domain: .de
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

国は250登録されているようです．

$ countryfetch-x86_64-unknown-linux-gnu/countryfetch-x86_64-unknown-linux-gnu/countryfetch --list-countries | grep "[^${control_characters} -~]" | wc -l
250

すべての国を表示してみたり．

250も旗を用意するの大変そうもしかして絵文字から変換したりしてる?とか思いましたが gen_country/src/lib.rs にAAの旗を含めハードコードされているようです．
https://github.com/nik-rev/countryfetch/blob/main/gen_country/src/lib.rs

SEE ALSO

CondensedMilk7/countryfetch-deno: A cli tool for fetching information about countries. TypeScript(Original)

CondensedMilk7/countryfetch: A CLI tool for fetching information about countries. Written in Go. Go lang

Awesome Fetch | awesome-fetch 様々なfetchコマンド