Salve o arquivo por hora da resposta cURL

3

Estou acompanhando o desenvolvedor do Twitter e quero fazer uma chamada muito básica contra a API do filtro em tempo real. O código abaixo quase me leva até lá:

curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile.txt"

Minha esperança é dinamicamente nomear o arquivo de modo que os registros por hora dos dados sejam capturados.

EDIT: Não vale a pena que eu estou esperando que este comando permaneça aberto, e que os dados que recebo sejam contínuos. Eu estou olhando para redirecionar a saída a cada hora para arquivos diferentes.

Eu sou completamente novo na linha de comando e no ubuntu, então nem sei por onde começar. Qualquer ajuda será muito apreciada.

    
por Btibert3 12.01.2012 / 21:24

1 resposta

4
curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date + format).txt"

Onde, format pode ser qualquer um dos seguintes:

%a : Abbreviated weekday name (Sun..Sat)
%b : Abbreviated month name (Jan..Dec)
%B : Full month name, variable length (January..December)
%d : Day of month (01..31)
%e : Day of month, blank padded ( 1..31)
%m : Month (01..12)
%Y : Year
%d : Day of month (e.g, 01)
%H : 24 hour format (00..23)
%I : 12 hour format (01..12)
%M : Minutes of the current time (00...59)
%j : day of year (001..366)
%D : date; same as %m/%d/%y
%F : full date; same as %Y-%m-%d

Então, para você, isso salvará o arquivo e adicionará dinamicamente a hora (% H) e os minutos (% M) da hora atual

curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date +\"%H:%M\").txt"

Como você deseja que curl consiga dados por 1 hora e salve esses dados no arquivo para continuar as operações novamente, é necessário usar pelo menos um script pequeno. Isso fará o trabalho:

#! /bin/bash

while true; do
    curl -s -m 3600 -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date +%H:%M).txt"
done

Ao deixar o script em execução, ele executará o comando, a cada 3600 segundos (1 hora, o parâmetro -m 3600 ) será fechado e o comando será ganho executado.

Observe que isso não apenas cortará o fluxo, ele realmente fechará o curl e o reabrirá, não pense que é possível cortar o fluxo enquanto o curl está em execução.

Você precisa do mesmo script em algum lugar, ou seja, ~/curl_script.sh e torná-lo executável com chmod 755 ~/curl_script.sh antes de usá-lo no terminal, para usá-lo mova a pasta onde o script foi salvo e digite ./curl_script.sh .

Para interromper o script, pressione Ctrl + c .

Se você interromper o script e reiniciá-lo no mesmo minuto, por padrão, ele sobrescreverá os dados coletados anteriormente, então esteja atento.

Deixe-me saber se você deseja fazer outras modificações no script. Para mais parâmetros de curvatura, eu recomendo a leitura da página man curl ( man curl em um terminal).

Divirta-se.

    
por Bruno Pereira 12.01.2012 / 21:33

Tags