Save in a .json file the balance history
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -145,4 +145,5 @@ chromedriver*
|
|||||||
cookies/*
|
cookies/*
|
||||||
logs/*
|
logs/*
|
||||||
screenshots/*
|
screenshots/*
|
||||||
htmls/*
|
htmls/*
|
||||||
|
analytics/*
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import copy
|
import copy
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import random
|
import random
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
@@ -10,6 +11,7 @@ import time
|
|||||||
import uuid
|
import uuid
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from TwitchChannelPointsMiner.classes.entities.PubsubTopic import PubsubTopic
|
from TwitchChannelPointsMiner.classes.entities.PubsubTopic import PubsubTopic
|
||||||
from TwitchChannelPointsMiner.classes.entities.Streamer import (
|
from TwitchChannelPointsMiner.classes.entities.Streamer import (
|
||||||
@@ -52,6 +54,9 @@ class TwitchChannelPointsMiner:
|
|||||||
# Default values for all streamers
|
# Default values for all streamers
|
||||||
streamer_settings: StreamerSettings = StreamerSettings(),
|
streamer_settings: StreamerSettings = StreamerSettings(),
|
||||||
):
|
):
|
||||||
|
Settings.analytics_path = os.path.join(Path().absolute(), "analytics")
|
||||||
|
Path(Settings.analytics_path).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
self.username = username
|
self.username = username
|
||||||
|
|
||||||
# Set as globally config
|
# Set as globally config
|
||||||
|
|||||||
@@ -128,11 +128,14 @@ class WebSocketsPool:
|
|||||||
if streamer_index != -1:
|
if streamer_index != -1:
|
||||||
try:
|
try:
|
||||||
if message.topic == "community-points-user-v1":
|
if message.topic == "community-points-user-v1":
|
||||||
|
if message.type in ["points-earned", "points-spent"]:
|
||||||
|
balance = message.data["balance"]["balance"]
|
||||||
|
ws.streamers[streamer_index].channel_points = balance
|
||||||
|
ws.streamers[streamer_index].persistent_history()
|
||||||
|
|
||||||
if message.type == "points-earned":
|
if message.type == "points-earned":
|
||||||
earned = message.data["point_gain"]["total_points"]
|
earned = message.data["point_gain"]["total_points"]
|
||||||
reason_code = message.data["point_gain"]["reason_code"]
|
reason_code = message.data["point_gain"]["reason_code"]
|
||||||
balance = message.data["balance"]["balance"]
|
|
||||||
ws.streamers[streamer_index].channel_points = balance
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f"+{earned} → {ws.streamers[streamer_index]} - Reason: {reason_code}.",
|
f"+{earned} → {ws.streamers[streamer_index]} - Reason: {reason_code}.",
|
||||||
extra={"emoji": ":rocket:"},
|
extra={"emoji": ":rocket:"},
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
|
from threading import Lock
|
||||||
|
|
||||||
from TwitchChannelPointsMiner.classes.entities.Bet import BetSettings
|
from TwitchChannelPointsMiner.classes.entities.Bet import BetSettings
|
||||||
from TwitchChannelPointsMiner.classes.entities.Stream import Stream
|
from TwitchChannelPointsMiner.classes.entities.Stream import Stream
|
||||||
@@ -57,6 +60,8 @@ class Streamer(object):
|
|||||||
self.streamer_url = f"{URL}/{self.username}"
|
self.streamer_url = f"{URL}/{self.username}"
|
||||||
self.chat_url = f"{URL}/popout/{self.username}/chat?popout="
|
self.chat_url = f"{URL}/popout/{self.username}/chat?popout="
|
||||||
|
|
||||||
|
self.mutex = Lock()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"Streamer(username={self.username}, channel_id={self.channel_id}, channel_points={_millify(self.channel_points)})"
|
return f"Streamer(username={self.username}, channel_id={self.channel_id}, channel_points={_millify(self.channel_points)})"
|
||||||
|
|
||||||
@@ -101,3 +106,11 @@ class Streamer(object):
|
|||||||
|
|
||||||
def stream_up_elapsed(self):
|
def stream_up_elapsed(self):
|
||||||
return self.stream_up == 0 or ((time.time() - self.stream_up) > 120)
|
return self.stream_up == 0 or ((time.time() - self.stream_up) > 120)
|
||||||
|
|
||||||
|
def persistent_history(self):
|
||||||
|
fname = os.path.join(Settings.analytics_path, f"{self.username}.json")
|
||||||
|
with self.mutex:
|
||||||
|
data = json.load(open(fname)) if os.path.isfile(fname) else []
|
||||||
|
data.append([time.time, self.channel_points])
|
||||||
|
with open(fname, "w") as outfile:
|
||||||
|
json.dump(data, outfile, indent=4)
|
||||||
|
|||||||
Reference in New Issue
Block a user