在Minecraft中发布YouTube的评论
这篇文章是2023年Minecraft命令日历的第10天的第2篇文章。
- 10日目 1シリーズ記事: Minecraftバニラサーバでも外部アプリから操作する
- 10日目 2シリーズ記事: YoutubeのコメントをMinecraftに送信する
- 10日目 3シリーズ記事: バニラのMinecraftでChatGPTに質問したりてコマンド実行する
首先
在第1季中,我们介绍了从外部应用程序发送命令到Minecraft的方法。
而这次,我们将重点介绍如何将外部网站的信息发送到Minecraft。
准备好
本文将介绍将YouTube直播评论发送到Minecraft的方法。
可使用的编程语言为Python 3.8至3.11。
(使用的库)
mcrcon:
pytchat:
在最后期限前进行修正时出现了恶化。
请在项目内创建一个 requirements.txt 文件,并在其中写入以下内容。
mcrcon==0.7.0
pytchat@git+https://github.com/waxsd100/pytchat.git@v0.6.2#egg=pytchat
随后,执行pip install -r requirements.txt来安装库。
用Python连接到Rcon
from mcrcon import MCRcon
# サーバーのアドレス、パスワード、ポート番号を定義
server_address = "127.0.0.1"
server_pass = "my_password"
server_port = 25575
# メイン関数を定義
if __name__ == '__main__':
# with文を使用してリソースの自動解放を保証
with MCRcon(server_address, server_pass, server_port) as rcon:
# サーバーにコマンドを送信し、ログを取得
rcon.command("say HELLO WORLD MINECRAFT WORLD")
执行程序,确认在Minecraft中的操作。
获取和嵌入YouTube评论
然后,我们将实时获取YouTube直播聊天中的评论。
可以从YouTube的URL中获取视频ID。
from mcrcon import MCRcon
import pytchat
server_address = "127.0.0.1"
server_pass = "my_password"
server_port = 25575
video_id = "########" # YouTubeのビデオID
if __name__ == '__main__':
with MCRcon(server_address, server_pass, server_port) as rcon:
try:
chat = pytchat.create(video_id=video_id) # YouTubeのライブチャットを取得
print(f"Start: https://www.youtube.com/watch?v={video_id}")
while chat.is_alive(): # ライブチャットがアクティブな間
for c in chat.get().sync_items(): # チャットの各メッセージに対して
rcon.command(f"say {c.message}") # Minecraftサーバーにメッセージを送信
except pytchat.ChatDataFinished:
print("Chat data finished.") # チャットデータが終了した場合
except Exception as ex:
print(ex) # その他の例外が発生した場合
finally:
# 終了処理
chat.terminate()
通过这种方法,YouTube聊天消息将以大约5~10秒的延迟被发送到Minecraft。
如果您想实时获取,请使用LiveChatAsync等异步处理进行获取。
(可以在浏览器上的评论反映之前获取。)
表情符号处理
只需要一个选项:Emoji的文本格式显示为: EmojiName:。
在手机或电脑上使用表情符号转换是推荐的。
如果想要仅判断除了文本消息以外的超级聊天,可以使用c.type进行类型判定。
match c.type:
case "superChat":
# スーパチャット受信時の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
case "textMessage":
# 通常のテキストメッセージ受信時の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
case "superSticker":
# スーパースティッカー受信時の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
case "newSponsor":
# チャンネルメンバーシップ新規登録受信の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
case "giftRedemption":
# メンバーシップギフト送信時の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
case "giftPurchase":
# メンバーシップギフト受信時の処理
print(f"{c.type} [{c.author.name}]- {c.message}")
只要使用Super Chat,就可以实现特殊的演出效果。
禁止进行Pay2Win行为。
使用示例
通过这种合作,观众可以实时参与的观众参与型Minecraft 成为了可能。
我认为这可以应用在各种场合,比如智力竞赛上或直接使用观众的评论。
它运行于以上介绍的库所构建的软件及数据包的组合之上。
软件(YouTube连接)
这些是通过结合上述介绍的库使用的软件和数据包。
最后
主要介绍了图书馆和自制软件,但也能与其他平台进行协作,而无需使用Mod。
下次我们将介绍与ChatGPT的合作事项。
如果你喜欢的话,请务必点赞和分享。
那我们下次见面吧。
下一次