-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetchSplitwise.py
58 lines (52 loc) · 1.7 KB
/
fetchSplitwise.py
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
import sys
import configparser
import requests
import json
from dataclasses import dataclass
jsondata = []
parser = configparser.RawConfigParser()
parser.read("config.ini")
if (len(sys.argv) == 1):
endpoint = parser.get("splitwise", "endpoint")
cookie = parser.get("splitwise", "cookie")
requestHeaders = {'Cookie' : cookie}
response = requests.get(endpoint, headers=requestHeaders)
if (response.status_code != 200):
print("There is a problem with the response!")
print(response.json())
quit()
else:
print("Server response has been successfully received!")
f = open("splitwise_output.json", "a")
jsondata = json.dumps(response.json())
f.write(jsondata)
f.close()
else:
f = open(sys.argv[1], "r")
jsondata = f.read()
f.close()
splitwiseUserId = int(parser.get("splitwise", "userid"))
@dataclass
class Expense:
id : int
cost : float
description : str
date : str
category : str
personalExpenses = []
expenses = json.loads(jsondata)["expenses"]
for expense in expenses:
users = expense["users"]
for user in users:
if user["user_id"] == splitwiseUserId and float(user["owed_share"]) != 0.0:
personalExpenses.append(
Expense(
id = int(expense["id"]),
cost = float(user["owed_share"]),
description = expense["description"],
date = expense["date"],
category = expense["category"]["name"]
))
break
totalPersonalExpense = sum(expense.cost for expense in personalExpenses)
print(totalPersonalExpense)