Added first working chat recorder
This commit is contained in:
85
clipper/api.py
Normal file
85
clipper/api.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import enum
|
||||
import logging
|
||||
import socket
|
||||
import time
|
||||
|
||||
from twitchAPI import Twitch, AuthScope
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TW_CHAT_SERVER = 'irc.chat.twitch.tv'
|
||||
TW_CHAT_PORT = 6667
|
||||
|
||||
|
||||
class TwitchStreamStatus(enum.Enum):
|
||||
ONLINE = 0
|
||||
OFFLINE = 1
|
||||
NOT_FOUND = 2
|
||||
UNAUTHORIZED = 3
|
||||
ERROR = 4
|
||||
|
||||
|
||||
class TwitchApi:
|
||||
_cached_token = None
|
||||
|
||||
def __init__(self, client_id, client_secret):
|
||||
self.client_id = client_id
|
||||
self.client_secret = client_secret
|
||||
self.twitch = Twitch(self.client_id, self.client_secret, target_app_auth_scope=[AuthScope.CHAT_READ])
|
||||
self.twitch.authenticate_app([AuthScope.CHAT_READ])
|
||||
|
||||
def get_user_status(self, streamer):
|
||||
try:
|
||||
streams = self.twitch.get_streams(user_login=streamer)
|
||||
if streams is None or len(streams) < 1:
|
||||
return TwitchStreamStatus.OFFLINE
|
||||
else:
|
||||
return TwitchStreamStatus.ONLINE
|
||||
except:
|
||||
return TwitchStreamStatus.ERROR
|
||||
|
||||
def start_chat(self, streamer_name):
|
||||
logger.info("Connecting to %s:%s", TW_CHAT_SERVER, TW_CHAT_PORT)
|
||||
connection = ChatConnection(streamer_name, self.twitch)
|
||||
|
||||
self.twitch.get_app_token()
|
||||
connection.run()
|
||||
|
||||
|
||||
class ChatConnection:
|
||||
connection = None
|
||||
|
||||
def __init__(self, streamer_name, twitch):
|
||||
self.twitch = twitch
|
||||
self.streamer_name = streamer_name
|
||||
|
||||
def run(self):
|
||||
# Need to verify channel name.. case sensative
|
||||
streams = self.twitch.get_streams(user_login=self.streamer_name)
|
||||
if streams is None or len(streams) < 1:
|
||||
return
|
||||
|
||||
channel = streams["data"][0]["user_login"]
|
||||
|
||||
self.connection = socket.socket()
|
||||
self.connection.connect((TW_CHAT_SERVER, TW_CHAT_PORT))
|
||||
self.connection.send(f"PASS sdwrerrwsdawerew\n".encode("utf-8"))
|
||||
self.connection.send(f"NICK justinfan123\n".encode("utf-8"))
|
||||
self.connection.send(f"JOIN #{channel}\n".encode("utf-8"))
|
||||
|
||||
while True:
|
||||
resp = self.connection.recv(4096).decode('utf-8')
|
||||
logger.warning(f"Message: {resp}")
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def disconnect(self, msg="I'll be back!"):
|
||||
logger.info("Disconnected ")
|
||||
|
||||
def on_welcome(self, c, e):
|
||||
logger.info("Joining channel ")
|
||||
c.join("#" + self.streamer_name)
|
||||
logger.info("Joined????? ")
|
||||
|
||||
def on_pubmsg(self, c, e):
|
||||
logger.info("On message %s <-> %s", c, e)
|
||||
Reference in New Issue
Block a user