Sjekk Reddit fra OS X Terminal

Check Reddit fra OS X Terminal

Screen

Reddit er et sosialt nettverk som i de senere årene har eksplodert i popularitet. Det er brukerstyrt innhold modellen gjør er et flott sted å finne nyheter, humor, ting du ikke visste du ville vite, og noen ting du kan aldri un-se. Det er flott!

Mye av Reddit popularitet kommer fra sin forestilling om under reddits. Dette er noe mer enn innleggene samlet sammen av en felles person, sted, et element eller ideal. Som et eksempel, er en av de mest populære under reddits hittil r /aww. En sub-reddit fylt med ingenting, men bilder av søte dyr.

Hvis bare det var en måte å surfe Reddit på jobb uten å trekke for mye oppmerksomhet til deg selv (eller på skjermen).

I denne opplæringen vil jeg vise deg hvordan du kan surfe Reddit fra Terminal. Du vil lære:

Basic Ruby-kode syntaks

Reddit er JSON-feed, og hvordan det vil hjelpe skriptet kjøre

Hvordan analysere JSON-feed og vise det

hvordan alias manuset til en enkel kommando

Ruby Basics

det første du trenger å vite er hvordan å sende meldinger til terminalen og hvordan du får brukerundersøkelser i fra terminalen. Disse metodene er får og setter, henholdsvis.

Når du vil ut noe på skjermen, bruker du setter metoden og bryte teksten i anførselstegn. Når som helst du trenger for å få informasjon fra brukeren, bruker du blir metoden.

Du trenger nå en måte å lagre noe brukeren angir. For å gjøre dette, vil du bruke variabler. Å erklære en variabel, gi den et navn, og deretter starte det ved å følge den med en = Hotell og endelig legge til en verdi å lagre i det.

Så de første linjene i programmet bør lese som dette:
puts "Hva subreddit Eksempel:? /r /aww sette aww"! sub = gets.chomp .downcaseputs "Få deg de beste innleggene /r/#{sub}."

In den første linje, er du hilsen brukeren og ber dem om å velge et under reddit. I den andre linjen oppretter du variabel
sub og gi det verdien av hva brukeren skriver inn.

chomp! og downcase metoder bare fjerne etterfølgende mellomrom og gjøre alle inngangs små bokstaver, som legger litt av konsistens. Du kan nå inkludere den variabelen hvor som helst i produksjonen ved å pakke den i # {}. Dette kalles streng interpolasjon.

Reddit er JSON-feed

JSON står for Javascript Object Notation
. Enkelt sagt, er det bare en fin måte å ta alle de data fra et bestemt nettsted (som har en JSON API på plass) uten alle de ekstra markering eller stil.

I terminalen, du vil ikke ha noen stil eller markup; bare data. Så JSON passer godt her.

JSON API Reddit s er død enkel å bruke. Tilføy en .json til noen Reddit URL du vanligvis ville innspill til nettleser. Som et eksempel: å få /r /aww JSON-feed, vil du gå til http://www.reddit.com/r/aww.json
Reddit JSON-feed av /r /aww

That. er mye data. Heldigvis Ruby har allerede en enkel måte å analysere JSON og få deg bare den informasjonen du trenger.

Analysere JSON-feed

For å få fôr og analysere det, må du installere noen eksisterende Ruby biblioteker. I terminalen kjøre følgende kommandoer:
perle installere Faraday
perle installere json

Deretter legge til følgende linjer til toppen av filen:
krever 'faraday'require' json '

Faraday vil tillate deg å bruke Ruby å ringe til webadresser på internett og JSON vil hjelpe deg å analysere den informasjonen du får tilbake. Når du har disse nye biblioteker tilgjengelig kan du bruke følgende kode:


    Ta tak i brukerundersøkelser

    Opprett en nettadresse

    Ring URL og få JSON feed back
    #Bring i ekstra libsrequire 'faraday'require' json '# Hils userputs "Hva subreddit Eksempel: For r /aww, skriv aww" sub = gets.chomp .to_s.downcase # Output! responseputs "Få deg de beste innleggene /r/#{sub}."#Get JSON-feed av valgt Redditresponse = Faraday.get" http://www.reddit.com/r/#{sub}.json"json_response = JSON.parse response.bodyposts = json_response [ 'data'] [ 'barn']

    for å gjenta (eller sløyfe) over hver av de innleggene du får tilbake og vise hver og en i et lesbart format. Gjør dette ved å bruke en for-løkke. Her er koden som oppnår den oppgaven:
    i = 1posts.take (10) .Hver gjøre | p | post = p [ 'data'] setter "# {i}.» + innlegget [ 'tittel'] setter "Ups: # {innlegget [ 'ups']} | Downs: # {innlegget [ 'downs']} | Score : # {legg [ 'rille']} "puts '' i + = 1end

    Hvis du ønsker å gi deg selv muligheten til å åpne en av innleggene i Mac-standard nettleser drevne perle installere Launchy.

    Deretter legger den til listen over andre biblioteker du blant annet ved å legge kreve 'Launchy "til toppen av filen.

    Til slutt legger denne del av koden under for-loop?
    #Present muligheten til å lansere noen innlegg i standard browserputs "Vil du åpne noen av disse Velg antall åpne, eller svar ' No ' "open_url = gets.chomp! .to_sif open_url.downcase ==" nei "|| open_url.to_i > 10 puts "ok" annet Launchy.open innlegg [open_url.to_i - 1] [ 'data'] [ 'url'] end

    Den komplette manuset skal se slik ut:
    #Bring i ekstra libsrequire 'Faraday' krever 'json'require' Launchy '# Hils userputs "Hei Hva subreddit Eksempel:? for r /aww, skriver du bare aww"! sub = gets.chomp .to_s.downcase # Output responseputs "Får du de beste innleggene for /r /# {sub}. "# Få JSON-feed av valgt Redditresponse = Faraday.get" http://www.reddit.com/r/#{sub}.json"json_response = JSON.parse response.bodyposts = json_response [ ,,,0],'data'] [ 'barn'] # Iterate over fôret og gi ut den postsi = 1posts.take (10) .Hver gjøre | p | post = p [ 'data'] setter "# {i}.» + innlegget [ 'tittel'] setter "Ups: # {innlegget [ 'ups']} | Downs: # {innlegget [ 'downs']} | Score : # {legg [ 'rille']} "puts ''? i + = 1end # Present muligheten til å lansere noen innlegg i standard browserputs" Vil du åpne noen av disse Velg antall åpne, eller svar "Nei" " open_url = gets.chomp! .to_sif open_url.downcase == "nei" || open_url.to_i > 10 puts "ok" annet Launchy.open innlegg [open_url.to_i - 1] [ 'data'] [ 'url'] end

    Lagre filen som check_reddit.rb
    i Dokumenter
    mappe. For å kjøre skriptet, åpne Terminal Hotell og kjøre ruby ​​~ /Dokumenter /check_reddit.rb.

    Opprette et alias til Script

    Å kunne kjøre ruby ​​~ /Dokumenter /check_reddit.rb er vel og bra, men det ville være bedre hvis du kunne skrive sjekker reddit i terminalen og har manuset magisk kjøre.

    For å oppnå dette, kan du alias ordet innsjekking reddit til kommandoen ruby ​​~ /Dokumenter /check_reddit.rb. I terminal kjøre nano ~ /.bash_profile. Dette vil laste bash_profile filen i en teksteditor.

    Pil ned for å flytte markøren under eksisterende tekst og legge alias innsjekking reddit = 'ruby ~ /Dokumenter /check_reddit.rb "til en ny linje.

    For å avslutte og lagre filen trykker du på Ctrl-X
    . Du vil bli bedt om å lagre endringene. Trykk på Y
    tasten Retur
    å bekrefte. Kjør en kilde ~ /Bash_profile å laste bash_profile inn Terminal
    .

    Konklusjon

    Fra nå av vil du kunne kjøre sjekke reddit i terminalen til surfe med stil.

    evnen til å se de 10 beste innleggene i noen sub Reddit via terminalen er kjempebra. Det gjør at du raskt surfe Reddit, uten å trekke noen oppmerksomhet til deg selv, og selv gjør det ser ut som du er hardt arbeid.

    Underveis plukket opp noen grunnleggende Ruby og JSON ferdigheter i tillegg. Flott jobb!