Obtenha uma lista de crachás neste site que ninguém recebeu ainda

8

Crie um código que obtenha a lista de crachás que ninguém recebeu ainda (por exemplo, usando esta API do site para crachás ) e produza a lista classificada desses crachás, com nova linha após cada um.

Exemplo de saída (pode ser menor, dependendo de quando você faz esse desafio):

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

O menor código vence.

Konrad Borowski
fonte
boa idéia, também suspeito Stack Troca Data Explorer poderia fazê-lo (sem respostas em que, até agora) na verdade talvez a consulta web está fazendo uma consulta SQL no coração ...
vzn

Respostas:

8

JavaScript com jQuery (carregado nos sites SE por padrão), 58

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

Deve ser executado em https://codegolf.stackexchange.com/help/badges . ;)

Saída em conformidade estrita, 116 caracteres:

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

Captura de tela da saída do console (clique para ampliar):

captura de tela da saída do console

Maçaneta da porta
fonte
É permitido o uso de bibliotecas externas?
Szymon Toda
3
O @Ultra jQuery é carregado nos sites SE por padrão.
Maçaneta
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

Embora você possa provavelmente raspar alguns caracteres usando o encurtamento de URL.

AVISO: Tenha em atenção que executar este script algumas vezes irá resultar no seguinte:

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

Saída 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

EDIT: tweaked um pouco.

Thom Wiggers
fonte
Bash - huehuehue. PS é /dev/nullrealmente necessário aqui?
Szymon Toda
Você pode usar em curlvez de wget -O-.
Konrad Borowski
Hmm, pensei que tinha removido o / dev / null que eu tinha para testar.
Thom Wiggers
1

PHP - 92 86 caracteres

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

Inspirado pela solução de Victor. Muito volátil.

Konrad Borowski
fonte
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
fonte
1
Isso parece ... volátil. Se a equipe do Stack Exchange fizesse quase qualquer alteração em seu site (ou se minha pergunta fosse modificada), ela retornaria a lista errada. Além disso, a lista pode não estar atualizada.
precisa saber é o seguinte
Por que o nome da classe é tão longo? Por que o argumento maindo nome é tão longo? Por que há espaço em branco desnecessário depois InputStream?
Maçaneta
@DoorknobofSnow Bem anotado. Estes escorregaram quando eu estava convertendo a versão não-golfada para uma versão de golfe.
Victor Stafusa
@xfix Sim, muito volátil. Isso foi intencional.
Victor Stafusa
Estou tentado a editar a pergunta com uma letra apenas para trollar você :-D
Maçaneta da porta