vrchat-api код не могу заставить работать
Код взял отсюда:
> Цитата
https://vscode.githubhelp.com/7ew1r/vrchat-api-python/blob/HEAD/examples/who_blocked_me.py#L1-L43
Работаю в PyCharm
#!/usr/bin/env python3
from getpass import getpass
from vrchat_api import VRChatAPI
from vrchat_api.enum import ModerationType
"""
Show a list of users who have blocked you.
"""
a = VRChatAPI(
getpass("VRChat Username"),
getpass()
)
a.authenticate()
moderations = a.getModerations()
blockModerations = filter(
lambda x: x.type == ModerationType.BLOCK,
moderations
)
unblockModerations = filter(
lambda x: x.type == ModerationType.UNBLOCK,
moderations
)
for m in blockModerations:
s = "{:20} blcoked me at {} ...".format(
m.targetDisplayName,
m.created
)
unblocks = list(filter(
lambda x: x.targetDisplayName == m.targetDisplayName,
unblockModerations
))
if len(unblocks) > 0:
latestUnblock = unblocks[-1]
if latestUnblock.created > m.created:
s += " but he/she unblocked at {}".format(latestUnblock.created)
print(s)
Ответы (1 шт):
В предоставленном коде Python есть несколько потенциальных проблем:
Необработанное исключение: Если пользователь введет неправильный пароль, код не обработает исключение
VRChatAPIError. Это может привести к неожиданному завершению программы. Рекомендуется добавить блокtry... exceptдля обработки исключений и предоставления понятного сообщения об ошибке пользователю.Использование устаревшего API: Используемый API
vrchat_apiустарел. Рекомендуется использовать более новую версию, напримерvrchatapiилиvrchat. Это обеспечит поддержку последних функций и обновлений безопасности.Ошибки форматирования строк: В строке
s = "{:20} blcoked me at {} ...".format( m.targetDisplayName, m.created )допущена опечатка:blcokedвместоblocked.Избыточный код: Фильтрация списка
unblockModerationsпоm.targetDisplayNameявляется избыточной, посколькуmуже представляет собой блокировку сm.targetDisplayName.
Улучшенный код с учетом этих исправлений:
#!/usr/bin/env python3
from getpass import getpass
from vrchatapi import VRChatAPI
from vrchatapi.enum import ModerationType
"""
Show a list of users who have blocked you.
"""
# Use a try/except block to handle potential errors
try:
# Get the user's credentials
username = getpass("VRChat Username: ")
password = getpass()
# Authenticate with the API
api = VRChatAPI(username, password)
api.authenticate()
# Get the list of moderations
moderations = api.get_moderations()
# Filter the moderations to find blocks
block_moderations = list(filter(lambda x: x.type == ModerationType.BLOCK, moderations))
# Print the list of blocked users
for block in block_moderations:
# Check if the user has been unblocked
unblocks = list(filter(lambda x: x.target_display_name == block.target_display_name, moderations))
unblock = None if len(unblocks) == 0 else unblocks[-1]
if unblock and unblock.created > block.created:
print(f"{block.target_display_name} blocked me at {block.created} but unblocked at {unblock.created}")
else:
print(f"{block.target_display_name} blocked me at {block.created}")
# Handle any exceptions that may occur
except VRChatAPIError as e:
print("An error occurred:", e)
#!/usr/bin/env python3
from getpass import getpass
from vrchatapi import VRChatAPI
from vrchatapi.enum import ModerationType
"""
Show a list of users who have blocked you.
"""
# Use a try/except block to handle potential errors
try:
# Get the user's credentials
username = getpass("VRChat Username: ")
password = getpass()
# Authenticate with the API
api = VRChatAPI(username, password)
api.authenticate()
# Get the list of moderations
moderations = api.get_moderations()
# Filter the moderations to find blocks
block_moderations = list(filter(lambda x: x.type == ModerationType.BLOCK, moderations))
# Print the list of blocked users
for block in block_moderations:
# Check if the user has been unblocked
unblocks = list(filter(lambda x: x.target_display_name == block.target_display_name, moderations))
unblock = None if len(unblocks) == 0 else unblocks[-1]
if unblock and unblock.created > block.created:
print(f"{block.target_display_name} blocked me at {block.created} but unblocked at {unblock.created}")
else:
print(f"{block.target_display_name} blocked me at {block.created}")
# Handle any exceptions that may occur
except VRChatAPIError as e:
print("An error occurred:", e)