Obtenga una lista de insignias en este sitio que nadie recibió todavía

8

Haga un código que obtenga una lista de las insignias que nadie recibió todavía (por ejemplo, al usar esta API del sitio web para las insignias ), y envíe la lista ordenada de dichas insignias, con una nueva línea después de cada una.

Ejemplo de salida (puede ser más pequeño, dependiendo de cuándo realice este desafío):

Archaeologist
Caucus
Constituent
Copy Editor
Deputy
Electorate
Epic
Generalist
Hacker
Legendary
Marshal
Outspoken
Research Assistant
Sheriff
Steward
Strunk & White
Tenacious
Unsung Hero

El código más pequeño gana.

Konrad Borowski
fuente
buena idea, también sospecho que Stack Exchange Data Explorer podría hacerlo (no hay respuestas sobre eso hasta ahora) de hecho, tal vez la consulta web está haciendo una consulta SQL en el fondo ...
vzn

Respuestas:

8

JavaScript con jQuery (cargado en sitios SE por defecto), 58

$('.badge',$('.badge-count:not(:has(*))').parent()).text()

Debe ejecutarse en https://codegolf.stackexchange.com/help/badges . ;)

Salida estrictamente conforme, 116 caracteres:

[].join.call($('.badge',$('.badge-count:not(:has(*))').parent()).map(function(){return $(this).text()}).sort(),'\n')

Captura de pantalla de la salida de la consola (haga clic para ampliar):

captura de pantalla de la salida de la consola

Pomo de la puerta
fuente
¿Se permite el uso de bibliotecas externas?
Szymon Toda
3
@Ultra jQuery se carga en los sitios SE de forma predeterminada.
Pomo de la puerta
6

Bash, 173 caracteres

curl "https://api.stackexchange.com/2.1/badges?page="{0..50}"&pagesize=100&order=desc&sort=type&site=codegolf"|gunzip|grep -Po '{"name".*?award_count":0.*?}'|cut -d'"' -f 4

Aunque probablemente podría afeitarse algunos caracteres mediante el uso de acortamiento de URL.

ADVERTENCIA: Tenga en cuenta que la ejecución de este script de un par de veces tendrá como resultado lo siguiente:

{"error_name":"throttle_violation","error_message":"too many requests from this IP, more requests available in 84495 seconds","error_id":502}

Salida para codegolf.SE:

code-golf
Informed
Research Assistant
Caucus
Constituent
Outspoken
Deputy
Vox Populi
Excavator
Analytical
Self-Learner
Hacker
Beta
Legendary
Electorate
Investor
Tenacious
Unsung Hero

EDITAR: lo ajusté un poco.

Thom Wiggers
fuente
Bash - huehuehue. PS /dev/nullrealmente se necesita aquí?
Szymon Toda
Puedes usar en curllugar de wget -O-.
Konrad Borowski
Hmm, pensé que había eliminado el / dev / null que tenía para probar.
Thom Wiggers
1

PHP - 92 86 caracteres

<?=html_entity_decode(substr(file_get_contents("http://tinyurl.com/q9zlwfr"),12937,190));

Inspirado en la solución de Victor. Muy volátil

Konrad Borowski
fuente
0

Java - 280 267 260

class A{public static void main(String[]z)throws Exception{String s="";int y;java.io.InputStream x=new java.net.URL("http://tinyurl.com/q9zlwfr").openStream();while((y=x.read())!=-1)s+=(char)y;System.out.println(s.substring(12937,13126).replace("amp;",""));}}
Victor Stafusa
fuente
1
Eso parece ... volátil. Si el equipo de Stack Exchange realizara casi cualquier cambio en su sitio web (o si se modificara mi pregunta), devolvería la lista incorrecta. Además, la lista puede no estar actualizada.
Konrad Borowski el
¿Por qué el nombre de la clase es tan largo? ¿Por qué es maintan largo el argumento del nombre? ¿Por qué hay espacios en blanco innecesarios después InputStream?
Pomo de la puerta
@DoorknobofSnow Bien notado. Estos se resbalaron cuando estaba convirtiendo la versión sin golf a una de golf.
Victor Stafusa
@xfix Sí, muy volátil. Eso fue intencional.
Victor Stafusa
Estoy tentado a editar la pregunta con una carta solo para que te moleste :-D
Doorknob