aboutsummaryrefslogtreecommitdiff
path: root/cusmodules/cuswidgets/ticker_gecko.py
blob: 1b7d1eeb2f1a03e01b603c876868c370d1d82cc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env python
import os
import sys
import json
import time
import requests
import subprocess
from datetime import datetime
from threading import Thread

def match(currency):
    currencies = {
        "BTC": "bitcoin",
        "ETH": "ethereum",
        "XRP": "xrp",
        "LTC": "litecoin",
        "BCH": "bitcoin-cash",
        "XMR": "monero",
        "DOGE": "dogecoin"
    }

    return currencies[currency]

def Gecko(currs):
    #prices = '' 
    prices = {}

    for i in currs:
        curr = match(i)

        source = requests.get(f'https://api.coingecko.com/api/v3/coins/{curr}/').text

        data = json.loads(source)

        price = str(data['market_data']['current_price']['usd'])

        try:
            if len(price[:price.index('.')]) > 3:
                price = price[:2] + ',' + price[2:]

        except:
            price = price[:2] + ',' + price[2:]

        price = '$' + price

        price = {i: price}

        prices.update(price)

        with open('/tmp/crprices.json', 'w') as f:
            f.write(str(prices).replace("'", '"'))

def main():
    global crpos
    home = os.path.expanduser('~')
    currs = []
    priced = ''

    try:
        crpos += 1

    except:
        crpos = 0

    try:
        with open('/tmp/crprices.json', 'r') as f:
            prices_str = f.read()
            prices = json.loads(prices_str)

        for i in prices:
            currs += i

        for i in prices:
            if currs[len(currs) - 1] == i:
                price = f'{i}: {prices[i]} |'

            else:
                price = f'{i}: {prices[i]} | '
        
            priced += price

        leng = len(priced)

        #print(crpos >= leng)
        if crpos >= leng:
            crpos = 0

        crprices = f"{priced[crpos:]} {priced[:crpos]}"
        
        #print(priced)
        #print(crpos)
        #print(leng)
        #print(crprices)
        #print(crprices[:15], '\n')
        return crprices[:15]

    except Exception as e:
        with open(f'{home}/.local/share/ticker_gecko/ticker_gecko.log', 'w') as f:
            f.write(e)

        return f'ERROR! Check "{home}/.local/share/ticker_gecko/ticker_gecko.log".'

if __name__ == '__main__':
    if sys.argv[1] == '--help' or sys.argv[1] == '-help' or sys.argv[1] == '--h' or sys.argv[1] == '-h':
        print('Usage:\n\tStart server by running command: "/path/to/ticker_gecko.py".\n\tPut abbreviations of crypto in arguments: "/path/to/ticker_gecko.py BTC LTC" (will get price for bitcoin and litecoin)\n\tAdd main function to GenPollText widget in config.py: "\n\t\timport ticker_gecko\n\t\twidget.GenPollText(\n\t\t\tfunc=ticker_gecko.main,\n\t\t\tupdate_interval= 0.5),"')
        sys.exit(0)

    currs = []
    argc = len(sys.argv)
    for i in range(argc):
        if i == 0:
            pass

        else:
            currs.append(sys.argv[i])

    while True:
        Gecko(currs)

        with open('/tmp/crprices.json', 'r') as f:
            leng = len(f.read())
        
        repeat_time = leng - ((len(currs) - 1) * 5)

        time.sleep(repeat_time)