Usuario:JoaquinFerrero/MedalleroRio2016
Apariencia
#!/usr/bin/env perl
# *- encode: utf8. tabs: 8 spaces. -*
#
# medalleroRio2016.pl
#
# Autor:
# Joaquín Ferrero
#
# Descripción:
# Actualización automática de medalleros en Wikipedia.
#
# Entrada: ninguna
# Salida: ninguna
#
# Historial:
# 2016.08.06 : Versión Río de Janeiro Olímpicos 2016
# 2016.03.18 : Versión Portland Atletismo en Pista Cubierta 2016
# 2015.08.21 : Versión Pekín Atletismo 2015
# 2015.06.13 : Versión Baku Europeos 2015
# 2014.03.07 : Versión Sochi Paralímpicos Invierno 2014
# 2014.02.08 : Versión Sochi Invierno 2014
# 2013.08.10 : Versión Moscú Atletismo 2013
# 2013.06.26 : Versión Mersin Mediterráneo 2013
# 2012.08.31 : Versión Londres Paralímpicos 2012
# 2012.07.31 : Versión Londres Verano 2012
# 2010.03.20 : Versión Medellin Sudamericanos 2010
# 2010.03.13 : Versión Vancouver Paralimpicos 2010
# 2010.02.16 : Versión Vancouver Invierno 2010
# 2008.09.07 : Versión Pekín Verano 2008
#
### Bibliotecas -------------------------------------------------------------
use v5.14.2;
use utf8::all; # Activar todo el soporte para UTF-8. Realmente todo
use MediaWiki::API; # Y mucha Wikipedia
use Mojo::UserAgent; # Un poco de mojo...
use Data::Dumper;
### Configuración -----------------------------------------------------------
my $DEBUG = 0; # 0, 1 o 2
my $PAÍS_ANFITRIÓN = 'BRA';
my $URL_MEDALLERO = 'https://www.rio2016.com/en/medal-count-country';
my $WIKIPEDIA_PÁGINA_MEDALLERO = 'Anexo:Medallero de los Juegos Olímpicos de Río de Janeiro 2016';
my $WIKIPEDIA_PÁGINA_TEST = 'Wikipedia:Zona de pruebas/5';
my $WIKIPEDIA_USUARIO_LOGIN = 'user';
my $WIKIPEDIA_USUARIO_PASSW = 'password';
my $WIKIPEDIA_API_URL = 'https://es.wikipedia.org/w/api.php';
#my $título_página_wiki = $WIKIPEDIA_PÁGINA_TEST;
my $título_página_wiki = $WIKIPEDIA_PÁGINA_MEDALLERO;
my $medallero_wiki_cabeza = <<'EOF';
<!-- Plantilla creada para actualizar automáticamente el medallero de acuerdo a la página oficial del campeonato. No modificar. -->
<!--
_ _____ _____ _ _ ____ ___ __ _ _
/ \|_ _| ____| \ | |/ ___|_ _|/_/ | \ | |
/ _ \ | | | _| | \| | | | |/ _ \| \| |
/ ___ \| | | |___| |\ | |___ | | |_| | |\ |
/_/ \_\_| |_____|_| \_|\____|___\___/|_| \_|
Este medallero se actualiza de forma automática
cada 5 minutos durante el periodo de la competición.
Cualquier cambio realizado de forma manual se perderá.
Avisar de incidencias al usuario JoaquinFerrero.
--></noinclude>
EOF
my $AVISO_CORTE = qq(<includeonly><!-- Para cerrar la tabla en el artículo principal -->|}</includeonly><noinclude>\n);
### Fin de configuración ----------------------------------------------------
## Obtención de los resultados ----------------------------------------------
my $ua = Mojo::UserAgent->new(
name => 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Mojolicious/2015 Wikipedia/es',
request_timeout => 20,
);
my $medallero_html;
for my $retry (1 .. 3) { # Tres intentos
$medallero_html = $ua->get(
$URL_MEDALLERO,
{
}
)->res->dom->at('div#ms-countries-medal-count'); # Mojo::DOM::CSS Selector
last if defined $medallero_html;
say "Intento fallido $retry..." if $DEBUG;
sleep 30;
}
die "ERROR: No he podido leer la página del medallero oficial\n"
if not defined $medallero_html;
say $medallero_html if $DEBUG == 2;;
## Extracción de resultados -------------------------------------------------
my @tabla_medallero_oficial; # aquí guardamos el resultado de la extracción
my $posición = 1; # Renumeración de las posiciones
my $posición_absoluta = 1; # Posición real dentro del global de posiciones
for my $fila ($medallero_html->find("tr.table-medal-countries__link-table")->each) {
my $resultados; # resultados para un participante
# Código COI del país
$resultados->{'COI'} = $fila->{'data-odfcode'}; # extraemos el código COI del país
# Celdas con resultados
my @celdas = map { $_->all_text } $fila->find("td")->each; # extraemos las celdas
next if @celdas != 7;
my @medallas = map { 0 + $_ } @celdas[3..6]; # valores de las medallas (oro, plata, bronce, totales)
$resultados->{'medallas'} = \@medallas; # guardar
# ajustar posición según logros alcanzados
if ( @tabla_medallero_oficial > 0 # solo a partir de la segunda fila
and (
$tabla_medallero_oficial[-1]{'medallas'}[0] > $medallas[0] # Oro
or $tabla_medallero_oficial[-1]{'medallas'}[1] > $medallas[1] # Plata
or $tabla_medallero_oficial[-1]{'medallas'}[2] > $medallas[2] # Bronce
)
) {
$posición = $posición_absoluta; # sí: su posición es una más que el anterior
}
$resultados->{'posición'} = $posición; # guardamos nueva posición
push @tabla_medallero_oficial, $resultados; # nueva fila en el medallero
$posición_absoluta++;
}
die "ERROR: No he leído la tabla del medallero oficial"
if ! @tabla_medallero_oficial;
say Dumper \@tabla_medallero_oficial if $DEBUG == 2;
## Obtención de la lista de los países participantes ------------------------
my %paises;
while (my $l = <DATA>) {
my($marca) = $l =~ /(\{ .+ \})/x;
my($id) = $l =~ /\b ([A-Z]{3}) \b/x;
$id = 'IOP' if not $id;
$paises{$id} = $marca;
}
## Confección del Medallero en formato wiki ---------------------------------
my $medallero_wiki; # Medallero en formato Wiki
my @totales_medallero; # Almacena la suma de las medallas
# Cabecera de la tabla
$medallero_wiki = $medallero_wiki_cabeza;
$medallero_wiki .= "{{Leyenda|#CCCCFF|País organizador|border=solid 1px #AAA}}\n";
$medallero_wiki .= "{| {{Medallero |tipo=1 |ancho=60%}}\n";
# Filas de la tabla
my $DCOL = ' || ';
my $n_fila = 0;
my $aviso_corte_puesto = 0;
for my $fila (@tabla_medallero_oficial) {
my @medallas = @{$fila->{'medallas'}}; # Número de medallas
last if $medallas[-1] == 0; # Paramos si no tiene medallas
map { $totales_medallero[$_] += $medallas[$_] } 0 .. 3; # Cálculo de los totales
if ($fila->{'posición'} > 10 and ! $aviso_corte_puesto++) { # Poner nota de corte a los diez primeros clasificados
$medallero_wiki .= $AVISO_CORTE;
}
$medallero_wiki .= '|-'; # Nueva fila
$medallero_wiki .= ' bgcolor=ccccff' if $fila->{'COI'} eq $PAÍS_ANFITRIÓN; # destaque
$medallero_wiki .= "\n";
my $texto_país;
if ($fila->{'COI'} eq 'IOA') {
$texto_país = '{{Bandera|Juegos Olímpicos}} [[Atletas Olímpicos Independientes en los Juegos Olímpicos de Río de Janeiro 2016|Atletas Olímpicos Independientes]] <small>(IOA)</small>';
}
else {
$texto_país = $paises{$fila->{'COI'}};
}
$medallero_wiki .= '| '
. join $DCOL =>
"'''$fila->{'posición'}'''", # posición
$texto_país,
# {{BanderaOL|Estados Unidos|USA}}
# "{{$fila->{'COI'}}}", # país
# "{{BanderaCOI|$fila->{'COI'}|verano 2016}}",
@medallas # medallas
;
$medallero_wiki .= "\n";
$n_fila++;
}
# Totales y fin de la tabla
$medallero_wiki .= "|- align=right\n";
$medallero_wiki .= "| '''Total''' || align=left | '''$n_fila países''' ||" . join($DCOL, map { " '''$_''' " } @totales_medallero) . "\n";
$medallero_wiki .= "|}";
if (not $aviso_corte_puesto) {
$medallero_wiki .= '<noinclude>';
}
$medallero_wiki .= "\n\n";
say $medallero_wiki if $DEBUG == 2;
## Conexión con Wikipedia ---------------------------------------------------
my $Wikipedia = MediaWiki::API->new({
api_url => $WIKIPEDIA_API_URL,
retries => 3,
retry_delay => 30,
});
$Wikipedia->login({
lgname => $WIKIPEDIA_USUARIO_LOGIN,
lgpassword => $WIKIPEDIA_USUARIO_PASSW,
})
or die $Wikipedia->{error}->{code} . ': ' . $Wikipedia->{error}->{details};
## Actualización de la página del medallero ---------------------------------
my $página_wiki; # Contenido de la página wiki actual
my $página_antes_wiki; # Contenido de la página wiki anterior
my $página_wiki_ref = $Wikipedia->get_page({
title => $título_página_wiki,
});
die "ERROR: No conseguí la página del medallero\n"
if $página_wiki_ref->{missing};
$página_wiki = $página_antes_wiki = $página_wiki_ref->{'*'}; # Cómo es la página en este momento
say $página_wiki if $DEBUG == 2;
# Editamos la página
if ($página_wiki =~ s/^=+\s*Medallero\s*=+\K.+?(?=^=)/\n$medallero_wiki/sm) {
say $página_wiki if $DEBUG == 2;
if ($página_wiki ne $página_antes_wiki) { # Si hay realmente un cambio, la editamos
$Wikipedia->edit({
action => 'edit',
text => $página_wiki,
title => $título_página_wiki,
basetimestamp => $página_wiki_ref->{timestamp},
summary => 'Actualización automática del medallero',
})
or die $Wikipedia->{error}->{code} . ': ' . $Wikipedia->{error}->{details}
;
say 'Medallero actualizado' if $DEBUG;
}
else {
say 'No hay cambios' if $DEBUG == 2;
}
}
else {
die 'ERROR: no encuentro la sección del medallero en la página';
}
__DATA__
* {{Bandera|Juegos Olímpicos}} [[Equipo Olímpico de Atletas Refugiados]]
* {{Bandera|Juegos Olímpicos}} [[Kuwait en los Juegos Olímpicos de Río de Janeiro 2016|Kuwait]]
* {{BanderaOL|Atletas Olímpicos Independientes|IOA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Afganistán|AFG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Albania|ALB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Alemania|GER|ed=Río de Janeiro 2016}}
* {{BanderaOL|Andorra|AND|ed=Río de Janeiro 2016}}
* {{BanderaOL|Angola|ANG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Antigua y Barbuda|ANT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Arabia Saudita|KSA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Argelia|ALG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Argentina|ARG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Armenia|ARM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Aruba|ARU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Australia|AUS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Austria|AUT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Azerbaiyán|AZE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bahamas|BAH|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bangladés|BAN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Barbados|BAR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Baréin|BRN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bélgica|BEL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Belice|BIZ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Benín|BEN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bermudas|BER|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bielorrusia|BLR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Birmania|MYA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bolivia|BOL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bosnia y Herzegovina|BIH|ed=Río de Janeiro 2016}}
* {{BanderaOL|Botsuana|BOT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Brasil|BRA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Brunéi|BRU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bulgaria|BUL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Burkina Faso|BUR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Burundi|BDI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Bután|BHU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Cabo Verde|CPV|ed=Río de Janeiro 2016}}
* {{BanderaOL|Camboya|CAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Camerún|CMR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Canadá|CAN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Catar|QAT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Chad|CHA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Chile|CHI|ed=Río de Janeiro 2016}}
* {{BanderaOL|China|CHN|ed=Río de Janeiro 2016}}
* {{BanderaOL|China Taipéi|TPE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Chipre|CYP|ed=Río de Janeiro 2016}}
* {{BanderaOL|Colombia|COL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Comoras|COM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Congo|CGO|ed=Río de Janeiro 2016}}
* {{BanderaOL|Corea del Norte|PRK|ed=Río de Janeiro 2016}}
* {{BanderaOL|Corea del Sur|KOR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Costa de Marfil|CIV|ed=Río de Janeiro 2016}}
* {{BanderaOL|Costa Rica|CRC|ed=Río de Janeiro 2016}}
* {{BanderaOL|Croacia|CRO|ed=Río de Janeiro 2016}}
* {{BanderaOL|Cuba|CUB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Dinamarca|DEN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Dominica|DMA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Ecuador|ECU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Egipto|EGY|ed=Río de Janeiro 2016}}
* {{BanderaOL|El Salvador|ESA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Emiratos Árabes Unidos|UAE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Eritrea|ERI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Eslovaquia|SVK|ed=Río de Janeiro 2016}}
* {{BanderaOL|Eslovenia|SLO|ed=Río de Janeiro 2016}}
* {{BanderaOL|España|ESP|ed=Río de Janeiro 2016}}
* {{BanderaOL|Estados Unidos|USA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Estonia|EST|ed=Río de Janeiro 2016}}
* {{BanderaOL|Etiopía|ETH|ed=Río de Janeiro 2016}}
* {{BanderaOL|Filipinas|PHI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Finlandia|FIN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Fiyi|FIJ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Francia|FRA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Gabón|GAB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Gambia|GAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Georgia|GEO|ed=Río de Janeiro 2016}}
* {{BanderaOL|Ghana|GHA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Granada|GRN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Grecia|GRE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guam|GUM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guatemala|GUA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guinea|GUI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guinea-Bisáu|GBS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guinea Ecuatorial|GEQ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Guyana|GUY|ed=Río de Janeiro 2016}}
* {{BanderaOL|Haití|HAI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Honduras|HON|ed=Río de Janeiro 2016}}
* {{BanderaOL|Hong Kong|HKG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Hungría|HUN|ed=Río de Janeiro 2016}}
* {{BanderaOL|India|IND|ed=Río de Janeiro 2016}}
* {{BanderaOL|Indonesia|INA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Irak|IRQ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Irán|IRI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Irlanda|IRL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islandia|ISL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Caimán|CAY|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Cook|COK|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Marshall|MHL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Salomón|SOL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Vírgenes Británicas|IVB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Islas Vírgenes Estadounidenses|ISV|ed=Río de Janeiro 2016|nombre=Islas Vírgenes EE. UU.}}
* {{BanderaOL|Israel|ISR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Italia|ITA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Jamaica|JAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Japón|JPN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Jordania|JOR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Kazajistán|KAZ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Kenia|KEN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Kirguistán|KGZ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Kiribati|KIR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Kosovo|KOS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Laos|LAO|ed=Río de Janeiro 2016}}
* {{BanderaOL|Lesoto|LES|ed=Río de Janeiro 2016}}
* {{BanderaOL|Letonia|LAT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Líbano|LIB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Liberia|LBR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Libia|LBA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Liechtenstein|LIE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Lituania|LTU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Luxemburgo|LUX|ed=Río de Janeiro 2016}}
* {{BanderaOL|Macedonia|MKD|ed=Río de Janeiro 2016}}
* {{BanderaOL|Madagascar|MAD|ed=Río de Janeiro 2016}}
* {{BanderaOL|Malasia|MAS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Malaui|MAW|ed=Río de Janeiro 2016}}
* {{BanderaOL|Maldivas|MDV|ed=Río de Janeiro 2016}}
* {{BanderaOL|Malí|MLI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Malta|MLT|ed=Río de Janeiro 2016}}
* {{BanderaOL|Marruecos|MAR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Mauricio|MRI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Mauritania|MTN|ed=Río de Janeiro 2016}}
* {{BanderaOL|México|MEX|ed=Río de Janeiro 2016}}
* {{BanderaOL|Micronesia|FSM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Moldavia|MDA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Mónaco|MON|ed=Río de Janeiro 2016}}
* {{BanderaOL|Mongolia|MGL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Montenegro|MNE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Mozambique|MOZ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Namibia|NAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Nauru|NRU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Nepal|NEP|ed=Río de Janeiro 2016}}
* {{BanderaOL|Nicaragua|NCA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Níger|NIG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Nigeria|NGR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Noruega|NOR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Nueva Zelanda|NZL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Omán|OMA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Países Bajos|NED|ed=Río de Janeiro 2016}}
* {{BanderaOL|Pakistán|PAK|ed=Río de Janeiro 2016}}
* {{BanderaOL|Palaos|PLW|ed=Río de Janeiro 2016}}
* {{BanderaOL|Palestina|PLE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Panamá|PAN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Papúa Nueva Guinea|PNG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Paraguay|PAR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Perú|PER|ed=Río de Janeiro 2016}}
* {{BanderaOL|Polonia|POL|ed=Río de Janeiro 2016}}
* {{BanderaOL|Portugal|POR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Puerto Rico|PUR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Reino Unido|GBR|ed=Río de Janeiro 2016}}
* {{BanderaOL|República Centroafricana|CAF|ed=Río de Janeiro 2016}}
* {{BanderaOL|República Checa|CZE|ed=Río de Janeiro 2016}}
* {{BanderaOL|República Democrática del Congo|COD|ed=Río de Janeiro 2016|nombre=República Dem. del Congo}}
* {{BanderaOL|República Dominicana|DOM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Ruanda|RWA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Rumanía|ROU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Rusia|RUS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Samoa|SAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Samoa Americana|ASA|ed=Río de Janeiro 2016}}
* {{BanderaOL|San Cristóbal y Nieves|SKN|ed=Río de Janeiro 2016}}
* {{BanderaOL|San Marino|SMR|ed=Río de Janeiro 2016}}
* {{BanderaOL|San Vicente y las Granadinas|VIN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Santa Lucía|LCA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Santo Tomé y Príncipe|STP|ed=Río de Janeiro 2016}}
* {{BanderaOL|Senegal|SEN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Serbia|SRB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Seychelles|SEY|ed=Río de Janeiro 2016}}
* {{BanderaOL|Sierra Leona|SLE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Singapur|SIN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Siria|SYR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Somalia|SOM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Sri Lanka|SRI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Suazilandia|SWZ|ed=Río de Janeiro 2016}}
* {{BanderaOL|Sudáfrica|RSA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Sudán|SUD|ed=Río de Janeiro 2016}}
* {{BanderaOL|Sudán del Sur|SSD|ed=Río de Janeiro 2016}}
* {{BanderaOL|Suecia|SWE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Suiza|SUI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Surinam|SUR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Tailandia|THA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Tanzania|TAN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Tayikistán|TJK|ed=Río de Janeiro 2016}}
* {{BanderaOL|Timor Oriental|TLS|ed=Río de Janeiro 2016}}
* {{BanderaOL|Togo|TOG|ed=Río de Janeiro 2016}}
* {{BanderaOL|Tonga|TGA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Trinidad y Tobago|TRI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Túnez|TUN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Turkmenistán|TKM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Turquía|TUR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Tuvalu|TUV|ed=Río de Janeiro 2016}}
* {{BanderaOL|Ucrania|UKR|ed=Río de Janeiro 2016}}
* {{BanderaOL|Uganda|UGA|ed=Río de Janeiro 2016}}
* {{BanderaOL|Uruguay|URU|ed=Río de Janeiro 2016}}
* {{BanderaOL|Uzbekistán|UZB|ed=Río de Janeiro 2016}}
* {{BanderaOL|Vanuatu|VAN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Venezuela|VEN|ed=Río de Janeiro 2016}}
* {{BanderaOL|Vietnam|VIE|ed=Río de Janeiro 2016}}
* {{BanderaOL|Yemen|YEM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Yibuti|DJI|ed=Río de Janeiro 2016}}
* {{BanderaOL|Zambia|ZAM|ed=Río de Janeiro 2016}}
* {{BanderaOL|Zimbabue|ZIM|ed=Río de Janeiro 2016}}