первоначально опубликовано 06.09.2015 на jasonb.io

Reddit shell — это довольно простой веб-эмулятор оболочки Linux, который позволяет программно просматривать Reddit через командную строку. http://redditshell.com/

Он полностью работает с запросами JSON в Reddit, которые затем анализируются, форматируются, сохраняются и связываются с новыми командами для будущего использования. Этот проект на 100% является интерфейсом, что приятно и отличается от того, что я обычно делаю.

Эмуляция терминала взята из замечательного плагина jquery.terminal от jcubic, который вы можете найти здесь: http://terminal.jcubic.pl/

На момент написания этого сообщения оболочка Reddit может отображать сообщения из любого общедоступного сабреддита, перемещаться по истории страниц для этих сообщений, сортировать сообщения по новым/наиболее популярным/спорным, открывать содержимое для любого сообщения в новом окне, просматривать комментарии для любую общедоступную публикацию, просмотр отдельных деревьев комментариев, поиск в Reddit и список всех общедоступных субреддитов.

Все команды начинаются с получения объекта JSON из Reddit, который затем анализируется и используется для указанной команды. Вот блок, который захватывает посты на главной странице:

$.getJSON('http://www.reddit.com/.json?jsonp=?', function(data) { 
    var redditjson = data.data.children;
    $(redditjson).each(function() { if (this.data != undefined) {
      // format JSON object data, store references, etc
    });
});

Как видите, он форматирует данные объекта в блоки HTML, а затем сохраняет данные, которые вам понадобятся для будущих команд, в глобальные массивы и переменные, в зависимости от контекста. Он не очень сложен, но он хорошо справляется с использованием данных, когда это необходимо, а затем освобождает их после этого, чтобы не путать пространства имен или использовать много памяти.

По сути, это и есть вся кодовая база — просто набор правил, привязанных к существованию определенных данных JSON. У Reddit есть фантастический открытый API, который они делают доступным, что позволяет осуществлять подобную глубокую интеграцию. Слава реддит.

Планы на будущее для оболочки Reddit, вероятно, будут включать в себя максимально приближенный к 100% опыт. Это означает, что вы можете входить в систему, комментировать, голосовать, публиковать сообщения и т. д. Все эти забавные вещи. Если вы хотите помочь с разработкой или посмотреть код, проект находится на GitHub! Раскошельтесь! https://github.com/jasonbio/reddit-shell

Пасхальное яйцо ждет каждого, кто попытается ввести опасные команды Linux :)

Первоначально опубликовано на jasonb.io.