n
pip install PSNAWP
PyPI: https://pypi.org/project/PSNAWP/
Leia os documentos: https://psnawp.readthedocs.io/en/latest/
Cuidado
Esta biblioteca é um wrapper de API não oficial e de engenharia reversa para a PlayStation Network (PSN). Foi desenvolvido com base na engenharia reversa do aplicativo PSN para Android. O wrapper da API (>= v2.1.0) definirá o limite de autoavaliação em 300 solicitações a cada 15 minutos. No entanto, ainda é importante que você não envie solicitações em massa usando esta API. O uso excessivo da API pode fazer com que sua conta PSN seja banida temporária ou permanentemente.
Você também pode criar uma conta dedicada para usar esta biblioteca para que, na pior das hipóteses, você não perca o acesso à sua conta principal, junto com seus videogames e progresso.
Para começar, você precisa obter o npsso <código de 64 caracteres>. Você precisa seguir os seguintes passos
https://ca.account.sony.com/api/v1/ssocookie
{ "npsso" : " <64 character npsso code> " }
Este código npsso será usado na API para fins de autenticação. O token de atualização gerado a partir do npsso dura cerca de 2 meses. Depois disso, você deverá obter um novo token npsso. O bot imprimirá um aviso se faltarem menos de 3 dias para a expiração do token de atualização.
A seguir está um exemplo rápido de como usar esta biblioteca
from psnawp_api import PSNAWP
from psnawp_api . models import SearchDomain
from psnawp_api . models . trophies import PlatformType
psnawp = PSNAWP ( "<64 character npsso code>" )
# Your Personal Account Info
client = psnawp . me ()
print ( f"Online ID: { client . online_id } " )
print ( f"Account ID: { client . account_id } " )
print ( f"Profile: { client . get_profile_legacy () } n " )
# Your Registered Devices
devices = client . get_account_devices ()
for device in devices :
print ( f"Device: { device } n " )
# Your Friends List
friends_list = client . friends_list ()
for friend in friends_list :
print ( f"Friend: { friend } n " )
# Your Players Blocked List
blocked_list = client . blocked_list ()
for blocked_user in blocked_list :
print ( f"Blocked User: { blocked_user } n " )
# Your Friends in "Notify when available" List
available_to_play = client . available_to_play ()
for user in available_to_play :
print ( f"Available to Play: { user } n " )
# Your trophies (PS4)
for trophy in client . trophies ( "NPWR22810_00" , PlatformType . PS4 ):
print ( trophy )
# Your Chat Groups
groups = client . get_groups ()
first_group_id = None # This will be used later to test group methods
for id , group in enumerate ( groups ):
if id == 0 : # Get the first group ID
first_group_id = group . group_id
group_info = group . get_group_information ()
print ( f"Group { id } : { group_info } n " )
# Your Playing time (PS4, PS5 above only)
titles_with_stats = client . title_stats ()
for title in titles_with_stats :
print (
f"
Game: { title . name } -
Play Count: { title . play_count } -
Play Duration: { title . play_duration } n "
)
# Other User's
example_user_1 = psnawp . user ( online_id = "VaultTec-Co" ) # Get a PSN player by their Online ID
print ( f"User 1 Online ID: { example_user_1 . online_id } " )
print ( f"User 1 Account ID: { example_user_1 . account_id } " )
print ( example_user_1 . profile ())
print ( example_user_1 . prev_online_id )
print ( example_user_1 . get_presence ())
print ( example_user_1 . friendship ())
print ( example_user_1 . is_blocked ())
# Example of getting a user by their account ID
user_account_id = psnawp . user ( account_id = "9122947611907501295" )
print ( f"User Account ID: { user_account_id . online_id } " )
# Messaging and Groups Interaction
group = psnawp . group ( group_id = first_group_id ) # This is the first group ID we got earlier - i.e. the first group in your groups list
print ( group . get_group_information ())
print ( group . get_conversation ( 10 )) # Get the last 10 messages in the group
print ( group . send_message ( "Hello World" ))
print ( group . change_name ( "API Testing 3" ))
# print(group.leave_group()) # Uncomment to leave the group
# Create a new group with other users - i.e. 'VaultTec-Co' and 'test'
example_user_2 = psnawp . user ( online_id = "test" )
new_group = psnawp . group ( users_list = [ example_user_1 , example_user_2 ])
print ( new_group . get_group_information ())
# You can use the same above methods to interact with the new group - i.e. send messages, change name, etc.
# Searching for Game Titles
search = psnawp . search ( search_query = "GTA 5" , search_domain = SearchDomain . FULL_GAMES )
for search_result in search :
print ( search_result [ "result" ][ "invariantName" ])
Observação: se quiser criar várias instâncias do psnawp, você precisará obter o código npsso de contas PSN separadas. Se você gerar um novo npsso com a mesma conta, seu npsso anterior expirará imediatamente.
Todas as republicações de bugs e solicitações de recursos são bem-vindas, embora eu seja novo na criação de bibliotecas Python, então pode demorar um pouco para implementar alguns recursos. Sugestões são bem-vindas se eu estiver fazendo algo que seja uma maneira não convencional de fazer.
Este projeto não foi projetado para ser usado para spam, abuso ou qualquer coisa do tipo. Qualquer uso deste projeto para esses fins não é endossado. Tenha isso em mente ao criar aplicativos usando este wrapper de API.
Este projeto contém código de PlayStationNetwork::API e PSN-PHP Wrapper que foi traduzido para Python. Além disso, um agradecimento especial a @andshrew por documentar os endpoints do PlayStation Trophy. Todas as licenças estão incluídas neste repositório.