Reflector-simple (a GUI app) is an easy to use “one-timer” selector of mirrors. It writes the list of mirrors you selected into the /etc/pacman.d/mirrorlist. Reflector-simple is informative as it shows right away what it is capable of doing. I recommend starting with this application and get the idea of the selections that would be the most sensible in your case.
Missed this bit. reflector already offer that (and more).
$ reflector --help
usage: Reflector.py [-h] [--connection-timeout n] [--list-countries] [--cache-timeout n] [--url URL]
[--save <filepath>] [--sort {age,rate,country,score,delay}] [--threads n] [--verbose]
[--info] [-a n] [-c <country>] [-f n] [-i <regex>] [-x <regex>] [-l n] [--score n] [-n n]
[-p <protocol>] [--completion-percent [0-100]] [--isos] [--ipv4] [--ipv6]
retrieve and filter a list of the latest Arch Linux mirrors
optional arguments:
-h, --help show this help message and exit
--connection-timeout n
The number of seconds to wait before a connection times out. Default: 5
--list-countries Display a table of the distribution of servers by country.
--cache-timeout n The cache timeout in seconds for the data retrieved from the Arch Linux Mirror Status
API. The default is 300.
--url URL The URL from which to retrieve the mirror data in JSON format. If different from the
default, it must follow the same format. Default:
https://www.archlinux.org/mirrors/status/json/
--save <filepath> Save the mirrorlist to the given path.
--sort {age,rate,country,score,delay}
Sort the mirrorlist. "age": last server synchronization; "rate": download rate;
"country": server's location; "score": MirrorStatus score; "delay": MirrorStatus
delay.
--threads n The maximum number of threads to use when rating mirrors. Keep in mind that this may
skew your results if your connection is saturated. Default: 2 (number of detected
CPUs)
--verbose Print extra information to STDERR. Only works with some options.
--info Print mirror information instead of a mirror list. Filter options apply.
filters:
The following filters are inclusive, i.e. the returned list will only contain mirrors for which all of the
given conditions are met.
-a n, --age n Only return mirrors that have synchronized in the last n hours. n may be an integer or
a decimal number.
-c <country>, --country <country>
Match one of the given countries (case-sensitive). Multiple countries may be selected
using commas (e.g. "France,Germany") or by passing this option multiple times. Use "--
list-countries" to see which are available.
-f n, --fastest n Return the n fastest mirrors that meet the other criteria. Do not use this option
without other filtering options.
-i <regex>, --include <regex>
Include servers that match <regex>, where <regex> is a Python regular express.
-x <regex>, --exclude <regex>
Exclude servers that match <regex>, where <regex> is a Python regular express.
-l n, --latest n Limit the list to the n most recently synchronized servers.
--score n Limit the list to the n servers with the highest score.
-n n, --number n Return at most n mirrors.
-p <protocol>, --protocol <protocol>
Match one of the given protocols, e.g. "https" or "ftp". Multiple protocols may be
selected using commas (e.g. "https,http") or by passing this option multiple times.
--completion-percent [0-100]
Set the minimum completion percent for the returned mirrors. Check the mirrorstatus
webpage for the meaning of this parameter. Default value: 100.0.
--isos Only return mirrors that host ISOs.
--ipv4 Only return mirrors that support IPv4.
--ipv6 Only return mirrors that support IPv6.