web-dev-qa-db-ja.com

cURL応答から毎時ファイルを保存する

私はTwitterの開発者と一緒にフォローしていますが、フィルターのリアルタイムAPIに対して非常に基本的な呼び出しを行いたいと思っています。以下のコードはほとんど私をそこに導きます:

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

データの1時間ごとのログがキャプチャされるように、ファイルに動的に名前を付けたいと思っています。

編集:このコマンドが開いたままであり、受信したデータが連続していることを望んでいることは何の価値もありません。出力を1時間ごとに異なるファイルにリダイレクトしたいと考えています。

私はコマンドラインとubuntuがまったく新しいので、どこから始めればよいかさえわかりません。どんな助けも大歓迎です。

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

ここで、formatは次のいずれかです。

%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

そのため、これはファイルを保存し、現在の時間の時間(%H)と分(%M)を動的に追加します

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

curlで1時間データを取得し、そのデータをファイルに保存して、少なくとも小さなスクリプトを使用する必要がある操作を再開するため、次のようになります。

#! /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

スクリプトを実行したままコマンドを実行すると、3600秒(1時間、-m 3600パラメーター)ごとにcurlが閉じ、コマンドが実行されます。

これは単にストリームをスリットするだけでなく、実際にcurlを閉じて再度開くことに注意してください。curlの実行中にストリームをスリットすることは考えられません。

スクリプトをどこかで同じにする必要があります。つまり、~/curl_script.shを使用してから端末で使用する前にchmod 755 ~/curl_script.shで実行可能にし、スクリプトを保存したフォルダーを移動して./curl_script.sh

スクリプトを中断するには Ctrl+c

スクリプトを中断して同じ分に再開すると、デフォルトで以前に収集されたデータが上書きされるため、注意してください。

スクリプトに他の変更を加える場合はお知らせください。さらにcurlパラメーターについては、curlのmanページ(端末のman curl)を読むことをお勧めします。

楽しんで。

5
Bruno Pereira