mirror of
https://github.com/jwinterm/btcTicker.git
synced 2026-10-17 05:21:25 +02:00
Initial commit
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
#Overview
|
||||
|
||||
This script checks the price of USD/BTC from Bitstamp by API every three seconds.
|
||||
The user can input selected amounts of BTC and USD, and a chosen multiplier.
|
||||
The program then multiplies the selected amounts according to:
|
||||
|
||||
Multiplied USD = BTC input * last USD/BTC * chosen multiplier
|
||||
Multiplied BTC = USD input / (last USD/BTC * chosen multiplier)
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
#:kivy 1.8.0
|
||||
|
||||
<RootWidget>:
|
||||
btc_multiplier_input: btc_multiplier_input
|
||||
btc_amount_input: btc_amount_input
|
||||
multiplied_usd_amount_input: multiplied_usd_amount_input
|
||||
usd_amount_input: usd_amount_input
|
||||
multiplied_btc_amount_input: multiplied_btc_amount_input
|
||||
last_updated_text: last_updated_text
|
||||
id: root_widget
|
||||
orientation: "vertical"
|
||||
|
||||
BigLabel:
|
||||
text: "[b]BTC/USD Converter[/b]"
|
||||
halign: "center"
|
||||
color: 1, 1, 1, 1
|
||||
size_hint_x: 1
|
||||
font_size: 60
|
||||
|
||||
BoxLayout:
|
||||
padding: 100, 0, 150, 0
|
||||
orientation: "horizontal"
|
||||
BigLabel:
|
||||
text: "BTC multiplier"
|
||||
BigTextInput:
|
||||
id: btc_multiplier_input
|
||||
text: "0.95"
|
||||
Label:
|
||||
size_hint_y: 0.1
|
||||
|
||||
BoxLayout:
|
||||
padding: 100, 0, 150, 0
|
||||
orientation: "horizontal"
|
||||
BigLabel:
|
||||
text: "BTC amount"
|
||||
BigTextInput:
|
||||
id: btc_amount_input
|
||||
text: "1.0"
|
||||
|
||||
BoxLayout:
|
||||
padding: 100, 0, 150, 0
|
||||
orientation: "horizontal"
|
||||
BigLabel:
|
||||
text: "Multiplied USD amount"
|
||||
BigTextInput:
|
||||
id: multiplied_usd_amount_input
|
||||
text: "0.0"
|
||||
background_color: 1, 0.3, 0.3, 1
|
||||
|
||||
Label:
|
||||
size_hint_y: 0.1
|
||||
|
||||
BoxLayout:
|
||||
padding: 100, 0, 150, 0
|
||||
orientation: "horizontal"
|
||||
BigLabel:
|
||||
text: "USD amount"
|
||||
BigTextInput:
|
||||
id: usd_amount_input
|
||||
text: "100.0"
|
||||
|
||||
BoxLayout:
|
||||
padding: 100, 0, 150, 0
|
||||
orientation: "horizontal"
|
||||
BigLabel:
|
||||
text: "Multiplied BTC amount"
|
||||
BigTextInput:
|
||||
id: multiplied_btc_amount_input
|
||||
text: "0.0"
|
||||
background_color: 1, 0.3, 0.3, 1
|
||||
|
||||
BigLabel:
|
||||
id: last_updated_text
|
||||
text: "Last updated from Bitstamp @ \nLast price (USD/BTC) was "
|
||||
halign: "center"
|
||||
size_hint_x: 1
|
||||
color: 1, 1, 1, 1
|
||||
|
||||
BigLabel:
|
||||
text: "[color=#ff0000]*Fields highlighted in red are the ones being affected by multiplier[/color]"
|
||||
halign: "center"
|
||||
size_hint_x: 1
|
||||
font_size: 12
|
||||
padding: 0, 0
|
||||
size_hint_y: 0.1
|
||||
|
||||
<BigLabel>
|
||||
font_size: 24
|
||||
#padding: 20, 20
|
||||
valign: "middle"
|
||||
halign: "right"
|
||||
color: 0, 1, 1, 1
|
||||
#size_hint_y: 0.2
|
||||
size_hint_x: 0.4
|
||||
markup: True
|
||||
|
||||
|
||||
<BigTextInput>
|
||||
font_size: 24
|
||||
padding: 30, 26
|
||||
valign: "middle"
|
||||
halign: "center"
|
||||
#color: 0, 1, 1, 1
|
||||
#size_hint_y: 0.2
|
||||
multiline: False
|
||||
size_hint_x: 0.2
|
||||
markup: True
|
||||
@@ -0,0 +1,69 @@
|
||||
# !/usr/bin/python
|
||||
from kivy.app import App
|
||||
from kivy.config import Config
|
||||
from kivy.uix.boxlayout import BoxLayout
|
||||
from kivy.uix.label import Label
|
||||
from kivy.properties import ObjectProperty
|
||||
from kivy.uix.textinput import TextInput
|
||||
from kivy.clock import Clock
|
||||
|
||||
import datetime
|
||||
import time
|
||||
|
||||
from getStampTicker import GetTicker
|
||||
|
||||
class BigLabel(Label):
|
||||
""" Big label class """
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(BigLabel, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class BigTextInput(TextInput):
|
||||
""" Big label class """
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(BigTextInput, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class RootWidget(BoxLayout):
|
||||
"""Root Kivy accordion widget class"""
|
||||
btc_multiplier_input = ObjectProperty()
|
||||
btc_amount_input = ObjectProperty()
|
||||
multiplied_btc_amount_input = ObjectProperty()
|
||||
usd_amount_input = ObjectProperty()
|
||||
multiplied_usd_amount_input = ObjectProperty()
|
||||
last_updated_text = ObjectProperty()
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(RootWidget, self).__init__(**kwargs)
|
||||
self.last_BTCUSD_price = 0.0
|
||||
self.last_time_checked = 0
|
||||
Clock.schedule_once(self.checkTicker, 0.1)
|
||||
Clock.schedule_interval(self.checkTicker, 3)
|
||||
|
||||
def checkTicker(self, dt):
|
||||
self.last_BTCUSD_price, self.last_time_checked = GetTicker()
|
||||
print(self.last_BTCUSD_price, self.last_time_checked)
|
||||
try:
|
||||
temp_time = time.strftime('%H:%M:%S', time.localtime(self.last_time_checked))
|
||||
self.last_updated_text.text = "Last updated from Bitstamp @ [color=00ff00]{0}[/color]\nLast price (USD/BTC) was [color=ffff00]{1:0.2f}[/color] $/BTC".format(temp_time, self.last_BTCUSD_price)
|
||||
self.multiplied_usd_amount_input.text = "{0:.2f}".format(float(self.btc_amount_input.text)*float(self.last_BTCUSD_price)*float(self.btc_multiplier_input.text))
|
||||
self.multiplied_btc_amount_input.text = "{0:.3f}".format(float(self.usd_amount_input.text)/(float(self.last_BTCUSD_price)*float(self.btc_multiplier_input.text)))
|
||||
except:
|
||||
print("updated FAILED")
|
||||
|
||||
|
||||
|
||||
|
||||
class btcTickerApp(App):
|
||||
def build(self):
|
||||
root = RootWidget()
|
||||
return root
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Config.set('kivy', 'exit_on_escape', 0)
|
||||
Config.set('kivy', 'window_icon', "./favicon.ico")
|
||||
Config.set('input', 'mouse', 'mouse,disable_multitouch')
|
||||
btcTickerApp().run()
|
||||
|
||||
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,29 @@
|
||||
import requests
|
||||
import json
|
||||
|
||||
# Set URL for bitstamp ticker info
|
||||
URL = 'https://www.bitstamp.net/api/ticker/'
|
||||
# Headers, because headers
|
||||
headers = {'content-type': 'application/json'}
|
||||
|
||||
|
||||
def GetTicker(serverURL=URL):
|
||||
"""Try and get last block info and return formatted text"""
|
||||
# print('Attempting {0} RPC call'.format(CheckLastBlock.__name__))
|
||||
try:
|
||||
resp = requests.get(serverURL, headers=headers)
|
||||
output = json.loads(resp.text)
|
||||
print(output)
|
||||
last_price = float(output[u'last'])
|
||||
time_stamp = int(output[u'timestamp'])
|
||||
return last_price, time_stamp
|
||||
|
||||
|
||||
except:
|
||||
#Return out of sync if bitmonerod is not ready
|
||||
message = "error"
|
||||
return message, message
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
GetTicker()
|
||||
Reference in New Issue
Block a user