dimas102
7 лет назадJavaScript. Первое расширение для Google Chrome. Подглядываем за курсом GBG на внутреннем Маркете Голоса не заходя в Golos.io
![](https://img.golos.io/proxy/https://s25.postimg.org/dzkceqgjz/chrome.gif)
Продавая свои крохотные GBG за ГОЛОСа не местной бирже, в надежде хоть чуть-чуть увеличить силу голоса, я переживаю, продались - не продались, как там курс, не дорого ли я запросил, в общем дело на копейку, а суеты на тыщу. Ну, и раз я начал разбираться в работе с API, то подумал, а почему бы не попробовать сделать расширение Chrome для подглядывания за курсом через API Голоса, тем более, что vik делал классный разбор кода обращения через сокет.
Почитал, что да как, примерно понял как делать расширение и начал искать запросы на которые реагирует API Голоса, а именно запросы касающиеся Маркета Голоса. Нашел, труды asuleymanov https://golos.io/ru--otkrytyij-kod/@asuleymanov/opisanie-golosapi-chast-3 и Golos API Explorer , автор on0tole . Из всех запросов, у меня сработал только get_order_book. Может у других параметры не правильные задавал, может знаний не хватает, не знаю. В общем получилось, то, что получилось. Отдаю на ваш суд как есть, чур сильно не пинать.:))
![](https://img.golos.io/proxy/https://s25.postimg.org/l425nrntb/get_order_book.gif)
Вот такое чудо чудное, да диво дивное выдает API Голоса на запрос get_order_book с параметром "3".
![](https://img.golos.io/proxy/https://s25.postimg.org/ncgc53uxb/html.gif)
Это HTML файл с таблицей размещения данных.
![](https://img.golos.io/proxy/https://s25.postimg.org/x8hf4r0pb/js.gif)
Скрипт, в комментариях постарался описать, что делает.
![](https://img.golos.io/proxy/https://s25.postimg.org/816j4hxlb/json.gif)
Файл .json нужен Chrome для правильной работы расширения.
![](https://img.golos.io/proxy/https://s25.postimg.org/51zmhdo3z/chrome2.gif)
Ну, и конечный результат, так расширение работает у меня. Данные обновляются каждые 7 секунд.
Хотел сначала сделать, чтобы отображались последние десять ордеров покупки и последние десять ордеров продажи.
![](https://img.golos.io/proxy/https://s25.postimg.org/8mvi0lsnj/orders.gif)
Но, меня смутило некоторое несоответствие данных от API и отображаемых в Маркете. Почему-то API выдает в верхней строке продажи Голосов одни данные, а в Маркете совсем другие данные в этой строке. Иногда все совпадает на 100%, а иногда непонятное не соответствие в этой строке. Пол дня убил наблюдая , сравнивая и пытаясь найти причину, но так и не понял, поэтому не вставил эти данные в расширение.
Попробовать работу расширения в Google Chrome можно так: складываем три файла и две картинки в одну пустую папку, дальше в Chrome Меню – Дополнительные инструменты – Расширения – ставим «галочку» Режим разработчика – Загрузить распакованное расширение и указываем папку в которой лежат файлы расширения. Все, в панели появится значок расширения и можно пользоваться. Картинки можно просто сохранить отсюда, имена правильные.
![](https://img.golos.io/proxy/https://s25.postimg.org/dul6isymn/lmarket.png)
![](https://img.golos.io/proxy/https://s25.postimg.org/4y5t14imn/icon.png)
Файл popup.js
var socket = new WebSocket('wss://ws.golos.io');
socket.onopen = function(event) {
socket.send(JSON.stringify({
id: 2,
method: 'get_order_book',
'params': [1]
}));
socket.onmessage = function(event) {
var otvet = JSON.parse(event.data);
var sellVoicePrice = Number(otvet.result.asks[0].real_price);
var buyVoicePrice = Number(otvet.result.bids[0].real_price);
var SVP = sellVoicePrice.toFixed(6);
var BVP = buyVoicePrice.toFixed(6);
var RZN = (((sellVoicePrice-buyVoicePrice)/((sellVoicePrice+buyVoicePrice)/2))*100).toFixed(3);
document.getElementById('hbuyVoicePrice').innerHTML = (BVP+' GBG');
document.getElementById('hsellVoicePrice').innerHTML = (SVP+' GBG');
document.getElementById('hraznica').innerHTML = (RZN+'%');
};
};
Файл manifest.json
{
"manifest_version": 2,
"name": "Golos market",
"version": "1.0",
"icons": {
"128": "icon.png"
},
"content_scripts": [
{
"matches": [ "*://*/*" ],
"js": [ "popup.js" ]
}
],
"background": {
"scripts": []
},
"permissions": [],
"browser_action": {
"default_title": "Golog market",
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
Файл popup.html
Всем удачи и здоровья! Ваш @dimas102