summaryrefslogtreecommitdiffstats
path: root/py3status/modules/bitcoin-price.py
diff options
context:
space:
mode:
authorAndré Doser <doser.andre@gmail.com>2015-01-28 13:04:20 +0100
committerAndré Doser <doser.andre@gmail.com>2015-01-28 13:04:20 +0100
commit25a3f1a6662c69b525ac8aed8497580284d2e5fc (patch)
tree2eaf9a02bcee6f2f86c512a9f6205462a209e32c /py3status/modules/bitcoin-price.py
parent24469f3a455fb40caf0bed76cb6a8fe75f9c86c4 (diff)
Some refactoring, thanks Ultrabug
Diffstat (limited to 'py3status/modules/bitcoin-price.py')
-rw-r--r--py3status/modules/bitcoin-price.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/py3status/modules/bitcoin-price.py b/py3status/modules/bitcoin-price.py
deleted file mode 100644
index 61e7410..0000000
--- a/py3status/modules/bitcoin-price.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Module for displaying bitcoin prices using
-the API by www.bitcoincharts.com.
-
-Written and contributed by @tasse:
- Andre Doser <doser.andre AT gmail.com>
-"""
-import json
-from time import time
-
-
-class Py3status:
- """
- Configuration parameters:
- - cache_timeout: Should be at least 15 min according to bitcoincharts.
- - color_index : Index of the market responsible for coloration,
- meaning that the output is going to be green if the
- price went up and red if it went down.
- default: -1 means no coloration,
- except when only one market is selected
- - field : Field that is displayed per market,
- see http://bitcoincharts.com/about/markets-api/
- - markets : Comma-separated list of markets. Supported markets can
- be found at http://bitcoincharts.com/markets/list/
- - symbols : Try to match currency abbreviations to symbols,
- e.g. USD -> $, EUR -> € and so on
- """
- cache_timeout = 900
- color_index = -1
- field = 'close'
- markets = 'btceUSD, btcdeEUR'
- symbols = True
-
- def __init__(self):
- """
- Initialize last_price, set the currency mapping
- and the url containing the data.
- """
- self.last_price = 0
- self.currency_map = {'EUR': '€', 'USD': '$', 'GBP': '£',
- 'YEN': '¥', 'CNY': '¥', 'AUD': '$'}
- self.url = 'http://api.bitcoincharts.com/v1/markets.json'
-
- def _get_price(self, data, market, field):
- """
- Given the data (in json format), returns the
- field for a given market.
- """
- for m in data:
- if m['symbol'] == market:
- return m[field]
-
- def get_rate(self, i3s_output_list, i3s_config):
- response = {'full_text': '', 'name': 'bitcoin rates',
- 'cached_until': time() + self.cache_timeout}
- try: # python 3
- from urllib.request import urlopen
- from urllib.error import URLError
- except ImportError: # python 2
- from urllib2 import urlopen
- from urllib2 import URLError
- # get the data from the bitcoincharts website
- try:
- data = json.loads(urlopen(self.url).read().decode())
- except URLError:
- response['color'] = i3s_config['color_bad']
- response['full_text'] = 'Bitcoincharts not reachable'
- return response
- # get the rate for each market given
- rates, markets = [], self.markets.split(",")
- color_rate = None
- for i, market in enumerate(markets):
- market = market.strip()
- try:
- rate = self._get_price(data, market, self.field)
- # coloration
- if i == self.color_index or len(markets) == 1:
- color_rate = rate
- except KeyError:
- continue
- out = market[:-3] if rate else market # market name
- out += ': '
- out += 'N/A' if not rate else '{:.2f}'.format(rate) # rate
- currency_sym = self.currency_map.get(market[-3:], market[-3:])
- out += currency_sym if self.symbols else market
- rates.append(out)
- # only colorize if an index is given or
- # if only one market is selected
- if len(rates) == 1 or self.color_index > -1:
- if self.last_price == 0:
- pass
- elif color_rate < self.last_price:
- response['color'] = i3s_config['color_bad']
- elif color_rate > self.last_price:
- response['color'] = i3s_config['color_good']
- self.last_price = color_rate
- response['full_text'] = ', '.join(rates)
- return response
-
-if __name__ == '__main__':
- """
- Test this module by calling it directly.
- """
- from time import sleep
- x = Py3status()
- while True:
- print(x.get_rate([], {'color_good': 'green',
- 'color_bad': 'red'}))
- sleep(5)