Делегат-гуманитарий учится программировать (часть 3) — Топ-300 пользователей Голоса
Привет, в эфире Юдина Кэт! Честно сказать, программирование оказалось каким-то супер-увлекательным занятием. Жалко, что я не могу выделять на это больше времени.
Коротко
Сделала страничку топ-300 пользователей «Голоса».
Развернуто
В конце прошлой серии я запустила сканирование блокчейна, и стала ждать. Скорость сканирования примерно постоянная – 45 блоков в секунду. Поэтому я сварила Большую Чашку Кофе и набралась терпения на три с половиной дня, поскольку блоков у нас 13,4 миллиона штук.
Первые несколько миллионов блоков очень скучные. Но с ростом популярности Голоса, количество транзакций в блоках растет. Число транзакций иногда превышает 300 тысяч в сутки, слава б-гу я не ставила перед собой задачу собирать всё, и в мою БД заносятся только данные по датам последнего апвота, комментария и поста. И самое главное, что у меня теперь есть 1,27 миллиона записей о событиях добавления/удаления друзей – кто, кого, когда, зачем.
После того, как все было собрано, я написала еще один скрипт для того, чтобы забрать в свою БД значения силы голоса, количества подписчиков и подписок для каждого аккаунта. С подписками и подписчиками все просто, а вот про силу голоса стоит рассказать.
Запросом к ноде можно забрать только значение vesting_shares аккаунта. Из этого значения уже вычисляется сила голоса аккаунта. Но сначала нужно узнать глобальные переменные total_vesting_fund_steem и total_vesting_shares. А потом вот такая уличная магия:
steem_per_mvests = 1000000.0 * total_vesting_fund_steem / total_vesting_shares;
golos_power = vesting_shares / 1000000.0 * steem_per_mvests;
В итоге, скрипт пробегает во всем аккаунтам раз в час и заносит в мою БД уже готовое значение силы голоса.
Но пост не об этом. Когда у меня «на руках» оказались все эти данные, я отложила задачу по освоению мастерства написания телеграм-ботов и достаточно быстро сделала отдельную страничку с рейтингом пользователей по СГ, подписчикам и подпискам. Вот она: yudina-cat.ru.
Рейтинг не учитывает пользователей, которые не проявляли активности в течение недели. Кто любит мериться пиписьками – пользуйтесь на здоровье.
Сейчас сделаю небольшую паузу, скорее всего развлеку вас парой постов с фотками Вьетнама, потому что завтра уезжаю за 300 километров на байке. А потом закончу разбираться с телеграм-ботом для управления подписками. Не переключайтесь!
Выбрать меня своим делегатом нужно на странице голосования. Нужно нажать кнопочку рядом с моим ником.