web-dev-qa-db-fra.com

Enregistrer le fichier horaire de la réponse cURL

Je suis les développeurs de Twitter et souhaite passer un appel très élémentaire contre leur API de filtre temps réel. Le code ci-dessous m'y arrive presque:

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

Mon espoir est de nommer dynamiquement le fichier de manière à ce que les journaux horaires des données soient capturés.

EDIT: Cela ne vaut rien que j'espère que cette commande reste ouverte et que les données que je reçois sont continues. Je cherche à rediriger la sortie toutes les heures vers différents fichiers.

Je suis complètement nouveau en ligne de commande et Ubuntu, donc je ne sais même pas par où commencer. Toute aide sera très appréciée.

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

Où, format peut être l’un des suivants:

%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

Donc, pour vous, cela va enregistrer le fichier et ajouter dynamiquement l'heure (% H) et les minutes (% M) de l'heure actuelle

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

Parce que vous voulez que curl récupère les données pendant une heure et les enregistre dans le fichier qui reprend les opérations pour lesquelles vous devez au moins utiliser un petit script, le travail sera fait:

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

Pendant que vous laissez le script en cours d'exécution, la commande sera exécutée toutes les 3600 secondes (1 heure, le paramètre -m 3600) se fermera et la commande sera exécutée.

Notez que cela ne fera pas que couper le flux, il fermera effectivement curl et le rouvrira. Ne croyez pas qu'il soit possible de couper le flux pendant que curl est en cours d'exécution.

Vous devez utiliser le même script quelque part, c'est-à-dire ~/curl_script.sh et le rendre exécutable avec chmod 755 ~/curl_script.sh avant de l'utiliser sur le terminal. Pour l'utiliser, déplacez le dossier dans lequel le script a été enregistré et tapez simplement ./curl_script.sh. .

Pour interrompre le script, appuyez sur Ctrl+c.

Si vous interrompez le script et le reprenez à la même minute, il écrasera par défaut les données précédemment collectées, alors méfiez-vous.

Faites-moi savoir si vous souhaitez apporter d'autres modifications au script. Pour d'autres paramètres curl, je recommande la lecture de la page de manuel curl (man curl sur un terminal).

S'amuser.

5
Bruno Pereira