Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ksantoprotein
6 лет назад

Голос vs Steem (50-50) часть 2

Пссс... давай уничтожать 80% и переделывать алгоритм равного вознаграждения!

Нам потребуется Python 3 и api библиотеку для голоса от piston-api. А пока немного моих мемуаров. Изначально у меня скрипт работал (для 50-50) в командной строке, это был реально батник (*.bat) и он раздавал токены более двух часов за раз. Потом налег на питон и уже получился микс, часть команд из командной строки для файла piston.exe остались, а часть уже была в функциях питона. Следующим этапом был отказ от командной строки и переход исключительно на api в piston-api. Далее дорос до того, что вношу сам изменения в оригинальный код под свои нужды. А так как планируется ХФ со сменой апи запросов, то логичнее написать код, чтобы можно было с меньшими затратами переделать его под новое (и чтобы для стимита так же работало). Из двух вариантов... первый перепиливать исходные библиотеки, чтобы предыдущие скрипты работали и второй... пилить новый код с простотой адаптации я выбрал второй вариант. Эх... знал бы я тогда, когда впервые подключился к блокчейну куда меня квадратная функция заведет.

Приступим. У нас якобы есть пост и за него пришли выплаты. Опыт взаимодействия с новичками показал, что им трудно оперировать url, permlink - для них темный лес. Поэтому необходимо заранее научить кормить бота ссылками как на комментарии, так и на посты.

вот пример ссылки (url) на пост:
https://golos.io/ru--apvot50-50/@ksantoprotein/golos-vs-steem-50-50-chast-1

нам необходимо лишь:
ksantoprotein/golos-vs-steem-50-50-chast-1

где
ksantoprotein - автор (author)
golos-vs-steem-50-50-chast-1 - пермлинк (permlink)

а это пример url комментария:
https://golos.io/ru--apvot50-50/@ksantoprotein/golos-vs-steem-50-50-chast-1#@ksantoprotein/re-abrakadabra-re-ksantoprotein-golos-vs-steem-50-50-chast-1-20180228t174902531z

нам необходимо:
ksantoprotein/re-abrakadabra-re-ksantoprotein-golos-vs-steem-50-50-chast-1-20180228t174902531z

Да, выплаты бывают и за комменты, но мало ли, вдруг мы решим создать сеть ботов по принципу бота с приветом и будет постить хз что и отдавать все ликвидные токены... так можно же еще настрогать 40 комментариев и выплачивать с них. Чуть позже расскажу схему этой инициативы, которая удобна в реализации для линейки)

Создаем функцию

def url_to_identifier(url):

    if '#' in url:
        url = url.split('#')[1]

    if '@' in url:
        url = url.split('@')[1]

    return(url)

Вот такая незатейливая функция. Если в ссылке есть #, то строка делится на две части и оставляется вторая часть. И далее если в ссылке есть @, то так же строка делится пополам и возвращается снова вторая часть. Это и будет то что нужно.

Чем мне нравится ООП в питоне, так это то, что имена это ссылки, так что можно использовать одинаковые имена и внутри функции и снаружи. Они будут пересекаться, только если ссылаются на одно и то же.

Испытаем функцию в действии

url = 'https://golos.io/ru--apvot50-50/@ksantoprotein/golos-vs-steem-50-50-chast-1'
url = url_to_identifier(url)
print(url)

Результат

001.jpg

А если комментарий?

url = 'https://golos.io/ru--apvot50-50/@ksantoprotein/golos-vs-steem-50-50-chast-1#@ksantoprotein/re-abrakadabra-re-ksantoprotein-golos-vs-steem-50-50-chast-1-20180228t174902531z'
url = url_to_identifier(url)
print(url)

002.jpg

То что надо.

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


Следующий этап. Нам нужно получить определенные данные из поста, проверить пришли ли по нему выплаты. Благо ссылку мы научились трансформировать. Дело за малым.

from piston import Steem
golos = Steem('wss://ws.golos.io')

Импортируем библиотеку и подключаемся к блокчейну. Так как мы только планируем оперировать с информацией, то никаких ключей для работы с нодой нам не понадобится. Да, есть готовый класс Post в piston, но мы им пользоваться не будем, а распишем обращение по апи напрямую.

Продолжение следует...

0
7.113 GOLOS
На Golos с July 2017
Комментарии (5)
Сортировать по:
Сначала старые