summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rwxr-xr-xfortniteTest.py91
2 files changed, 94 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 322d1e2..ebad2d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
__pycache__/
-db.sqlite \ No newline at end of file
+db.sqlite
+venv/
+device_auths.json \ No newline at end of file
diff --git a/fortniteTest.py b/fortniteTest.py
new file mode 100755
index 0000000..a00283f
--- /dev/null
+++ b/fortniteTest.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python3
+
+import fortnitepy
+import json
+import os
+
+email = 'dmitry-morozov.rjkv73@yandex.ru'
+password = 'Dimka2407985$'
+filename = 'device_auths.json'
+
+class MyClient(fortnitepy.Client):
+ def __init__(self):
+ if self._device_auth_file_exists():
+ device_auth_details = self.get_device_auth_details().get(email, {})
+ super().__init__(
+ auth=fortnitepy.DeviceAuth(
+ **device_auth_details
+ )
+ )
+ else:
+ code = input("Enter authorization code (https://www.epicgames.com/id/api/redirect?clientId=3446cd72694c4a4485d81b77adbb2141&responseType=code):")
+ print(code)
+ super().__init__(
+ auth=fortnitepy.AuthorizationCodeAuth(
+ code = code
+ )
+ )
+
+ def _device_auth_file_exists(self):
+ return os.path.isfile(filename)
+
+ def get_device_auth_details(self):
+ if os.path.isfile(filename):
+ with open(filename, 'r') as fp:
+ return json.load(fp)
+ return {}
+
+ def store_device_auth_details(self, email, details):
+ existing = self.get_device_auth_details()
+ existing[email] = details
+
+ with open(filename, 'w') as fp:
+ json.dump(existing, fp)
+
+ async def event_device_auth_generate(self, details, email):
+ self.store_device_auth_details(email, details)
+
+ async def event_ready(self):
+ print('----------------')
+ print('Client ready as')
+ print(self.user.display_name)
+ print(self.user.id)
+ print('----------------')
+
+ if not self._device_auth_file_exists():
+ device_auth_data = await self.auth.generate_device_auth()
+ details = {
+ 'device_id': device_auth_data['deviceId'],
+ 'account_id': device_auth_data['accountId'],
+ 'secret': device_auth_data['secret'],
+ }
+ self.auth.__dict__.update(details)
+ self.dispatch_event(
+ 'device_auth_generate',
+ details,
+ email
+ )
+
+ for incomingPedingFriend in self.incoming_pending_friends:
+ print('Accepting friend request')
+ await incomingPedingFriend.accept()
+
+ async def event_party_invite(self, invitation: fortnitepy.ReceivedPartyInvitation):
+ clientParty = await invitation.accept()
+ for partyMember in clientParty.members:
+ if not self.get_friend(partyMember.id) and self.user.id != partyMember.id:
+ print('Adding {} as friend'.format(partyMember.display_name))
+ await partyMember.add()
+
+ async def event_friend_request(self, request: fortnitepy.friend.IncomingPendingFriend):
+ print('Accepting friend request')
+ await request.accept()
+
+ async def event_friend_presence(self, before, after: fortnitepy.Presence):
+ if before is not None and after is not None:
+ print('event_friend_presence for user {}'.format(after.friend.display_name))
+ print("Before available {}, joinable {}, playing {}, lfg {}".format(before.available, before.joinable, before.playing, before.lfg))
+ print("After available {}, joinable {}, playing {}, lfg {}".format(after.available, after.joinable, after.playing, after.lfg))
+
+client = MyClient()
+client.run() \ No newline at end of file