Reddit è un social network che, negli ultimi anni, è esploso in popolarità. È un modello di contenuto basato sugli utenti, è un ottimo posto per trovare notizie, umorismo, cose che non hai mai saputo di voler conoscere e alcune cose che non puoi mai vedere. È ottimo!
Gran parte della popolarità di Reddit deriva dalla sua nozione di sub-reddits. Questi non sono altro che messaggi raggruppati insieme da una persona comune, luogo, oggetto o ideale. Ad esempio, uno dei sub-reddits più popolari fino ad oggi è r / aww. Un sotto-reddit pieno di nient'altro che immagini di adorabili animali.
Se solo ci fosse un modo per navigare Reddit al lavoro senza attirare troppa attenzione su te stesso (o sullo schermo).
In questo tutorial, ti mostrerò come navigare su Reddit dal terminale. Imparerai:
La prima cosa che devi sapere è come inviare messaggi al terminale e come ottenere input dell'utente dal terminale. Questi metodi sono prende
e mette
, rispettivamente.
Ogni volta che vuoi produrre qualcosa sullo schermo, usa il mette
metodo e avvolgere il testo tra virgolette. Ogni volta che è necessario ottenere informazioni dall'utente, utilizzare il prende
metodo.
Ora hai bisogno di un modo per archiviare qualsiasi cosa l'utente entri. Per fare ciò, userete le variabili. Per dichiarare una variabile, assegnagli un nome, quindi avvialo seguendola con un = e infine aggiungere un valore per memorizzare in esso.
Quindi le prime righe del programma dovrebbero leggere così:
mette "Quale subreddit? Esempio: / r / aww put aww" sub = gets.chomp! .downcase puts "Prendendo i posti migliori per / r / # sub."
Nella prima riga, si saluta l'utente e si chiede loro di scegliere un sotto-reddit. Nella seconda riga si sta creando il variabile sub
e dandogli il valore di qualunque cosa l'utente digiti.
Il chomp!
e downcase
i metodi rimuovono solo gli spazi bianchi finali e rendono tutto l'input in minuscolo, il che aggiunge un po 'di coerenza. Ora puoi includere quella variabile ovunque nell'output avvolgendolo #
. Questa è chiamata interpolazione delle stringhe.
JSON sta per Notazione oggetto Javascript. In termini semplici, è semplicemente un ottimo modo per prendere tutti i dati da un determinato sito Web (che ha un'API JSON in atto) senza tutti i markup o lo stile extra.
Nel terminale, non vuoi alcuno stile o marcatura; solo i dati Quindi JSON si adatta bene qui.
L'API JSON di Reddit è estremamente semplice da utilizzare. Aggiungi a .jSON
a qualsiasi URL Reddit che immetteresti normalmente nel browser web. Ad esempio: per ottenere il feed JSON / r / aww, andresti su http://www.reddit.com/r/aww.json.
Questo è un sacco di dati. Fortunatamente, Ruby ha già un modo semplice per analizzare JSON e ottenere solo le informazioni di cui hai bisogno.
Per ottenere il feed e analizzarlo, è necessario installare alcune librerie Ruby esistenti. Nel terminale esegui i seguenti comandi:
gem installazione di faraday
gem install json
Quindi aggiungi le seguenti righe nella parte superiore del file:
richiedere 'faraday' richiedono 'json'
Faraday ti consentirà di utilizzare Ruby per effettuare chiamate agli URL su Internet e JSON ti aiuterà a analizzare le informazioni che ricevi. Una volta disponibili queste nuove librerie, puoi usare il seguente codice per:
#Bring in librerie aggiuntive richiede 'faraday' richiede 'json' #Greet l'utente mette "Cosa subreddit? Esempio: per r / aww, scrivi aww" sub = gets.chomp! ._S.downcase # La risposta di uscita mette "Prendi il primi messaggi per / r / # sub. " # Ottieni il feed JSON della risposta Reddit selezionata = Faraday.get "http://www.reddit.com/r/#sub.json" json_response = JSON.parse response.body posts = json_response ['data'] [' bambini']
Per iterare (o eseguire il ciclo) su ciascuno dei post, si torna indietro e si visualizza ciascuno in un formato leggibile. Fai questo usando un ciclo for. Ecco il codice che realizza questo compito:
i = 1 posts.take (10) .each do | p | post = p ['data'] inserisce "# i." + post ['titolo'] colloca "Ups: # post ['ups'] | Downs: # post ['downs'] | Punteggio : # post ['score'] "mette" i + = 1 fine
Se desideri concederti la possibilità di aprire uno dei post nell'esecuzione del browser predefinito del Mac gem installa launchy
.
Quindi aggiungilo all'elenco di altre librerie incluse aggiungendo richiedere 'lancio'
all'inizio del file.
Infine aggiungi questo pezzo di codice sotto il ciclo for:
L'opzione #Present per aprire qualsiasi post nel browser predefinito mette "Vuoi aprire uno di questi? Scegli il numero da aprire, o rispondi 'No'" open_url = gets.chomp! .To_s se open_url.downcase == "no" || open_url.to_i> 10 inserisce "ok" else Launchy.open posts [open_url.to_i - 1] ['data'] ['url'] end
Lo script completo dovrebbe assomigliare a questo:
#Bring in librerie aggiuntive richiede 'faraday' richiede 'json' richiede 'launchy' #Greet l'utente mette "Ciao! Che subreddit? Esempio: Per r / aww, scrivi semplicemente aww" sub = gets.chomp! .To_s.downcase # La risposta all'output mette "Stai ricevendo i posti migliori per / r / # sub." # Ottieni il feed JSON della risposta Reddit selezionata = Faraday.get "http://www.reddit.com/r/#sub.json" json_response = JSON.parse response.body posts = json_response ['data'] [' children '] #Iterifica sul feed e genera i post i = 1 posts.take (10) .each do | p | post = p ['data'] inserisce "# i." + post ['titolo'] colloca "Ups: # post ['ups'] | Downs: # post ['downs'] | Punteggio : # post ['score'] "puts" i + = 1 end L'opzione #Present per avviare qualsiasi post nel browser predefinito mette "Vorresti aprire uno di questi? Scegli il numero da aprire, oppure rispondi "No" "open_url = gets.chomp! .To_s se open_url.downcase ==" no "|| open_url.to_i> 10 inserisce" ok "else Launchy.open posts [open_url.to_i - 1] ['data'] ['url'] fine
Salva il file come check_reddit.rb nel Documenti cartella. Per eseguire lo script, apri terminale e corri rubino ~ / Documenti / check_reddit.rb
.
Essere in grado di correre rubino ~ / Documenti / check_reddit.rb
va tutto bene, ma sarebbe meglio se potessi scrivere il check-reddit
nel terminale e avere la sceneggiatura magicamente eseguita.
Per realizzare questo, puoi fare alias la parola il check-reddit
al comando rubino ~ / Documenti / check_reddit.rb
. In terminal nano ~ / .bash_profile
. Questo caricherà il bash_profile
file in un editor di testo.
Freccia giù per spostare il cursore sotto qualsiasi testo esistente e aggiungere alias check-reddit = "ruby ~ / Documents / check_reddit.rb"
a una nuova linea.
Per uscire e salvare il file premere Control-X. Ti verrà richiesto di salvare le modifiche. premi il Y quindi chiave Ritorno per confermare. Esegui a source ~ / .bash_profile
per ricaricare il bash_profile
in terminale.
D'ora in poi sarai in grado di correre il check-reddit
nel terminal per navigare con stile.
La possibilità di vedere i primi 10 post in qualsiasi sub Reddit tramite il terminale è fantastica. Ti permette di navigare velocemente su Reddit, senza attirare l'attenzione su di te e persino farlo apparire come se fossi al lavoro.
Lungo la strada hai raccolto anche alcune abilità base di Ruby e JSON. Ottimo lavoro!