Сохранить почасовой файл из ответа cURL

Я следую за разработчиком Twitter и хочу сделать очень простой вызов против их API в реальном времени. Ниже приведен код ниже:

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

Моя надежда динамически называет файл таким образом, что фиксируются почасовые журналы данных.

РЕДАКТИРОВАТЬ: ничего не стоит, что я я надеюсь, что эта команда остается открытой и что данные, которые я получаю, являются непрерывными. Я хочу перенаправить вывод каждый час в разные файлы.

Я совершенно не знаком с командной строкой и ubuntu, поэтому я даже не знаю, с чего начать. Любая помощь будет высоко оценена.

3
задан 14 January 2012 в 07:06

1 ответ

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_script.sh и сделать его исполняемым с chmod 755 ~/curl_script.sh, прежде чем использовать его на терминале, чтобы использовать его, перемещая папку, в которой был сохранен скрипт, и просто введите ./curl_script.sh.

Чтобы прервать скрипт, нажмите Ctrl + c.

Если вы прерываете сценарий и возобновляете i t в ту же минуту он по умолчанию перезапишет предыдущие собранные данные, поэтому будьте осторожны.

Сообщите мне, хотите ли вы внести некоторые другие изменения в скрипт. Для дальнейших параметров завихрения я рекомендую прочитать страницу curl man (man curl на терминале).

Удачи.

4
ответ дан 25 May 2018 в 15:14
  • 1
    Спасибо за этот отличный ответ, но это создает файл с данными, но не почасовой файл. Я надеюсь создать часовой файл из данных, которые транслируются в мой компьютер с помощью команды Curl. – Btibert3 13 January 2012 в 07:07
  • 2
    Что произойдет, если вы запустите команду на терминале? Можете ли вы дать больше информации о том, почему это не то, что вы ищете? – Bruno Pereira 13 January 2012 в 15:40
  • 3
    Когда я запускаю команду, файл данных сохраняется с информацией о времени в имени файла, что отлично, но файл продолжает собирать данные после завершения часа. Я просто хочу командовать для запуска без остановок, с отдельными файлами, созданными каждый час или около того. – Btibert3 13 January 2012 в 22:46
  • 4
    Извините, ваш 100% прав. Его исправлено, оставьте комментарий, когда вы его протестировали. – Bruno Pereira 14 January 2012 в 02:56
  • 5
    Отлично, спасибо за вашу помощь. Фантастический ответ. Я очень рад изучению Ubuntu. – Btibert3 14 January 2012 в 06:07

Другие вопросы по тегам:

Похожие вопросы: