Разработка клиента блокчейна Голос с использованием GOLOS API 2.0
Клиент в помощь новичкам Голоса от незрячего начинающего php программиста Дениса Скрипника.
Здравствуйте. Неделю назад ходил по постам в Голосе, и увидел библиотеку php golos api v2. Захотелось попробовать реализовать клиент для Голоса, благо идеи были:
- Сайт в помощь новичкам: посты и список ников;
- Клиент, собирающий торренты, парсящий содержимое в поисках magnet ссылок.
Решил реализовать первый.
Цели создания
- Научиться работать с API. Я новичок в программировании на php (Начал кодить в июле, но через неделю застопорился на 4 месяца).
- Помочь новичкам Голоса. На сайте размещаются их посты: те, кто уже имеет какой-то вес, может прочитать статью, перейти на goldvoice (В будущем будет выбор) и поставить апвоут. Либо, другой вариант - можно посмотреть список ников, кликнуть на любой и перейти на goldvoice. Дальше вариантов много:
- Подписаться на новичка;
- Апвоутить его посты;
- Репостнуть записи.
Я тоже буду это делать.
Функционал
О функционале немного писал выше, но сейчас расскажу подробнее:
- На главной размещается две вкладки: посты новичков и список новичков. По умолчанию всегда открыта первая вкладка. Содержимым является таблица, содержащая ник автора со ссылкой, его пост и количество голосов.
На второй вкладке размещается список ников с возможностью перехода на страницу пользователя.
На каждой вкладке работает постраничная навигация (Отображается по 30 элементов). Единственное неудобство заключается в том, что после клика на следующую или предыдущую страницу, произойдёт автоматический выбор первой вкладки (Посты новичков). - По клику на пост открывается страница с записью. Она содержит название, дату, автора, количество апвоутов и текст. Ниже текста - ссылка на goldvoice для того, чтобы вы могли проголосовать.
Код
Код клиента можно посмотреть на GitHub:
https://github.com/denis-skripnik/newbie-goloses-ru
Рабочий пример
Посмотреть можно тут http://newbie.goloses.ru/
Сложности:
- Постраничная навигация работала так, что на главной выводилась ошибка. @tristamoff помог с её удалением. Кроме этого, он сделал работоспособными ссылки "Предыдущая", "следующая".
- Не понимал, как вывести количество голосов. @tristamoff помог и тут, за что ему большая благодарность.
- С трудом смог сделать работоспособными страницы записей. Дело в том, что в информации про
getpost.php
не говорилось о необходимости добавлятьauthor
вurl
.
Планы на будущее:
- Сделать сохранение вкладки при переходе на новую страницу. Будет либо заменён метод их размещения, либо исправлен текущий.
- Сделать перенаправление 301 с ?page=0 на главную.
- Кеширование элементов, пока они находятся в списке (Пока не знаю как, но буду разбираться, поскольку скорость загрузки сайта низкая).
- Сделать обработку адресов, как ссылок. Те изображения, которые вставлены просто адресами, сейчас не кликабельны.
- Добавить ссылку на golos.io, чтобы те, кто не авторизовывались в goldvoice, могли проголосовать на golos.io.
Здесь я вижу 2 варианта:
- Разместить две ссылки.
- Добавить вверху страницы выпадающий список с возможностью выбора клиента (golos, goldvoice).
Вопрос: какой вариант вам больше нравится?
И ещё один: ссылку на переход в основной клиент сделать возле количества голосов или оставить под текстом?
Благодарю за ответы.
Предложения
Если это реально, было бы замечательно интегрировать систему апвоутов в newbie-golos-ru, чтоб людям не приходилось переходить на другие клиенты.
Насколько я знаю - это реализуется только с использованием node.js. Будет, конечно, хорошо, если на php будет подобное реализовано, но если нет - может тот, кто знает node.js захочет добавить данный функционал.
Примечание редактора: можно и на чистом js, в браузере, имея логин и как минимум приватный постинг ключ. На php ещё никто не написал скрипт, позволяющий записывать данные в блокчейн:)
Заключение
Ещё раз повторяю, что я - новичок в программировании на php, поэтому прошу не писать о том, что у меня "говнокод", "непонятный код" и т. п. я об этом знаю, но пока начать функциональным методом писать не получается.
Жду комментариев и апвоутов. Надеюсь, данный клиент кому-то будет полезным (или хотя-бы интересно будет посмотреть на опыт новичка).
Пост подготовлен незрячим вебмастером @denis-skripnik