VRChat의 로그인 감시 체제 구축 ①
개요
나는 친구를 감시하는 기능을 세우고 싶다
(VRChat의 공식은 다양한 API 기능을 공개하고 그것을 활용한 무언가를 만져보았다)
보다 크면 같음
본 보도에 관하여
이 기능은 현재 개발 중이지만 우선 원래의 온라인, 오프라인의 출처를 검출할 수 있다.
또 이곳은 다른 용도로 사용할 수 있을 것 같아 보도를 시도했다.
알림 기능 후,,,,,
주의사항
API를 사용할 때 서버에 부담을 주지 않도록 주의하십시오.
API 부정 사용 등으로 계정이 정지되면 본인의 책임임을 양해 부탁드립니다.
VRChat의 API 연결 방법
아래에 게재하다.
정보를 얻으려면
apiKey
및 authToken
apikey
위에 붙인다.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/friends
GET
에서 정보를 얻을 수 있습니다.예제
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))
끝날 때
스토커 하지 마세요.
인용하다
Reference
이 문제에 관하여(VRChat의 로그인 감시 체제 구축 ①), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nimani/items/cd51b7d7881a032388c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)