Reddit est un réseau social dont la popularité a explosé ces dernières années. Son modèle de contenu axé sur l'utilisateur est un excellent endroit pour trouver des nouvelles, de l'humour, des choses que vous ne saviez pas que vous vouliez savoir et des choses que vous ne pouvez jamais perdre de vue. C'est bien!
Une grande partie de la popularité de Reddit provient de sa notion de sous-redits. Ce ne sont rien de plus que des messages rassemblés par une personne, un lieu, un objet ou un idéal commun. À titre d'exemple, l'un des sous-reddits les plus populaires à ce jour est r / aww. Un sous-reddit rempli avec rien que des images d'animaux adorables.
Si seulement il y avait un moyen de surfer sur Reddit au travail sans trop attirer l'attention sur soi (ou sur l'écran).
Dans ce tutoriel, je vais vous montrer comment surfer sur Reddit à partir de Terminal. Tu vas apprendre:
La première chose à savoir est de savoir comment envoyer des messages au terminal et comment obtenir la saisie de l'utilisateur depuis le terminal. Ces méthodes sont obtient
et met
, respectivement.
Chaque fois que vous souhaitez afficher quoi que ce soit à l’écran, utilisez la commande met
méthode et envelopper le texte entre guillemets. Chaque fois que vous avez besoin d’obtenir des informations de l’utilisateur, utilisez le obtient
méthode.
Vous avez maintenant besoin d'un moyen de stocker tout ce que l'utilisateur entre. Pour ce faire, vous utiliserez des variables. Pour déclarer une variable, donnez-lui un nom, puis lancez-la en la suivant avec un = et enfin ajouter une valeur à stocker dans ce.
Ainsi, les premières lignes du programme devraient se lire comme ceci:
met "Qu'est-ce que subreddit? Exemple: / r / aww put aww" sub = gets.chomp! .downcase met "Vous obtenez les meilleurs messages pour / r / # sub."
Dans la première ligne, vous saluez l’utilisateur et lui demandez de choisir un sous-reddit. Dans la deuxième ligne, vous créez le variable sous
et en lui donnant la valeur de tout ce que l'utilisateur tape.
le chomp!
et downcase
les méthodes suppriment simplement les espaces en fin de chaîne et rendent toutes les entrées minuscules, ce qui ajoute un peu de cohérence. Vous pouvez maintenant inclure cette variable n'importe où dans la sortie en l'enveloppant dans #
. Ceci est appelé interpolation de chaîne.
JSON signifie Notation d'objets Javascript. En termes simples, il s'agit simplement d'un excellent moyen de récupérer toutes les données d'un site Web particulier (disposant d'une API JSON) sans les balises ou les styles supplémentaires..
Dans le terminal, vous ne voulez pas de style ou de balisage; juste les données. Donc, JSON convient bien ici.
L'API JSON de Reddit est extrêmement simple à utiliser. Ajouter un .JSON
à n'importe quelle URL Reddit que vous introduirez normalement dans le navigateur Web. Par exemple: pour obtenir le flux JSON / r / aww, accédez à http://www.reddit.com/r/aww.json..
Cela fait beaucoup de données. Heureusement, Ruby dispose déjà d’un moyen simple d’analyser JSON et de ne vous fournir que les informations dont vous avez besoin..
Pour obtenir le flux et l’analyser, vous devez installer certaines bibliothèques Ruby existantes. Dans le terminal, exécutez les commandes suivantes:
gem installer faraday
gem installer json
Ajoutez ensuite les lignes suivantes tout en haut du fichier:
nécessite 'faraday' nécessite 'json'
Faraday vous permettra d’utiliser Ruby pour appeler des URL sur Internet et JSON vous aidera à analyser les informations que vous avez récupérées. Une fois que vous avez ces nouvelles bibliothèques disponibles, vous pouvez utiliser le code suivant pour:
#Importer dans les bibliothèques supplémentaires requièrent 'faraday' oblige 'json' #Greet l'utilisateur insère "Quel subreddit? Exemple: pour r / aww, tapez aww" sub = gets.chomp! .To_s.downcase #Output response met "Obtention du messages les plus populaires pour / r / # sub. " #Obtenir le flux JSON de la réponse Reddit sélectionnée = Faraday.get "http://www.reddit.com/r/#subBuch.json" json_response = JSON.parse response.body posts = json_response ['data'] [' les enfants]
Pour parcourir (ou faire une boucle) sur chacun des messages, vous revenez en arrière et affichez chacun dans un format lisible. Faites cela en utilisant une boucle for. Voici le code qui accomplit cette tâche:
i = 1 posts.take (10) .each do | p | post = p ['data'] met "# i." + post ['title'] met "Ups: # post ['ups'] | Downs: # post ['downs'] | Score : # post ['score'] "met" i + = 1 fin
Si vous souhaitez vous donner la possibilité d'ouvrir l'une des publications dans le navigateur par défaut du Mac, exécutez gem installer launchy
.
Ajoutez-le ensuite à la liste des autres bibliothèques que vous incluez en ajoutant nécessite 'lancement'
vers le haut du fichier.
Enfin, ajoutez cette partie de code sous la boucle for:
"La présente option permet de lancer n'importe quel message dans le navigateur par défaut" Voulez-vous en ouvrir? Choisissez le numéro à ouvrir ou répondez "Non" "open_url = gets.chomp! .To_s si open_url.downcase ==" non " || open_url.to_i> 10 met "ok" sinon Launchy.open posts [open_url.to_i - 1] ['data'] ['url'] end
Le script complet devrait ressembler à ceci:
#Amener dans les bibliothèques supplémentaires requièrent 'faraday' besoin 'json' nécessite 'lancement' '#Greet l'utilisateur insère "Salut! Quel subreddit? Exemple: Pour r / aww, tapez simplement aww" sub = gets.chomp! .To_s.downcase # La réponse en sortie met "Vous obtenez les meilleurs messages pour / r / # sous". " #Obtenir le flux JSON de la réponse Reddit sélectionnée = Faraday.get "http://www.reddit.com/r/#subBuch.json" json_response = JSON.parse response.body posts = json_response ['data'] [' children '] #Passez sur le fil et sortez les posts i = 1 posts.take (10) .each do | p | post = p ['data'] met "# i." + post ['title'] met "Ups: # post ['ups'] | Downs: # post ['downs'] | Score : # post ['score'] "met" i + = 1 et #Present option pour lancer toute publication dans le navigateur par défaut met "Voulez-vous ouvrir l’un d’entre eux? Choisissez le numéro à ouvrir ou répondez 'Non' "open_url = gets.chomp! .To_s si open_url.downcase ==" non "|| open_url.to_i> 10 met" ok "sinon Launchy.open posts [open_url.to_i - 1] ['data'] ['url'] end
Enregistrez le fichier sous check_reddit.rb dans le Les documents dossier. Pour exécuter le script, ouvrez Terminal et courir ruby ~ / Documents / check_reddit.rb
.
Être capable de courir ruby ~ / Documents / check_reddit.rb
c’est bien, mais ce serait mieux si vous pouviez taper check-reddit
dans le terminal et faire exécuter le script comme par magie.
Pour ce faire, vous pouvez aliaser le mot check-reddit
à la commande ruby ~ / Documents / check_reddit.rb
. En terminal nano ~ / .bash_profile
. Cela chargera le bash_profile
fichier dans un éditeur de texte.
Flèche vers le bas pour déplacer le curseur sous tout texte existant et ajouter alias check-reddit = "ruby ~ / Documents / check_reddit.rb"
à une nouvelle ligne.
Pour quitter et sauvegarder le fichier, appuyez sur Control-X. Vous serez invité à enregistrer les modifications. appuyez sur la Y clé alors Revenir confirmer. Exécuter un source ~ / .bash_profile
recharger le bash_profile
dans Terminal.
A partir de maintenant, tu pourras courir check-reddit
dans le terminal pour surfer avec style.
La possibilité de voir les 10 meilleurs messages dans n’importe quel sous-Reddit via le terminal est impressionnante. Il vous permet de surfer rapidement sur Reddit, sans attirer l'attention sur vous et même de donner l'impression que vous êtes au travail..
En cours de route, vous avez également appris quelques notions de base sur Ruby et JSON. Bon travail!