N
pip install PSNAWP
PyPI: https://pypi.org/project/PSNAWP/
Baca Dokumen: https://psnawp.readthedocs.io/en/latest/
Peringatan
Pustaka ini adalah pembungkus API tidak resmi dan direkayasa balik untuk PlayStation Network (PSN). Ini telah dikembangkan berdasarkan rekayasa balik aplikasi PSN Android. Pembungkus API (>= v2.1.0) akan membatasi lajunya sendiri pada 300 permintaan per 15 menit. Namun, tetap penting bagi Anda untuk tidak mengirimkan permintaan massal menggunakan API ini. Penggunaan API yang berlebihan dapat menyebabkan akun PSN Anda diblokir sementara atau permanen.
Anda juga dapat membuat akun khusus untuk menggunakan perpustakaan ini sehingga dalam skenario terburuk Anda tidak kehilangan akses ke akun utama Anda, beserta video game dan kemajuan Anda.
Untuk memulai, Anda perlu mendapatkan npsso <64 kode karakter>. Anda perlu mengikuti langkah-langkah berikut
https://ca.account.sony.com/api/v1/ssocookie
{ "npsso" : " <64 character npsso code> " }
Kode npsso ini akan digunakan di api untuk tujuan otentikasi. Token refresh yang dihasilkan dari npsso bertahan sekitar 2 bulan. Setelah itu Anda harus mendapatkan token npsso baru. Bot akan mencetak peringatan jika masa berlaku token penyegaran tersisa kurang dari 3 hari.
Berikut adalah contoh singkat tentang cara menggunakan perpustakaan ini
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" ])
Catatan: Jika Anda ingin membuat beberapa instance psnawp, Anda perlu mendapatkan kode npsso dari akun PSN terpisah. Jika Anda membuat npsso baru dengan akun yang sama, npsso Anda sebelumnya akan segera kedaluwarsa.
Semua posting ulang bug dan permintaan fitur disambut baik, meskipun saya baru dalam membuat perpustakaan python, jadi mungkin perlu beberapa saat bagi saya untuk mengimplementasikan beberapa fitur. Saran diterima jika saya melakukan sesuatu dengan cara yang tidak biasa.
Proyek ini tidak dimaksudkan untuk digunakan untuk spam, penyalahgunaan, atau hal semacam itu. Penggunaan proyek ini untuk tujuan tersebut tidak didukung. Harap ingat hal ini saat membuat aplikasi menggunakan pembungkus API ini.
Proyek ini berisi kode dari PlayStationNetwork::API dan PSN-PHP Wrapper yang diterjemahkan ke Python. Juga, terima kasih khusus @andshrew karena telah mendokumentasikan titik akhir PlayStation Trophy. Semua lisensi disertakan dalam repositori ini.