Verificați Reddit de pe Terminalul OS X

screencast

Reddit este o rețea socială care, în ultimii ani, a explodat în popularitate. Modelul de conținut al utilizatorului este un loc minunat pentru a găsi știri, umor, lucruri pe care niciodată nu știați că doriți să le cunoașteți și câteva lucruri pe care nu le puteți vedea niciodată. E minunat!

O mare parte din popularitatea lui Reddit provine din noțiunea de sub-reddits. Acestea nu sunt altceva decât posturi concentrate împreună de o persoană obișnuită, loc, element sau ideal. De exemplu, unul dintre cele mai populare sub-reddits până în prezent este r / aww. Un sub-reddit umplut cu nimic altceva decât poze cu animale adorabile.

Dacă a existat doar o modalitate de a naviga la Reddit la locul de muncă fără a atrage prea multă atenție asupra dvs. (sau a ecranului).

În acest tutorial, vă voi arăta cum să navigați pe Reddit din Terminal. O sa inveti:

  • Sintaxă de cod Ruby de bază
  • Reddit's feed JSON și cum va ajuta scenariul să ruleze
  • Cum să analizați feedul JSON și să îl afișați
  • Cum să aliasați scriptul unei comenzi simple

Ruby de bază

Primul lucru pe care trebuie să-l cunoașteți este cum să transmiteți mesaje către terminal și cum să obțineți intrarea utilizatorului de la terminal. Aceste metode sunt devine și puts, respectiv. 

Ori de câte ori doriți să ieșiți ceva pe ecran, utilizați puts și introduceți textul în ghilimele. Oricând trebuie să obțineți informații de la utilizator, utilizați devine metodă. 

Acum aveți nevoie de o modalitate de a stoca orice intrare a utilizatorului. Pentru aceasta, veți utiliza variabile. Pentru a declara o variabilă, dați-i un nume, apoi inițiați-o urmând-o cu un = și adăugați în cele din urmă o valoare pentru a stoca în ea.

Deci, primele linii ale programului trebuie citite astfel:

pune "Ce subredit? Exemplu: / r / aww put aww" sub = get.chomp! .downcase pune "Obținerea posturilor de top pentru / r / # sub."

În prima linie, salutați utilizatorul și îi cereți să aleagă un sub-reddit. În a doua linie, creați variabil Sub și oferindu-i valoarea oricăror tipuri de utilizatori din. 

Chomp! și downcase metode doar să eliminați spațiile albe și să faceți toate literele mici, ceea ce adaugă un pic de coerență. Puteți include această variabilă oriunde în ieșire prin împachetarea acesteia # . Aceasta se numește interpolare de șir.

Redarea lui JSON Feed

JSON înseamnă Notă de obiect Javascript. În termeni simpli, este doar o modalitate excelentă de a apuca toate datele dintr-un anumit site (care are un JSON API în loc) fără toate marcajul suplimentar sau stilul. 

În terminal, nu doriți niciun stil sau marcare; doar datele. Așa că JSON se potrivește bine aici.

API-ul JSON API al lui Reddit este mort simplu de utilizat. Adăugați a .JSON la orice URL Reddit pe care l-ați introduce în browserul web. Ca exemplu: pentru a obține feedul / r / aww JSON, mergeți la http://www.reddit.com/r/aww.json.

Feedul Reddit JSON al / r / aww

Sunt multe date. Din fericire, Ruby are deja o modalitate simplă de a analiza JSON și de a vă oferi doar informațiile de care aveți nevoie.

Parsarea feedului JSON

Pentru a obține feedul și pentru al analiza, va trebui să instalați câteva biblioteci Ruby existente. În terminal rulați următoarele comenzi:

gem instala faraday
gem instalați json

Apoi adăugați următoarele linii în partea superioară a fișierului:

cere "faraday" necesită "json"

Faraday vă va permite să utilizați Ruby pentru a efectua apeluri la adrese URL de pe internet și JSON vă va ajuta să analizați informațiile pe care le primiți înapoi. Odată ce aveți aceste noi biblioteci disponibile, puteți folosi următorul cod pentru:

  1. Prindeți intrarea utilizatorului
  2. Generați o adresă URL
  3. Apelați URL-ul și reveniți la feed-ul JSON
#Brike în plus libs necesită 'faraday' necesită 'json' #Greet utilizatorul pune "What subreddit? Exemplu: Pentru r / aww, tastați aww" sub = get.chomp! .To_s.downcase #Output răspuns pune " mesajele de top pentru / r / # sub. " #Get feedul JSON al redditului răspuns selectat = Faraday.get "http://www.reddit.com/r/#sub.json" json_response = JSON.parse răspuns.body posturi = json_response ['data'] [ copii ']

Pentru a itera (sau buclă) peste fiecare dintre postările pe care le primiți înapoi și afișați fiecare într-un format lizibil. Faceți acest lucru folosind o buclă. Iată codul care îndeplinește acea sarcină:

i = 1 posts.take (10) post = p ['data'] pune "# i" + post ['title'] pune "Ups: # post ['ups'] : # post ['scor'] "pune" i + = 1 capăt

Dacă doriți să vă oferiți opțiunea de a deschide una dintre postările din browserul implicit al aplicației Mac gem instalați lansat

Apoi adăugați-l în lista celorlalte biblioteci pe care le includeți adăugând cere "lansare" în partea de sus a fișierului. 

În sfârșit, adăugați această bucată de cod sub buclă:

Opțiunea #Present pentru a lansa orice post în browserul implicit pune "Doriți să deschideți oricare dintre acestea? Alegeți numărul de deschis sau răspundeți" Nu "" open_url = get.chomp! .To_s dacă open_url.downcase == "nu" || open_url.to_i> 10 pune "ok" altceva Launchy.open posturi [open_url.to_i - 1] ['data'] ['url'] end

Scriptul complet ar trebui să arate astfel:

#Brike în plus libs necesită 'faraday' necesită 'json' necesită 'launchy' #Greet utilizatorul pune "Hi! What subreddit? Exemplu: Pentru r / aww, pur și simplu tastați aww" sub = gets.chomp! .To_s.downcase # Rezultatul răspunsului pune "Obținerea posturilor de top pentru / r / # sub." #Get feedul JSON al redditului răspuns selectat = Faraday.get "http://www.reddit.com/r/#sub.json" json_response = JSON.parse răspuns.body posturi = json_response ['data'] [ copii]] #Iterați pe feed și scoateți posturile i = 1 posts.take (10). post = p ['data'] pune "# i" + post ['title'] pune "Ups: # post ['ups'] : # post ['scor'] "pune" i + = 1 capăt #Presenta opțiune pentru a lansa orice post în browser implicit pune "Doriți să deschideți oricare dintre acestea? Alegeți numărul de deschidere sau răspundeți "Nu" "open_url = get.chomp! .To_s dacă open_url.downcase ==" nu "|| open_url.to_i> 10 pune" ok "altceva Launchy.open posts [open_url.to_i - 1] ['data'] ['url'] sfârșit

Salvați fișierul ca check_reddit.rb în Documente pliant. Pentru a rula scriptul, deschideți Terminal și fugi rubin ~ / Documente / check_reddit.rb.

Crearea unui alias pentru script

Să poți alerga rubin ~ / Documente / check_reddit.rb este bine și bine, dar ar fi mai bine dacă ai putea să tipi check-reddit în terminal și să aibă scriptul rulați magic.

Pentru a realiza acest lucru, puteți alias cuvântul check-reddit la comandă rubin ~ / Documente / check_reddit.rb. În rularea terminalului nano ~ / .bash_profile . Aceasta va încărca bash_profile fișier într-un editor de text. 

Săgeată în jos pentru a muta cursorul sub orice text existent și adăugați alias check-reddit = "ruby ~ / Documents / check_reddit.rb" la o nouă linie. 

Pentru a ieși și a salva fișierul apăsați Control-X. Vi se va solicita salvarea modificărilor. apasă pe Y cheie atunci Întoarcere a confirma. Fugiți a sursă ~ / .bash_profile pentru a reîncărca bash_profile în Terminal.

Concluzie

De acum înainte, vei putea să fugi check-reddit în terminal pentru a naviga în stil.

Abilitatea de a vedea primele 10 posturi în orice sub Reddit prin terminal este minunat. Vă permite să navigați rapid pe Reddit, fără a vă atrage atenția asupra dvs. și chiar o face să pară că sunteți foarte greu la locul de muncă. 

De-a lungul modului în care ați luat câteva abilități de bază Ruby și JSON. Buna treaba!