Last active
December 30, 2024 14:56
-
-
Save give-you-favo/cc51098ecf40e595e217fdbc5051d347 to your computer and use it in GitHub Desktop.
もらったアイテムを表示するスクリプト。ほぼurl-text.py流用。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import obspython as obs | |
import requests | |
from bs4 import BeautifulSoup | |
user_id = "" | |
interval = 30 | |
source_name = "" | |
# ------------------------------------------------------------ | |
def update_text(): | |
global user_id | |
global interval | |
global source_name | |
source = obs.obs_get_source_by_name(source_name) | |
url = f"https://twitcasting.tv/{user_id}/gifts" | |
headers = {'Accept-Language': 'ja,en-US;q=0.7,en;q=0.3'} | |
if source is not None: | |
try: | |
response = requests.get(url, headers=headers) | |
response.raise_for_status() | |
html = response.text.encode(response.encoding) | |
soup = BeautifulSoup(html,features="lxml") | |
text = "" | |
for item_row in soup.find_all("div", class_ = "tw-supporter-row"): | |
user_name = item_row.find("a", class_="tw-supporter-user-name").text.strip() | |
item_name = item_row.find("a", class_="tw-tooltip-top-right").attrs['aria-label'].strip() | |
text = text + f"{user_name} : {item_name}\n\n" | |
settings = obs.obs_data_create() | |
obs.obs_data_set_string(settings, "text", text) | |
obs.obs_source_update(source, settings) | |
obs.obs_data_release(settings) | |
except requests.exceptions.RequestException as err: | |
obs.script_log(obs.LOG_WARNING, "Error opening URL '" + url + "': " + err.reason) | |
obs.remove_current_callback() | |
obs.obs_source_release(source) | |
def refresh_pressed(props, prop): | |
update_text() | |
# ------------------------------------------------------------ | |
def script_description(): | |
return "取得したアイテムを表示します" | |
def script_update(settings): | |
global user_id | |
global interval | |
global source_name | |
user_id = obs.obs_data_get_string(settings, "user_id") | |
interval = obs.obs_data_get_int(settings, "interval") | |
source_name = obs.obs_data_get_string(settings, "source") | |
obs.timer_remove(update_text) | |
if user_id != "" and source_name != "": | |
obs.timer_add(update_text, interval * 1000) | |
def script_defaults(settings): | |
obs.obs_data_set_default_int(settings, "interval", 30) | |
def script_properties(): | |
props = obs.obs_properties_create() | |
obs.obs_properties_add_text(props, "user_id", "User ID", obs.OBS_TEXT_DEFAULT) | |
obs.obs_properties_add_int(props, "interval", "Update Interval (seconds)", 1, 3600, 1) | |
p = obs.obs_properties_add_list(props, "source", "Text Source", 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_unversioned_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(p, name, name) | |
obs.source_list_release(sources) | |
obs.obs_properties_add_button(props, "button", "Refresh", refresh_pressed) | |
return props |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment