VRChat의 로그인 감시 체제 구축 ①

5535 단어 VRPythonVRChat

개요


나는 친구를 감시하는 기능을 세우고 싶다
(VRChat의 공식은 다양한 API 기능을 공개하고 그것을 활용한 무언가를 만져보았다)
보다 크면 같음

본 보도에 관하여


이 기능은 현재 개발 중이지만 우선 원래의 온라인, 오프라인의 출처를 검출할 수 있다.
또 이곳은 다른 용도로 사용할 수 있을 것 같아 보도를 시도했다.
알림 기능 후,,,,,

주의사항


API를 사용할 때 서버에 부담을 주지 않도록 주의하십시오.
API 부정 사용 등으로 계정이 정지되면 본인의 책임임을 양해 부탁드립니다.

VRChat의 API 연결 방법


아래에 게재하다.
정보를 얻으려면 apiKey 및 authTokenapikey 위에 붙인다.authToken의 취득은 다음과 같이 VRCHAT의 ID/PW를 통해 기본 인증을 받아야 합니다.
・・・ 다요소 인증을 하는 경우에는 알 수 없습니다.
AuthTokenGet.py
username = "VRCのID"
password = "VRCのpassword"
apiKey   = 'JlE5Jldo5Jibnk5O5hTx6XVqsJu4WJ26'# 21/05/22 時点で公開されているキー
data     = {'apiKey':apiKey}
headers  = {'User-Agent': 'SunaFH/1.0.5'}

response = requests.get('https://api.vrchat.cloud/api/1/auth/user', data=data, headers=headers, auth=username,password)
authToken= response.cookies["auth"]

친구 목록 가져오기


현재 온라인 친구 목록을 가져오면https://api.vrchat.cloud/api/1/auth/user/friendsGET에서 정보를 얻을 수 있습니다.
예제
response = requests.get('https://api.vrchat.cloud/api/1/auth/user/friends', data=data, headers=headers, params={"authToken": authToken})
다음은 얻을 수 있는 정보 일람표이다
·id
・username
・displayName
・currentAvatarImageUrl
・curentAvatarThumbnailImageUrl
・fallbackAvatar
・userIcon
・profilePicOverride
·last_platform
・tags
・developerType
・status
・statusDescription
・friendKey
·last_login
・isFriend
・location
많다
하지만 이번에 사용한 값은 이름displayName이다.

모니터링 사용자 관리


변경 가능성이 있다
이번에는 아래와 같이 페이지에서 간단하게 추가, 제외할 수 있습니다.

진전이 있군!!

알림 기능


공지된 부분은 개발 후 "VRC 제작 로그인 감시 체제 ②"에서 공개될 예정이다

이번 코드에 대해서.


알림 섹션 제작 후 모두github로 업로드
온라인 친구가 특정 친구를 포함하고 있는지 확인하는 부분만 기재한다
import requests
import json
from urllib.parse import quote
from sys import exit
from datetime import datetime

# 監視するユーザーリストを取得
user_file = open("online_player_list.txt", mode='r',encoding='utf-8')
user_data = user_file.read()
user_file.close()
low_user_data = eval(user_data)

# 既にオンラインで通知を送っているユーザーリスト
on_user_file = open("tmp_players.txt", mode='r',encoding='utf-8')
on_user_data = on_user_file.read()
on_user_file.close()
if on_user_data == "":
    on_low_user_data = []
else:
    on_low_user_data = on_user_data.split(",")
write_tmp = 0

username = "VRCのID"
password = "VRCのpassword"
apiKey = 'JlE5Jldo5Jibnk5O5hTx6XVqsJu4WJ26'# 21/05/22 時点で公開されているキー
data = {'apiKey':apiKey}
headers = {'User-Agent': 'SunaFH/1.0.5'}

# APIにてフレンドリストを取得

response = requests.get('https://api.vrchat.cloud/api/1/auth/user', data=data, headers=headers, auth="username","password")
token = response.cookies["auth"]

response = requests.get('https://api.vrchat.cloud/api/1/auth/user/friends', data=data, headers=headers, params={"authToken": token})
moderations = response.json()

write_online = []
write_offline = []
moderations_filtered = []

for i in (list(moderations)):
    moderations_filtered.append(i['displayName'])
for a in moderations_filtered:
    if a in low_user_data:
        if a not in on_user_data:
            write_online.append(a)
            write_tmp = 1

# 繰り返して既に報告したリストへ入力する
on_low_user_data.extend(write_online)
remove_list = []

for i in on_low_user_data:
    if i in moderations_filtered:
        pass
    else:
        #print(i)
        remove_list.append(i)

# 既にログアウトしている人をオンラインリストから除外
print(type(remove_list))
if len(remove_list) >= 1:
    for i in range(len(remove_list)):
        on_low_user_data.remove(remove_list[i])

with open("tmp_players.txt", "w",encoding='utf-8') as opfile:
    opfile.write(",".join(on_low_user_data))

끝날 때


스토커 하지 마세요.

인용하다

좋은 웹페이지 즐겨찾기