Use emoji.emojize instead of write emoji in code
This commit is contained in:
@@ -6,6 +6,7 @@ import time
|
|||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
import copy
|
import copy
|
||||||
|
import emoji
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -91,7 +92,7 @@ class TwitchChannelPointsMiner:
|
|||||||
if self.running:
|
if self.running:
|
||||||
logger.error("You can't start multiple session of this istance!")
|
logger.error("You can't start multiple session of this istance!")
|
||||||
else:
|
else:
|
||||||
logger.info(f"Start session: {self.session_id}")
|
logger.info(emoji.emojize(f":bomb: Start session: {self.session_id}", use_aliases=True))
|
||||||
self.running = True
|
self.running = True
|
||||||
self.start_datetime = datetime.now()
|
self.start_datetime = datetime.now()
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ class TwitchChannelPointsMiner:
|
|||||||
streamer = Streamer(streamer_username, channel_id)
|
streamer = Streamer(streamer_username, channel_id)
|
||||||
self.streamers.append(streamer)
|
self.streamers.append(streamer)
|
||||||
except StreamerDoesNotExistException:
|
except StreamerDoesNotExistException:
|
||||||
logger.info(f"😞 Streamer {streamer_username} does not exist")
|
logger.info(emoji.emojize(f":cry: Streamer {streamer_username} does not exist", use_aliases=True))
|
||||||
|
|
||||||
for streamer in self.streamers:
|
for streamer in self.streamers:
|
||||||
self.twitch.load_channel_points_context(streamer)
|
self.twitch.load_channel_points_context(streamer)
|
||||||
@@ -180,17 +181,17 @@ class TwitchChannelPointsMiner:
|
|||||||
def __print_report(self):
|
def __print_report(self):
|
||||||
print("\n")
|
print("\n")
|
||||||
logger.info(
|
logger.info(
|
||||||
f"🔌 End session '{self.session_id}' at: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}"
|
emoji.emojize(f":electric_plug: End session '{self.session_id}' at: {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}", use_aliases=True)
|
||||||
)
|
)
|
||||||
logger.info(f"⌛ Duration {datetime.now() - self.start_datetime}")
|
logger.info(emoji.emojize(f":hourglass: Duration {datetime.now() - self.start_datetime}", use_aliases=True))
|
||||||
|
|
||||||
if self.make_predictions:
|
if self.make_predictions:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"📊 Bet settings: Strategy={self.bet_strategy}, Percentage={self.bet_percentage}, Percentage Gap={self.bet_percentage_gap}, Max points={self.bet_max_points}"
|
emoji.emojize(f":bar_chart: Bet settings: Strategy={self.bet_strategy}, Percentage={self.bet_percentage}, Percentage Gap={self.bet_percentage_gap}, Max points={self.bet_max_points}", use_aliases=True)
|
||||||
)
|
)
|
||||||
print('')
|
print('')
|
||||||
|
|
||||||
for streamer_index in range(0, len(self.streamers)):
|
for streamer_index in range(0, len(self.streamers)):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"📽️ {self.streamers[streamer_index]} - Gained: {self.streamers[streamer_index].channel_points - self.original_streamers[streamer_index].channel_points}, Bonus claimed: {self.streamers[streamer_index].bonus_claimed}"
|
emoji.emojize(f":movie_camera: {self.streamers[streamer_index]} - Gained: {self.streamers[streamer_index].channel_points - self.original_streamers[streamer_index].channel_points}, Bonus claimed: {self.streamers[streamer_index].bonus_claimed}", use_aliases=True)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
import emoji
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -29,9 +30,9 @@ class Streamer:
|
|||||||
def set_offline(self):
|
def set_offline(self):
|
||||||
self.offline_at = time.time()
|
self.offline_at = time.time()
|
||||||
self.is_online = False
|
self.is_online = False
|
||||||
logger.info(f"😴 {self} is Offline!")
|
logger.info(emoji.emojize(f":sleeping: {self} is Offline!", use_aliases=True))
|
||||||
|
|
||||||
def set_online(self):
|
def set_online(self):
|
||||||
self.online_at = time.time()
|
self.online_at = time.time()
|
||||||
self.is_online = True
|
self.is_online = True
|
||||||
logger.info(f"🥳 {self} is Online!")
|
logger.info(emoji.emojize(f":partying_face: {self} is Online!", use_aliases=True))
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import re
|
|||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
import emoji
|
||||||
|
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -114,7 +115,7 @@ class Twitch:
|
|||||||
streamer.set_online()
|
streamer.set_online()
|
||||||
|
|
||||||
def claim_channel_points_bonus(self, streamer, claim_id):
|
def claim_channel_points_bonus(self, streamer, claim_id):
|
||||||
logger.info(f"🎁 Claiming the bonus for {streamer}!")
|
logger.info(emoji.emojize(f":gift: Claiming the bonus for {streamer}!", use_aliases=True))
|
||||||
json_data = {
|
json_data = {
|
||||||
"operationName": "ClaimCommunityPoints",
|
"operationName": "ClaimCommunityPoints",
|
||||||
"variables": {
|
"variables": {
|
||||||
@@ -235,5 +236,5 @@ class Twitch:
|
|||||||
)
|
)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f"⚔️ Joining raid from {streamer.username} to {raid.target_login}!"
|
emoji.emojize(f":crossed_swords: Joining raid from {streamer.username} to {raid.target_login}!", use_aliases=True)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import time
|
|||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
import os
|
import os
|
||||||
|
import emoji
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -74,7 +75,7 @@ class TwitchBrowser:
|
|||||||
self.__init_twitch()
|
self.__init_twitch()
|
||||||
|
|
||||||
def __init_twitch(self):
|
def __init_twitch(self):
|
||||||
logger.info("⚙️ Init Twitch page - Cookie - LocalStorage items")
|
logger.info(emoji.emojize(":wrench: Init Twitch page - Cookie - LocalStorage items", use_aliases=True))
|
||||||
cookie = {
|
cookie = {
|
||||||
"domain": ".twitch.tv",
|
"domain": ".twitch.tv",
|
||||||
"hostOnly": False,
|
"hostOnly": False,
|
||||||
@@ -112,7 +113,7 @@ class TwitchBrowser:
|
|||||||
|
|
||||||
# Private method __ - We can instantiate webdriver only with init_browser
|
# Private method __ - We can instantiate webdriver only with init_browser
|
||||||
def __init_chrome(self, show):
|
def __init_chrome(self, show):
|
||||||
logger.info("⚙️ Init Chrome browser")
|
logger.info(emoji.emojize(":wrench: Init Chrome browser", use_aliases=True))
|
||||||
options = webdriver.ChromeOptions()
|
options = webdriver.ChromeOptions()
|
||||||
options.add_argument("--mute-audio")
|
options.add_argument("--mute-audio")
|
||||||
if not show:
|
if not show:
|
||||||
@@ -129,7 +130,7 @@ class TwitchBrowser:
|
|||||||
|
|
||||||
# Private method __ - We can instantiate webdriver only with init_browser
|
# Private method __ - We can instantiate webdriver only with init_browser
|
||||||
def __init_firefox(self, show):
|
def __init_firefox(self, show):
|
||||||
logger.info("⚙️ Init Firefox browser")
|
logger.info(emoji.emojize(":wrench: Init Firefox browser", use_aliases=True))
|
||||||
options = webdriver.FirefoxOptions()
|
options = webdriver.FirefoxOptions()
|
||||||
if not show:
|
if not show:
|
||||||
options.headless = True
|
options.headless = True
|
||||||
@@ -212,7 +213,7 @@ class TwitchBrowser:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"⚙️ Start betting at {event.streamer.chat_url} for event: {event}"
|
emoji.emojize(f":wrench: Start betting at {event.streamer.chat_url} for event: {event}", use_aliases=True)
|
||||||
)
|
)
|
||||||
self.browser.get(event.streamer.chat_url)
|
self.browser.get(event.streamer.chat_url)
|
||||||
time.sleep(random.uniform(4, 6))
|
time.sleep(random.uniform(4, 6))
|
||||||
@@ -223,7 +224,7 @@ class TwitchBrowser:
|
|||||||
|
|
||||||
def complete_bet(self, event: EventPrediction):
|
def complete_bet(self, event: EventPrediction):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"⚙️ Going to complete bet for event {event}. Current url page: {self.browser.current_url}"
|
emoji.emojize(f":wrench: Going to complete bet for event {event}. Current url page: {self.browser.current_url}", use_aliases=True)
|
||||||
)
|
)
|
||||||
if event.box_fillable and self.currently_is_betting:
|
if event.box_fillable and self.currently_is_betting:
|
||||||
decision = event.bet.calculate(
|
decision = event.bet.calculate(
|
||||||
@@ -238,7 +239,7 @@ class TwitchBrowser:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"⚙️ Going to write: {decision['amount']} on input {decision['choice']}"
|
emoji.emojize(f":wrench: Going to write: {decision['amount']} on input {decision['choice']}", use_aliases=True)
|
||||||
)
|
)
|
||||||
self.__send_text(
|
self.__send_text(
|
||||||
streamBetVoteInput + selector_index,
|
streamBetVoteInput + selector_index,
|
||||||
@@ -277,21 +278,21 @@ class TwitchBrowser:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __open_coins_menu(self, event: EventPrediction):
|
def __open_coins_menu(self, event: EventPrediction):
|
||||||
logger.info(f"⚙️ Open coins menu for event: {event}")
|
logger.info(emoji.emojize(f":wrench: Open coins menu for event: {event}", use_aliases=True))
|
||||||
self.__click_when_exist(streamCoinsMenu, By.XPATH)
|
self.__click_when_exist(streamCoinsMenu, By.XPATH)
|
||||||
time.sleep(random.uniform(0.05, 0.1))
|
time.sleep(random.uniform(0.05, 0.1))
|
||||||
if self.do_screenshot:
|
if self.do_screenshot:
|
||||||
self.screenshot(f"{event.event_id}___open_coins_menu.png".format)
|
self.screenshot(f"{event.event_id}___open_coins_menu.png".format)
|
||||||
|
|
||||||
def __click_on_bet(self, event):
|
def __click_on_bet(self, event):
|
||||||
logger.info(f"⚙️ Click on the bet for event: {event}")
|
logger.info(emoji.emojize(f":wrench: Click on the bet for event: {event}", use_aliases=True))
|
||||||
self.__click_when_exist(streamBetTitleInBet, By.CSS_SELECTOR)
|
self.__click_when_exist(streamBetTitleInBet, By.CSS_SELECTOR)
|
||||||
time.sleep(random.uniform(0.05, 0.1))
|
time.sleep(random.uniform(0.05, 0.1))
|
||||||
if self.do_screenshot:
|
if self.do_screenshot:
|
||||||
self.screenshot(f"{event.event_id}___click_on_bet.png".format)
|
self.screenshot(f"{event.event_id}___click_on_bet.png".format)
|
||||||
|
|
||||||
def __enable_custom_bet_value(self, event):
|
def __enable_custom_bet_value(self, event):
|
||||||
logger.info(f"⚙️ Enable input of custom value for event: {event}")
|
logger.info(emoji.emojize(f":wrench: Enable input of custom value for event: {event}", use_aliases=True))
|
||||||
if self.__click_when_exist(streamBetCustomVote, By.CSS_SELECTOR) is not None:
|
if self.__click_when_exist(streamBetCustomVote, By.CSS_SELECTOR) is not None:
|
||||||
time.sleep(random.uniform(0.05, 0.1))
|
time.sleep(random.uniform(0.05, 0.1))
|
||||||
if self.do_screenshot:
|
if self.do_screenshot:
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import logging
|
|||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
import emoji
|
||||||
|
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
|
|
||||||
@@ -81,14 +82,15 @@ class WebSocketsPool:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def handle_websocket_reconnection(ws):
|
def handle_websocket_reconnection(ws):
|
||||||
ws.is_closed = True
|
if ws.keep_running:
|
||||||
logger.info("Reconnecting to Twitch PubSub server in 30 seconds")
|
ws.is_closed = True
|
||||||
time.sleep(30)
|
logger.info("Reconnecting to Twitch PubSub server in 30 seconds")
|
||||||
self = ws.parent_pool
|
time.sleep(30)
|
||||||
if self.ws == ws:
|
self = ws.parent_pool
|
||||||
self.ws = None
|
if self.ws == ws:
|
||||||
for topic in ws.topics:
|
self.ws = None
|
||||||
self.submit(topic)
|
for topic in ws.topics:
|
||||||
|
self.submit(topic)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def on_message(ws, message):
|
def on_message(ws, message):
|
||||||
@@ -127,7 +129,7 @@ class WebSocketsPool:
|
|||||||
"balance"
|
"balance"
|
||||||
]["balance"]
|
]["balance"]
|
||||||
logger.info(
|
logger.info(
|
||||||
f"🚀 +{earned} → {ws.streamers[streamer_index]} - Reason: {message_data['point_gain']['reason_code']}."
|
emoji.emojize(f":rocket: +{earned} → {ws.streamers[streamer_index]} - Reason: {message_data['point_gain']['reason_code']}.", use_aliases=True)
|
||||||
)
|
)
|
||||||
elif message_type == "claim-available":
|
elif message_type == "claim-available":
|
||||||
streamer_index = get_streamer_index(
|
streamer_index = get_streamer_index(
|
||||||
@@ -194,7 +196,7 @@ class WebSocketsPool:
|
|||||||
# complete_bet_thread.start()
|
# complete_bet_thread.start()
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f"⏰ A thread should start and place the bet after: {event.closing_bet_after(current_timestamp)}s for the event: {ws.events_predictions[event_id]}"
|
emoji.emojize(f":alarm_clock: A thread should start and place the bet after: {event.closing_bet_after(current_timestamp)}s for the event: {ws.events_predictions[event_id]}", use_aliases=True)
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -211,7 +213,7 @@ class WebSocketsPool:
|
|||||||
event_id = message_data["event"]["id"]
|
event_id = message_data["event"]["id"]
|
||||||
if event_id in ws.events_predictions:
|
if event_id in ws.events_predictions:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"📊 {ws.events_predictions[event_id]} - Result: {message_data['event']['result']['type']}, Points won: {message_data['event']['result']['type'] if message_data['event']['result']['type'] else 0}"
|
emoji.emojize(f":bar_chart: {ws.events_predictions[event_id]} - Result: {message_data['event']['result']['type']}, Points won: {message_data['event']['result']['type'] if message_data['event']['result']['type'] else 0}", use_aliases=True)
|
||||||
)
|
)
|
||||||
|
|
||||||
elif response["type"] == "RESPONSE" and len(response.get("error", "")) > 0:
|
elif response["type"] == "RESPONSE" and len(response.get("error", "")) > 0:
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ websocket-client
|
|||||||
browser_cookie3
|
browser_cookie3
|
||||||
pillow
|
pillow
|
||||||
selenium
|
selenium
|
||||||
python-dateutil
|
python-dateutil
|
||||||
|
emoji
|
||||||
Reference in New Issue
Block a user