n
pip install PSNAWP
باي بي: https://pypi.org/project/PSNAWP/
اقرأ المستندات: https://psnawp.readthedocs.io/en/latest/
حذر
هذه المكتبة عبارة عن غلاف API غير رسمي ومُصمم هندسيًا عكسيًا لشبكة PlayStation Network (PSN). لقد تم تطويره بناءً على الهندسة العكسية لتطبيق PSN Android. سيحدد غلاف واجهة برمجة التطبيقات (>= الإصدار 2.1.0) حدًا ذاتيًا بمعدل 300 طلب لكل 15 دقيقة. ومع ذلك، لا يزال من المهم عدم إرسال طلبات مجمعة باستخدام واجهة برمجة التطبيقات هذه. قد يؤدي الاستخدام المفرط لواجهة برمجة التطبيقات (API) إلى حظر حساب PSN الخاص بك بشكل مؤقت أو دائم.
يمكنك أيضًا إنشاء حساب مخصص لاستخدام هذه المكتبة حتى لا تفقد، في أسوأ السيناريوهات، إمكانية الوصول إلى حسابك الأساسي، إلى جانب ألعاب الفيديو الخاصة بك وتقدمك.
للبدء، تحتاج إلى الحصول على npsso <رمز 64 حرف>. تحتاج إلى اتباع الخطوات التالية
https://ca.account.sony.com/api/v1/ssocookie
{ "npsso" : " <64 character npsso code> " }
سيتم استخدام رمز npsso هذا في واجهة برمجة التطبيقات لأغراض المصادقة. يستمر رمز التحديث الذي تم إنشاؤه من npsso لمدة شهرين تقريبًا. بعد ذلك عليك الحصول على رمز npsso جديد. سيقوم الروبوت بطباعة تحذير إذا كان هناك أقل من 3 أيام متبقية في انتهاء صلاحية رمز التحديث.
فيما يلي مثال سريع حول كيفية استخدام هذه المكتبة
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" ])
ملاحظة: إذا كنت تريد إنشاء مثيلات متعددة لـ psnawp، فأنت بحاجة إلى الحصول على رمز npsso من حسابات PSN منفصلة. إذا قمت بإنشاء npsso جديد بنفس الحساب، فستنتهي صلاحية npsso السابقة الخاصة بك على الفور.
نرحب بجميع طلبات إعادة نشر الأخطاء والميزات، على الرغم من أنني جديد في إنشاء مكتبات بايثون، لذلك قد يستغرق الأمر بعض الوقت لتنفيذ بعض الميزات. نرحب بالاقتراحات إذا كنت أفعل شيئًا يمثل طريقة غير تقليدية للقيام بذلك.
لم يكن المقصود من هذا المشروع استخدامه في البريد العشوائي أو إساءة الاستخدام أو أي شيء من هذا القبيل. لا يتم اعتماد أي استخدام لهذا المشروع لهذه الأغراض. يرجى وضع ذلك في الاعتبار عند إنشاء تطبيقات باستخدام غلاف واجهة برمجة التطبيقات (API) هذا.
يحتوي هذا المشروع على تعليمات برمجية من PlayStationNetwork::API وPSN-PHP Wrapper والتي تمت ترجمتها إلى Python. وأيضًا شكرًا خاصًا @andshrew على توثيق نقاط نهاية PlayStation Trophy. يتم تضمين جميع التراخيص في هذا المستودع.