Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import socket
- import re
- import io as cStringIO
- import urllib
- import tempfile
- import os
- import obspython as obs
- try:
- s = socket.socket()
- s.connect((HOST, PORT))
- s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
- s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
- s.send("JOIN {}\r\n".format(CHAN).encode("utf-8"))
- connected = True
- except Exception as e:
- obs.script_log(obs.LOG_WARNING, "Error listening to IRC stream: " + str(e))
- connected = False
- enabled = False
- CHAT_MSG=re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
- #done defining shieet
- def script_description():
- return "lidl description"
- def script_properties():
- props = obs.obs_properties_create()
- obs.script_log(obs.LOG_DEBUG, "here")
- obs.obs_properties_add_text(props, "emote1", "First emote", obs.OBS_TEXT_DEFAULT)
- obs.obs_properties_add_text(props, "emote2", "Second emote", obs.OBS_TEXT_DEFAULT)
- p1 = obs.obs_properties_add_list(props, "count1", "Emote 1 counter", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
- p2 = obs.obs_properties_add_list(props, "count2", "Emote 2 counter", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
- l1 = obs.obs_properties_add_list(props, "image1", "Emote 1 photo", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
- l2 = obs.obs_properties_add_list(props, "image2", "Emote 2 photo", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
- sources = obs.obs_enum_sources()
- if sources is not None:
- for source in sources:
- source_id = obs.obs_source_get_id(source)
- if source_id == "text_gdiplus" or source_id == "text_ft2_source":
- name = obs.obs_source_get_name(source)
- obs.obs_property_list_add_string(p1, name, name)
- obs.obs_property_list_add_string(p2, name, name)
- elif source_id == "image_source":
- name = obs.obs_source_get_name(source)
- obs.obs_property_list_add_string(l1, name, name)
- obs.obs_property_list_add_string(l2, name, name)
- obs.source_list_release(sources)
- obs.obs_properties_add_button(props, "button", "(De)Activate", activate_meter)
- return props
- def activate_meter(props, prop):
- global enabled
- global emote1
- global emote2
- global count1
- global count2
- global image1
- global image2
- enabled = not enabled
- sceneSource = obs.obs_frontend_get_current_scene()
- scene = obs.obs_scene_from_source(sceneSource)
- img1 = obs.obs_scene_find_source(scene, image1)
- img2 = obs.obs_scene_find_source(scene, image2)
- counter1 = obs.obs_scene_find_source(scene, count1)
- counter2 = obs.obs_scene_find_source(scene, count2)
- if emote1 not in emotes or emote2 not in emotes:
- obs.script_log(obs.LOG_ERROR, "One of the emotes is not available")
- downloadimages(emote1, emote2)
- obs.obs_sceneitem_set_visible(img1, enabled)
- obs.obs_sceneitem_set_visible(img2, enabled)
- obs.obs_sceneitem_set_visible(counter1, enabled)
- obs.obs_sceneitem_set_visible(counter2, enabled)
- senders = []
- emote1s = 0
- emote2s = 0
- total1 = open('total1.txt', 'w')
- total2 = open('total2.txt', 'w')
- # while enabled
- if (enabled and connected):
- response = s.recv(1024).decode("utf-8")
- if response:
- if response == "PING :tmi.twitch.tv\r\n":
- s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
- else:
- username = re.search(r"\w+", response).group(0) # return the entire match
- senders.append(username)
- message = CHAT_MSG.sub("", response)
- obs.script_log(obs.LOG_DEBUG, message)
- if emote1 in message:
- emote1s += 1
- elif emote2 in message:
- emote2s += 1
- total1.write(str(emote1s))
- total2.write(str(emote2s))
- def script_update(settings):
- global emote1
- global emote2
- global count1
- global count2
- global image1
- global image2
- emote1 = obs.obs_data_get_string(settings, "emote1")
- emote2 = obs.obs_data_get_string(settings, "emote2")
- count1 = obs.obs_data_get_string(settings, "count1")
- count2 = obs.obs_data_get_string(settings, "count2")
- image1 = obs.obs_data_get_string(settings, "image1")
- image2 = obs.obs_data_get_string(settings, "image2")
- def downloadimages(emote1, emote2):
- response1 = urllib.request.urlopen(emotes[emote1])
- response2 = urllib.request.urlopen(emotes[emote2])
- item1 = cStringIO.BytesIO(response1.read())
- item2 = cStringIO.BytesIO(response2.read())
- emote1img = open('emote1.png','wb')
- emote1img.write(item1.getvalue())
- emote2img = open('emote2.png','wb')
- emote2img.write(item2.getvalue())
- emote1img.close()
- emote2img.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement