From da8716cccc87484e87c0c04adeb9e4ca234c7536 Mon Sep 17 00:00:00 2001 From: William Bruno Date: Sat, 18 Apr 2026 08:09:38 -0400 Subject: [PATCH] fixes --- cookies/willbrunogmailcom.cookiejar | 36 +++--- cookies/willbrunogmailcom.session | 2 +- geocache.db | Bin 57344 -> 69632 bytes main.py | 4 +- src/pymd3_vue_location_sim/server.py | 179 ++++++++++++++------------- 5 files changed, 116 insertions(+), 105 deletions(-) diff --git a/cookies/willbrunogmailcom.cookiejar b/cookies/willbrunogmailcom.cookiejar index 107f95c..9e09b3f 100644 --- a/cookies/willbrunogmailcom.cookiejar +++ b/cookies/willbrunogmailcom.cookiejar @@ -1,25 +1,25 @@ #LWP-Cookies-2.0 Set-Cookie3: dslang=US-EN; path="/"; domain=.apple.com; path_spec; secure; discard; HttpOnly=None; version=0 Set-Cookie3: site=USA; path="/"; domain=.apple.com; path_spec; secure; discard; HttpOnly=None; version=0 -Set-Cookie3: acn01="NNc+TvoQfp2pQiuHIAAqUBtXR1S4XhqZJWcHCAARBs+41xk/"; path="/"; domain=.apple.com; path_spec; secure; expires="2027-04-14 09:01:23Z"; HttpOnly=None; version=0 -Set-Cookie3: aasp=DE9DF160D458CB33DB61E598CA924CC24441BCA91527DC0B793F5576DC6E8DF8BDBF5D9424A9243220F7D62057DD673EE28B6F754666DDF1949F07205B0E0BC0066D0CEDEA32E34965B3EA5AC66D2F90BEAC5E289B72B338B05E5D57B8DDD402BBC24F218664008D4D70C62F90DF6411A599DFC6DE59BA38; path="/"; domain=.idmsa.apple.com; path_spec; secure; discard; HttpOnly=None; version=0 +Set-Cookie3: acn01="siA7JPBndkEejEnE/127L8mBwoisazQDFIhojgAQ/KEGDE9i"; path="/"; domain=.apple.com; path_spec; secure; expires="2027-04-16 02:29:40Z"; HttpOnly=None; version=0 +Set-Cookie3: aasp=31DACD6478D254816871CEC71746594E9EB265E23843BFE54ACC23E6CD21C7967B4A74875C4B64D8D546102A6808900C1DFFE23602181DADE792ED7B73E9C5A4CC7C56CCF9C822DA32264AE474FEDF84ADC645D0F5B9D01FF71B500A76FBE7FF8AA5B0B9A6B0FB8F7A61CDB741E9973C9A04245DF7E939AB; path="/"; domain=.idmsa.apple.com; path_spec; secure; discard; HttpOnly=None; version=0 Set-Cookie3: DES580750186337023c50d1415a6e6ca44a2="HSARMTKNSRVXWFlajR2ecD1662phQjqU9vXxnL49ZjypuVYYXHDpA3wTiX6Mf2J4WDlIhZj52z81aDOuz+VC80bVhV41TSNN4ggoPjW8WnsQrjniTQYkgJycPQNnzhkK4hfe2AMrr/bhrJJm8sHHc+Oh1HUckN6T7T4c1bmf2Qg9tRwsdRDNyMMyFH/Ml/cQlWKj39/YHlY=SRVX"; path="/"; domain=.idmsa.apple.com; path_spec; secure; expires="2026-04-21 03:09:12Z"; HttpOnly=None; version=0 Set-Cookie3: X-APPLE-UNIQUE-CLIENT-ID="\"BA==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-LOGIN="\"v=1:t=BA==BST_IAAAAAAABLwIAAAAAGneOZkRDmdzLmljbG91ZC5hdXRovQCaguVTZqS1WtbK-2fXiMlSEneJRuCgMGur1kfGcotuhS8Kvhra-S8EJ_LDYfFgbF8KYm2Dwug7ev54fe7_F-ui_zK0AqM9w7i8HvwWtWOA6QeYJtzFKgl7BVt_c5I4FrExr468XbgzmKtoXQxDTJu_wOLbbA~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-VALIDATE="\"v=1:t=BA==BST_IAAAAAAABLwIAAAAAGneOZkRDmdzLmljbG91ZC5hdXRovQCaguVTZqS1WtbK-2fXiMlSEneJRuCgMGur1kfGcotuhS8Kvhra-S8EJ_LDYfFgbF8KYm2Dwug7ev54fe7_F-ui_zK0AqM9w7i8HvwWtWOA6amlkIysG_APwQqmrfcDi-L_p8u1i1A8tqFrDUUfJs21Y1v8oA~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-USER="\"v=1:s=1:d=157320350\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-LOGIN="\"v=1:t=BA==BST_IAAAAAAABLwIAAAAAGngXy8RDmdzLmljbG91ZC5hdXRovQD04k7cSA0I7tz8P6YR10gGD7CeiE4Sp9KmB4NcfSJGJ9mMfV3s3UQpxtOj9bruFqCinlYpdqRIEyP2Gq5A_XBK1p7RsIkCrmxvCBTILwOf1RyEF9rd5VMxpyFJXo26hjHe8Cb6EB346qaJbrZ0r89Gs_Dp-A~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-VALIDATE="\"v=1:t=BA==BST_IAAAAAAABLwIAAAAAGngXy8RDmdzLmljbG91ZC5hdXRovQD04k7cSA0I7tz8P6YR10gGD7CeiE4Sp9KmB4NcfSJGJ9mMfV3s3UQpxtOj9bruFqCinlYpdqRIEyP2Gq5A_XBK1p7RsIkCrmxvCBTILwOf1bJlsm_AS1Djsp7P1ioqPimN8HaW0JDK-1gjsxQX4O6MgDpkxQ~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-USER="\"v=1:s=1:d=157320350\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 Set-Cookie3: X_APPLE_WEB_KB-FHMLYL_TPMN_3A8D3KIPPI0C_EC="\"v=1:t=BA==BST_IAAAAAAABLwIAAAAAGm_OLQRDmdzLmljbG91ZC5hdXRovQD38nYoxQenHW9WggeFKkoDa8I8zeKoOshv6I4dsZQalR2itry1r6kUZe9d_BZan1W-oKlImTrYi_-Vt5Q4YEJWJITWeqN8QChxvbTXB0o8sQ-wAIzBL1J5sQIRBqMadrtP5U0wslkRg0u0AguK20CM4TGoGg~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-21 00:32:52Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-DS-WEB-SESSION-TOKEN="\"AQFfzSjK/WZszw0Fsqj3EgUNWNY4t+SKa9A0tAZvx+6URTf4eVhwhvkiDp7K92hEHTDNkvBVpeLWCOciQyzVLPcDhnss5IUImi6rDXxU6diem5bTWiznw50LWVBDnC9GnFB1ER6z1jqvw6u/2pDoO7slxsylU2j5fDp6mPvMe2iz83UhRRDLqUV5RjHOZ3Y93rnGSskislOzvvd/wuWBL9aXdC22oeGCs8lALzT2LDTJE/fJfw4H5ttKDoh5sA5bPgO3UjBtvAOMurTwdlYHmyaZ5pPrRDKSl9sgcbzkxwwvbvCVUbbsLt7rUolhsJmY33Pu51A7ubiG6hzIEg8U/mAQH7A9Ill4D/HbpR0Q4/uW3Sw9BkdI2MopLsLLJudBW66IBfYSGY53Dzr33IXjyi8bn+f8drCoxv+Jqsut5Yn/MI8Ooc9vpkON2INj+MDPCbr9LP2dh2hjOjvyHWJvDIYuIa/1ols9fx7GAT37dp8iuJYq7UYUT4GVaayt5xRH/a+hE8IpM+6gMAVgXMYBYi40eAmvcCG1+Pd4NKTQGRio+Z53bfcpMq4IjV5ZpwmcfWHMsCs6UNuFzDUhz3Oh0O9zK1hubuxgP4NvpJWZTGeDxm3Ak4nphbELvoFeRzqzX+wHLIKfr8H/ruK8LCrLeJvt4QAExQH9N6pjBDot0M/WpG0aZ0ZbOubqhfmX5KftG2QKJwDfLouyLeWp07TvyAsWXkS+o5Bc2ararFO8R5+OHURIIx9O47UUHkA0a7C1iYhdbxf8MMhOjYt6J8buormR4LDZEp2q5Xk=\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-HSA-TRUST="\"28a33818a1dce9a0eecde38e7c8fcc6f080b70bc9feb505599fb2855903a4792_HSARMTKNSRVXWFlajR2ecD1662phQjqU9vXxnL49ZjypuVYYXHDpA3wTiX6Mf2J4WDlIhZj52z81aDOuz+VC80bVhV41TSNN4ggoPjW8WnsQrjniTQYkgJycPQNnzhkK4hfe2AMrr/bhrJJm8sHHc+Oh1HUckN6T7T4c1bmf2Qg9tRwsdRDNyMMyFH/Ml/cQlWKj39/YHlY=SRVX\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-07-13 12:56:57Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Events="\"S2V5QXBwbDoBAAAA8QRQAABCqtxc6DiNgfM7sfluuTm75zY6t8HcSbX5byVn83L6Yg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Documents="\"S2V5QXBwbDoBAAAAAgRQAAC9HDQLy/UwkOt+Z+OPhwCJxnyB1byDPGL1UYWgHtJEgg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Photos="\"S2V5QXBwbDoBAAAAAwRQAACxKufqce7i/IW850g8JkJ73J0Wyxpjpfh5nAk7eioyvw==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Cloudkit="\"S2V5QXBwbDoBAAAABARQAABnmo+VJgPhrzid+Xl/01UA02nJiwkk9q0MBvy6QH758g==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Safari="\"S2V5QXBwbDoBAAAAFgRQAAC9tTzH5+GZyvSdFF1r+Zmvj/kJmQNWTYNLCmNG8tX6Cw==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Mail="\"S2V5QXBwbDoBAAAABwRQAABywaR34zLT3fm0XcBUYCbETV16EkpVL6/O4hB9EHwDcQ==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Notes="\"S2V5QXBwbDoBAAAACQRQAADqrnrINYzUlz7QoxZO+ami+5QY9Qtys3wAuCPjM0x7wQ==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-News="\"S2V5QXBwbDoBAAAACwRQAAAYQEni07N+B3hrogj/ZlPdWE3ibkkBCYJcDgadmwRzOw==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-PCS-Sharing="\"S2V5QXBwbDoBAAAADARQAABGcfw9nr8NjONRvLxWcwgMoaBXj7xode3Sf7ajDnV2IQ==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-14 12:57:00Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-TOKEN="\"v=2:t=BA==BST_IAAAAAAABLwIAAAAAGneP2oRDmdzLmljbG91ZC5hdXRovQCgEswrYhaJx11ybTgoBMzcGPh9PUsXyVTJCpHvMijnTIkcF0JOFbgPAg8KKzEH9Rd9ebBJmHwfJP5LUVHG1YaUgB5xL9LX2AQYoGwnJcaj2mCD7LQxw4WCZSVJf9TauwpgZlhHpR15qHwnpiIC3Qg8Rue57g~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-04-28 13:21:46Z"; HttpOnly=None; version=0 -Set-Cookie3: X-APPLE-WEBAUTH-FMIP="\"BA==BST_IAAAAAAABLwIAAAAAGneP2oRDmdzLmljbG91ZC5hdXRovQCgEswrYhaJx11ybTgoBMzcGPh9PUsXyVTJCpHvMijnTIkcF0JOFbgPAg8KKzEH9Rd9ebBJmHwfJP5LUVHG1YaUgB5xL9LX2AQYoGwnJcaj2h-pjNdL9bRPA229-vtr8LU4Syp2u2FO2pDcJ6aasJg2FHdtQg~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-DS-WEB-SESSION-TOKEN="\"AQE2jvAclZD065mntDlVLyvYiJo3gR1bQrXcbC4UJg7cfXVcjogcjL3EORqqwOCw/77BmeCLIYZVCGY/rdu/a7P8a3P628zN4M3/97eFNWavQnlNfVotwXIPv7qcWQoIm7C2G7Gf4JHklBOmzWU9tmub3JpV5bzxRYb41I1YvwUYt8wWigFwQeX1p0djcpB0YbQp7Ign0RzHelQ0LE0046v2mWkeTXN59E57xpVChCkcsydb1LQ7dARyG6K8nDVBxYMrB4CiWR93/w9GbdECWXDl1zGyUcUEKjveXj/f4yUMmP97xlNYSr4T1srOGXuqyGQ35QBbcVhfgciSTSC8IWp1CfoJYDFoRjgsock39xnQIzkV0kgqbqh9KmMnRpra+BvTwFpkZooM5yqBH6q83k1mrQwv3WpGpKSgJf7DHk/DllkZi9mnZHVgukX+KWlgCnl5IPACmg72mbM9Lt43Rn6NxCXE4LoOxSRCg0OM7U5VB2KQEW0itAifwYbTeLDYEy2FK0GysmpQUdiRLPqbY/5tmR29VsrH11ILDmWcMkuClbf4MgFo723r2wPIZc8VXWSNAwArChh6gGmYRmmgpJwMoAADz+e53bH9t2zdNeo5Gl4UXCo2krrwW6hPDvIvIsO2G9RsqxPjfWe8TEhWxqSNZ0NCXihX0AZ+jYVR1eNu6d55TEBavM/wYPxJW7y8YCFJV3xXIpZRmPWAO/+WiqeBBH3jRSIGQZcCe5Sa8114Bf5zVUl2Ccgpo6A4ONfoWkXlDHbeXSxmuRKE7QXjToAcLgEErM1UOPo=\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-HSA-TRUST="\"28a33818a1dce9a0eecde38e7c8fcc6f080b70bc9feb505599fb2855903a4792_HSARMTKNSRVXWFlajR2ecD1662phQjqU9vXxnL49ZjypuVYYXHDpA3wTiX6Mf2J4WDlIhZj52z81aDOuz+VC80bVhV41TSNN4ggoPjW8WnsQrjniTQYkgJycPQNnzhkK4hfe2AMrr/bhrJJm8sHHc+Oh1HUckN6T7T4c1bmf2Qg9tRwsdRDNyMMyFH/Ml/cQlWKj39/YHlY=SRVX\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-07-15 04:01:51Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Events="\"S2V5QXBwbDoBAAAA8QRZAADyjPVu3Zmkep80V+qJNHa5C3NwfKpeMyW67J1rMKpK4Q==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Documents="\"S2V5QXBwbDoBAAAAAgRZAABipc9p/kcwMIQ/uzTmZZxdtx00DjfUVtPIn8qIK3qBiw==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Photos="\"S2V5QXBwbDoBAAAAAwRZAABdIvbUGMfQwMvJBKaERpK7lH+LKZUfwl8xaaM0s/9G3A==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Cloudkit="\"S2V5QXBwbDoBAAAABARZAABLV1DirvkB63ct2xhJbufRGeA6yHF1dzCZyT2lUxmHqg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Safari="\"S2V5QXBwbDoBAAAAFgRZAAD1MhBAfPNJA/LzwgvGElc+wsl5KKnPYjLUu4/gMxexQg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Mail="\"S2V5QXBwbDoBAAAABwRZAABpYZPPRGY/AiCTZ+FxbMFSnuLaJ83tH7xhjpL0BjSDDg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Notes="\"S2V5QXBwbDoBAAAACQRZAAAHGYf+WnAkIKAbEuOfLXsDNDwkpc9fc9XRBT7MuUB8oA==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-News="\"S2V5QXBwbDoBAAAACwRZAADjYc71gjGFasFxH7Z1SUqX3HeZxOksxRuTIbRcuYhNlA==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-PCS-Sharing="\"S2V5QXBwbDoBAAAADARZAABkkP52Jyp0ESCIUjeMwkIQt7V6sNsaAMg/Fqp2BpcFBg==\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-05-16 04:01:54Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-TOKEN="\"v=2:t=BA==BST_IAAAAAAABLwIAAAAAGngbgERDmdzLmljbG91ZC5hdXRovQA3sNfo8nQ2WqjRiW8b2v6FBA7xVM9ABBbUseXK6M1xna_9nP0GiTFniTIZZOBZKPWrAYTMjtv4yy7kM54yBmzwmpnsWfZi5eEJsLoboChOa7f6SKHTZUIsYnzV_GQH8efLnI9WppfwGYtR-h1kK71sisAa3g~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; expires="2026-04-30 05:05:05Z"; HttpOnly=None; version=0 +Set-Cookie3: X-APPLE-WEBAUTH-FMIP="\"BA==BST_IAAAAAAABLwIAAAAAGngbgERDmdzLmljbG91ZC5hdXRovQA3sNfo8nQ2WqjRiW8b2v6FBA7xVM9ABBbUseXK6M1xna_9nP0GiTFniTIZZOBZKPWrAYTMjtv4yy7kM54yBmzwmpnsWfZi5eEJsLoboChOa_OhPIyPKAsZumke00vIotvQgxBnmoPPwJSambgtmkzhunV0BQ~~\""; path="/"; domain=.icloud.com; path_spec; domain_dot; secure; discard; HttpOnly=None; version=0 Set-Cookie3: xr_3n2093n1a="B50g9gcKmoM+KF+j8hPX6wKXv22QcYsBKEONZTiNR4g="; path="/"; domain=p144-fmipweb.icloud.com; path_spec; secure; discard; HttpOnly=None; version=0 diff --git a/cookies/willbrunogmailcom.session b/cookies/willbrunogmailcom.session index 70c7566..c3d530c 100644 --- a/cookies/willbrunogmailcom.session +++ b/cookies/willbrunogmailcom.session @@ -1 +1 @@ -{"client_id": "a803c3ce-2586-11f1-a724-8f6777a1d2b5", "session_id": "DE9DF160D458CB33DB61E598CA924CC24441BCA91527DC0B793F5576DC6E8DF8BDBF5D9424A9243220F7D62057DD673EE28B6F754666DDF1949F07205B0E0BC0066D0CEDEA32E34965B3EA5AC66D2F90BEAC5E289B72B338B05E5D57B8DDD402BBC24F218664008D4D70C62F90DF6411A599DFC6DE59BA38", "auth_attributes": "zahj2u9cli9LAxaDkM/LZ+cVDLo7WY7x9DXKo/GGGAb+VYFvMJT/jxRGAHy2AaUN3MbqtRLU0i7jA2oeXhQ1iMaUEntaTv9AWTsTfylbAnoJ1Vo+euKP22hW6V/IbTfClCFMHGxZul3ooBdwJwz+otrAo3VPF3yUptZPvP5+7JOegMRDA1awse9Ci0QtcOfI8p6tyj5aV1xjcpLbt29wdmV+Ny/Lm25iFpDKnf/XIgvT1MUXIpGot1NfW3rqWViq/M/pq8DK0i8/RuLDevFYABEGz8Qt3PE=", "scnt": "AAAA-kRFOURGMTYwRDQ1OENCMzNEQjYxRTU5OENBOTI0Q0MyNDQ0MUJDQTkxNTI3REMwQjc5M0Y1NTc2REM2RThERjhCREJGNUQ5NDI0QTkyNDMyMjBGN0Q2MjA1N0RENjczRUUyOEI2Rjc1NDY2NkRERjE5NDlGMDcyMDVCMEUwQkMwMDY2RDBDRURFQTMyRTM0OTY1QjNFQTVBQzY2RDJGOTBCRUFDNUUyODlCNzJCMzM4QjA1RTVENTdCOERERDQwMkJCQzI0RjIxODY2NDAwOEQ0RDcwQzYyRjkwREY2NDExQTU5OURGQzZERTU5QkEzOHwyAAABnYtHDOAIdGLN7q_QgI9AB0GH5OFan9jwoX6JhEYkfqH0K-ydWfBkwqF6Le3-ABEGz6vfU7IlwYBHKE9RVBG8MeYu5XjWFmHIzPcRjW3ImaknBIL7cA", "account_country": "USA", "session_token": "cD1YUhA3Q+BFVazN3KBXOKbVHASxhLLJyWAqVySi3kNzZY4W8ikOiA+sWjs3ROhJcgQh2aErAhxbB3MFVq0h1rdhwbfe6pDtiC1AO7gjuDjCjEJyfZXr4Z5YpeI0ETekbJnNtFrOvxQ5eMdBpXEf9GGOD8FSkBNkl1XYZWdBbsFPKrmGMPEBWcv07pD1XzkONFiwQs71dLPTEwbImkKMjYtTUckv61hjDV9+ktZrYRmRjEhclp3nXkB4a49d88pNVTt9+Dm2MGIuxPvjKogTmE6rLhhxQavVjJrc16zSayrXv30qNiKJfckwSCfcliqWEgICB/I56ZALxbAmvMBWOdB9YPYfvle81KfI1UGrOiXko3G7IzPAA/7voNZqStR0z8FiTiua3GxorxDmUFHezp1kpLgpa+yzNyBobbLP3vbSRC6083rN0XbXM/ad7Tmm2G8FDyzM4XOrE+P2X5mtQcXxlba7ygKq51nP4vM1YrfQYc6ZRgRBJK+vA21i3igPA8awj9zrg4KF5GvMGjwSZ6Tp3wG6MSws909+80bvdp5x22b88k/sjzk2MLNjborCRPz9xC9H/ZAeqjPp6F7S/AqwwEa6RQ34ykiZVLA5dv5bNFteEQZNVO6FmoDBecw3BscsBt6MAHA50mUjq6dvzeZxOOOlpGtgJyOWybyfK3VoevZ03utoYg12dTvLMwGaIyELPhOP6mJFDa2bJxmeDPwkkt+bwk3EVumRudUAhOcIbxXJ52Zt4HuvgzDE/6c+bg9Jbv29cw5njr2P+8VYJO4ghFqmnan+QLnFiwP7Ypacc+Jl0YbEB1bBa/paAnD0wlzYzqS8qi+GQpD5Ro4BFkbS7hMPIvZL1+n4xC3sepc3AAq+0IP6PerQiUn6ORK88JYuRnnMUuwEJcpDtzL/CONusB75h9R4KFIQZl9GykYQ3ZLj+3JerAgvzcFOR0D1OQARBs/I9osU", "trust_eligible": "true", "grant_code": "c610a05475fb544cab5128ff1b920b9a6.0.srzwz.U70T2OR3TxSYAjcY4DHZ9w", "trust_token": "HSARMTKNSRVXWFlajR2ecD1662phQjqU9vXxnL49ZjypuVYYXHDpA3wTiX6Mf2J4WDlIhZj52z81aDOuz+VC80bVhV41TSNN4ggoPjW8WnsQrjniTQYkgJycPQNnzhkK4hfe2AMrr/bhrJJm8sHHc+Oh1HUckN6T7T4c1bmf2Qg9tRwsdRDNyMMyFH/Ml/cQlWKj39/YHlY=SRVX"} \ No newline at end of file +{"client_id": "a803c3ce-2586-11f1-a724-8f6777a1d2b5", "session_id": "31DACD6478D254816871CEC71746594E9EB265E23843BFE54ACC23E6CD21C7967B4A74875C4B64D8D546102A6808900C1DFFE23602181DADE792ED7B73E9C5A4CC7C56CCF9C822DA32264AE474FEDF84ADC645D0F5B9D01FF71B500A76FBE7FF8AA5B0B9A6B0FB8F7A61CDB741E9973C9A04245DF7E939AB", "auth_attributes": "TZEZq6jNK7opptLHNWdfaXDIdIxdU7QFMD77vSobzh8nCntqlxgqc//nJp+R019Uu1BCkbJQ2kQqR1klW6lvKS0MLfWf9rNzaflu5uQgHMQhqOm4MJzIb8Mebqfmh2rsPlbm137EJO468E/sZbLLwl1PKOjj3o1IqEhfG17Xsa7TlxJAfLQorZTGJtMAapcxBu3NJIAnYSJRoY7h11keWBRWxGSb6zuYAy0yXAD4x3Pu7tFVtYwQTiUX3+HrcGFVJa/D8f/3vfiryreNgQX7ABD8oRF8Ooc=", "scnt": "AAAA-jMxREFDRDY0NzhEMjU0ODE2ODcxQ0VDNzE3NDY1OTRFOUVCMjY1RTIzODQzQkZFNTRBQ0MyM0U2Q0QyMUM3OTY3QjRBNzQ4NzVDNEI2NEQ4RDU0NjEwMkE2ODA4OTAwQzFERkZFMjM2MDIxODFEQURFNzkyRUQ3QjczRTlDNUE0Q0M3QzU2Q0NGOUM4MjJEQTMyMjY0QUU0NzRGRURGODRBREM2NDVEMEY1QjlEMDFGRjcxQjUwMEE3NkZCRTdGRjhBQTVCMEI5QTZCMEZCOEY3QTYxQ0RCNzQxRTk5NzNDOUEwNDI0NURGN0U5MzlBQnwyAAABnZQtJsgyKZp42zbZ-0Z4oWrpA3YXiaHUTiSnXR609FFr-Gp8mXl0K2uZyfgHABD8oPi9bmzasngL_Wz-FTxJCZqjsaEPEy_FduILu2V9ZZicjLLe-w", "account_country": "USA", "session_token": "r1NSUQJqcNyXMokmn8eZ7kwyXJSKyZ+bfM6J1EO3EK+JWP5PGpyTXp2LoUGHTr14FeEigC9HrJ+Fldhzd+lFxZ5vwSik14II4CD3cJdJ0OS/+hJRQDEqfW4YPsYHia7RsWL7Bn9NcZ2V2CjwROu7KChcUT0Lpjwz2JVsfkX+h8m25H8Rh3jz5Osz+V7raXq5OlAOx7crzXt2dtuZm0zFlhg0X9lmI/NUmx3GlP4kou82pHPWcLQOa+i5sk86WsyjyhoeeCGS1ShuWch6+Cf+0G4ROe/6xSvnaNWU/Lqe8OMddybR0bbvkIAwsD7roIAxk0kRcL8k4MYUBByIw3C0KUKB1cJDdHTyoTJRq9UtUcH0vb+bbs4j2NfuJGO6k99/iG1yFNUj3X+DewCaEeKlb0sMw4Ja9BRfktZ8ql5/2blPa61cg9CNwUl93OXrJ58ux+QYHGKCQbT9v6YwGOLdfRZ24D9EV6n9nKeXrQg6xazO5R3EOtvmiGltLGFIhIWFb2L56juB1hahXXL4yJRL4w7x0kcPIFwdAFXQ0rJCqHWs/DiijrXDINFRgEeEJroyHKw/heO+yiGnHY8xLh51LoRR+5Wx55NJQm54z2P9JXKUqIjj5KPE1kbOBMJQXsUYL3aNVUbzPfDeOrsNCJ/3O0jjyoNfPvU/YPwCBGD5WjYhQJhvmk5J/QVTLantotSj2tU+NwN+BOiCDrs5cC+DKFTph0mN1xap3TSudHMSKNqlSGQ4kTAJaAcG2ECbraedI3b6WhjRPgiWx/fRCmpxpyPZvldFJq3QQXMM64hPQkk/8KG8D2ZLX1rKvZXZRKHo10PbRGYt8injSUjvgYf26+9sK2rCR/mngu0Rye+0fDG6BI4g2FfQ1v2vZW7Y7Q1UXhNxmXXZE/1Lgv7qm6gbHhOEO6JFCn2XfAt1Iee/purvYvkn0ldiuw20/3TNB6DR4AAQ/KEXuV7c", "trust_eligible": "true", "grant_code": "c9517c9fb90e44df386b19607971fb557.0.srzwz.W1TnJS7PpGpVTWSqASYfRw", "trust_token": "HSARMTKNSRVXWFlajR2ecD1662phQjqU9vXxnL49ZjypuVYYXHDpA3wTiX6Mf2J4WDlIhZj52z81aDOuz+VC80bVhV41TSNN4ggoPjW8WnsQrjniTQYkgJycPQNnzhkK4hfe2AMrr/bhrJJm8sHHc+Oh1HUckN6T7T4c1bmf2Qg9tRwsdRDNyMMyFH/Ml/cQlWKj39/YHlY=SRVX"} \ No newline at end of file diff --git a/geocache.db b/geocache.db index de642ea349c96c1f97d4fe7ecd94ea8ee0d2d858..0adf947a437d88dad829c9b0385e61ea3f210591 100644 GIT binary patch delta 3531 zcmc&%e{2)?760Dl9Q*9^9U)C@ClotQMt+bu_xs1HEzLp+h#)9v0%;YANp4BB5ECaR zkaPrx30jpv!jqs|%Mu8sNS(@PDzQ;2(Au?=8Ubp%G4;o$O+%tdAp{l@lw}Ggiygmq=7hjy6rd@@o{fq0CC)ZxPNh`T>mkVoXp1akNX}R3f64zl<_@_Reiad8|Df2PIPzAoWPLpDqD$6{YwsBR{^enFHx{8k3xWere;9t_oR23jRY!?&2z+ zbx7BEK}XNqI4?sKUn$i`J!%4BHfR8;ks;#4mv&JzeL*SsufwuG*!ukh4V zltYgr_8hbduq%F^OUD16*f z4z7}g?)YHR>}@w;|L)x+ufs%(5~9+Ju}pVH#*u8eHC$HE72nch4n)5jiLOp`nVs=o zC>h=ZlOL)jqrUXRSa8r1bXEgC`KjV=PW29SnMunM{Q5~PG@M?9xi@6E9W{c}PZutZ z)<&YqM7+Z?v_7?Ei<$g!x7pJXSwE08%>gJF8-X?bYRHu?#Y%o+DRCAQ3OWn(6it9T z?H^#Sk{p*VJE{wR+xJkRBF;CqHlFI~fU?(s5Ugwj-RTgPO<)VSf#!7p5a)_Workew zWw3nmtTyUO2W?lJEirsIkRK!yz1t(}y0@9h$lCZo*I;}Hl)Wj!<*nUt#?-3P-RS_< zAz8+p?K7vNsVBbUV9NoRU95&iiF7gMZ_k83zpdc2)rEx$&(9C6ar5THK`4f`=ZD}> zhc>hSgQV-=qtrtlcQs-!``=;S@E!N=p*MRP+|{T13fv{53)7X9@H3aCT@eK}+k(8I zsaAy+3GDr!*g9M_I8b~s6izR};$cf%l!e^e5e-$d#DfmsnzFKki9`n+ z4J?9M^Nmm>{T(b`X63?A?YAmxf^LS{Q9V$szV96p`h~c5b zXQzT@$f{vU@{Ve^#8XMLC)ZV$!fo9>J@HP{YP%Kj{ImNI60A{l9pCp*mEewb+dZS5$Pj^YYt z9-DJ?&Q%<@e0*Ra(Tg>dxK_uv_Lv};LD=~6i5QVCv+M61u=l&9@lvK&tNv05n_7=m zkJhFmI2=3{Vuo`F&som&E8HF{FK9~Q;#%dI=Y0TL!+y9HAA(0`6}Ok%i`J7IxFg^D z|CW^=Bsb7?Yzy-;^Lyqarh??YmBmGFKqoUfxMy);eB8pFd42HWA~%enHcP-UXYt~~ zidJNB$1MH!7uP+n3cc{4#YMT%Z7YEPwYcC^bQgu0SAbMrYY{`XKDHMQPm3vC*WhiD@(*?oa&zh?I5W@i&uX>g8 zRT8tXqI#o6Y=z_1?_dHQh5njGi+BQlQWM^J2L>Cy!R#oR&t&`|p-<$nn?eQ6Q5 zQ4CJiHBzjCHGW|cLzpmPjTASCF2T;&5sQdHxPBwWUB|?5ePRT!<6_GzMO1Uk-kL04 z46pO-McgO&ntP3#=Js(ZZWGtc@mz=_*&FQp?Cb0a_5eG`wy`T&ku7B@|4sj&{O3KB z{*(R*|B%1kzsfKBANJ=npE6gN^URCPIJ1M<%&cN0W|3zvL-{`SUGX)Y_nq{O`?mYq zd@FpsFX$t@*S+s~&v{?)?)MIQ+q^5iqPN6L(%0#C>9h1Sy^l`Oo9N|qJst3TmcFsLCh0_y+3rhlz*$j#<d8(jiZCxS`F?Vy~SXa)$vV8q&S7TFZm*@0!K1vpxv#VZmj! zb)3NK_KB`af&qtX!|+sX02bB-pb!6VuMYI^x}4LaikiC0cK_a)Wc$f0(%qw67o&5q Tkoy&acb*!WgLxa)c&+5WMrL%t delta 242 zcmVClguA94hjGO0F(ls00#vI?gPJ*4j?uJ1q%nglT08OlV%`92n#0- zs|~^o^OLq9GExdb3MvW{3H%A=3C;<(37`)$1Wym@4;usr2EYQJ11|(;2z3vR4IvKJ z4Sfw}4Nnfg4yX+{1Rn%{1UCam4($&F4v`Le2kQeD0{;T%0?z`sv2kw!myinq7_+w` sE)4}RH#ax}m+lJz7P2q|pbiBJjQ|eh4crXZ3)KpZv2l9}vyIww1p{74jQ{`u diff --git a/main.py b/main.py index ca59beb..2f72461 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,7 @@ import tempfile from functools import partial from typing import Annotated import typer +import os from pymobiledevice3.remote.common import TunnelProtocol from pymobiledevice3.remote.module_imports import verify_tunnel_imports @@ -10,7 +11,8 @@ from src.pymd3_vue_location_sim.server import TunneldRunnerSio, LocationSimulati from src.pymd3_vue_location_sim.json_formatter import logger def main(): - cli_tunneld(host="0.0.0.0", port=49151) + port = int(os.getenv("PORT", 49151)) + cli_tunneld(host="0.0.0.0", port=port) def cli_tunneld( host: Annotated[str, typer.Option(help="Address to bind the tunneld server to.")] = TUNNELD_DEFAULT_ADDRESS[0], diff --git a/src/pymd3_vue_location_sim/server.py b/src/pymd3_vue_location_sim/server.py index 81f6b05..600df69 100644 --- a/src/pymd3_vue_location_sim/server.py +++ b/src/pymd3_vue_location_sim/server.py @@ -14,7 +14,6 @@ import httpx from contextlib import suppress from typing import Optional, Dict from dotenv import load_dotenv -from sqlalchemy.util import await_only with warnings.catch_warnings(): # Ignore: "Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater." @@ -205,7 +204,7 @@ class TunneldRunnerSio: await self.context.sio.shutdown() self.host = host - self.port = os.getenv("PORT") + self.port = port self.protocol = protocol self.context = context or LocationSimulationState() self._tunneld_api_address = ( @@ -862,18 +861,18 @@ class TunneldRunnerSio: async def resume_simulation_queue(): """Resumes asyncio.simulation_queue playback""" self.context.simulation_queue_state = "RUNNING" - update_queue_times() + await update_queue_times() - def advance_simulation_queue(): + async def advance_simulation_queue(): self.context.simulation_queue_state = "NEXT" - update_queue_times() + await update_queue_times() - def update_queue_times(): + async def update_queue_times(): current_loc_id = self.context.get_current_loc_id() current_index = get_item_index( current_loc_id) if current_loc_id else 0 remaining_items = self.context.simulation_queue_order[current_index + 1:] - new_delay = self.context.next_move or 0 + new_delay = 0 now_time = datetime.now(timezone.utc) for item in remaining_items: item_delay = parse_delay_seconds( @@ -881,10 +880,11 @@ class TunneldRunnerSio: new_delay += item_delay new_time = ( now_time + timedelta(seconds=new_delay)).isoformat() - self.context.simulation_queue_data[item].start = new_time - update_queue_data() + logger.info("Updating queue time for %s to %s", item, new_time) + self.context.simulation_queue_data[item]["start"] = new_time + await update_queue_data() - def update_queue_data(): + async def update_queue_data(): data = { "simulation_queue": { "active": self.context.simulation_active, @@ -894,7 +894,7 @@ class TunneldRunnerSio: "worker_task": self.context.simulation_task.get_name() if self.context.simulation_task else None, } } - self.context.sio.emit("queue_data_update", { + await self.context.sio.emit("queue_data_update", { "data": data}, namespace="/") async def empty_simulation_queue(): @@ -924,6 +924,11 @@ class TunneldRunnerSio: del self.context.simulation_queue_data[item_id] def reset_queue(): + self.context.simulation_queue_data = {} + self.context.simulation_queue_order = [] + self.context.set_current_loc_id(None) + + def remove_future_items(): current_loc_id = self.context.get_current_loc_id() if current_loc_id and self.context.simulation_active and current_loc_id in self.context.simulation_queue_data: self.context.simulation_queue_order = [current_loc_id] @@ -1122,20 +1127,19 @@ class TunneldRunnerSio: return data async def get_reverse_geocode(data): - latitude = ( - data.get("latitude") + latitude = float( + data.get("latitude", 999) if isinstance(data, dict) - else getattr(data, "latitude", None) + else getattr(data, "latitude", 999) ) - longitude = ( - data.get("longitude") + longitude = float( + data.get("longitude", 999) if isinstance(data, dict) - else getattr(data, "longitude", None) + else getattr(data, "longitude", 999) ) - if latitude and longitude: + if latitude != 999 and longitude != 999: coords = f"{latitude}, {longitude}" rev_geocode = await self.context.reverse_geocode.get_address(latitude, longitude) - logger.info("Reverse Geocoded %s to %s", coords, rev_geocode) return rev_geocode else: return None @@ -1422,7 +1426,7 @@ class TunneldRunnerSio: async def app_clear_queue() -> fastapi.Response: """Clear the simulation queue""" logger.info("Simulation Start Requested ") - await empty_simulation_queue() + clear_future_items() data = {"command_status": "OK", "command_class": "simulation_control", "command": "clear", "message": "Simulation cleared"} return generate_http_response(data) @@ -1644,7 +1648,7 @@ class TunneldRunnerSio: try: match command: case "next": - resp = advance_simulation_queue() + resp = await advance_simulation_queue() return resp case "test-mode": @@ -1664,7 +1668,7 @@ class TunneldRunnerSio: case "clear": """ Clear the simulation queue""" - await clear_future_items() + clear_future_items() return { "command": command, "command_class": "simulation_control", @@ -1741,6 +1745,8 @@ class TunneldRunnerSio: if loc_id and key and value: old_val = self.context.simulation_queue_data[loc_id][key] self.context.simulation_queue_data[loc_id][key] = value + if key == "delay": + await update_queue_times() logger.info( "Location Item Update: %s: %s changed from %s to %s", loc_id, key, old_val, value ) @@ -1933,6 +1939,12 @@ class TunneldRunnerSio: "command_status": "ERROR", "message": f"Unknown operation: {command}", } + @self.context.sio.event + async def reverse_geocode(sid, data: LatLng): + logger.info("OSM Proxy Request from %s, data: %s", sid, data) + rev_geocode = await get_reverse_geocode(data) + return rev_geocode + self._vue_app.include_router(self._app, prefix="/api") self._vue_app.mount( @@ -1943,15 +1955,10 @@ class TunneldRunnerSio: return FileResponse(self._vue_dist + "index.html") def _run_app(self) -> None: - # api = uvicorn.Server(uvicorn.Config(self._app, host=self.host, port=49151, log_level="info")) - # vue = uvicorn.Server(uvicorn.Config(self._asgi_app, host=self.host, port=8087, log_level="info")) - # await asyncio.gather(api.serve(), vue.serve()) - uvicorn.run( self._asgi_app, host=self.host, port=self.port, loop="asyncio", workers=1 ) - class LocationSimulationQueue(LocationSimulation): def __init__(self, dvt, context: LocationSimulationState): super().__init__(dvt) @@ -2055,7 +2062,7 @@ class LocationSimulationQueue(LocationSimulation): name=f"simulation-noise-{loc_id}", ) - def _update_queue_data(self): + async def _update_queue_data(self): data = { "simulation_queue": { "active": self.context.simulation_active, @@ -2065,7 +2072,7 @@ class LocationSimulationQueue(LocationSimulation): "worker_task": self.context.simulation_task.get_name() if self.context.simulation_task else None, } } - self.context.sio.emit("queue_data_update", { + await self.context.sio.emit("queue_data_update", { "data": data}, namespace="/") async def _update_location_item(self, loc_id: str) -> None: @@ -2168,18 +2175,18 @@ class LocationSimulationQueue(LocationSimulation): break self.context.next_move = location_item.get("delay") - 1 self.context.simulation_queue_data[loc_id]["delay"] -= 1 - await self.context.sio.emit( - "simulation_status", - { - "status": self.context.simulation_active, - "loc_id": current_loc_id, - "latitude": current_latitude, - "longitude": current_longitude, - "start": current_start, - "next_move": self.context.next_move, - }, - namespace="/", - ) + # await self.context.sio.emit( + # "simulation_status", + # { + # "status": self.context.simulation_active, + # "loc_id": current_loc_id, + # "latitude": current_latitude, + # "longitude": current_longitude, + # "start": current_start, + # "next_move": self.context.next_move, + # }, + # namespace="/", + # ) await self._update_location_item(loc_id) await asyncio.sleep(1) if self.context.simulation_queue_state == "SHUTDOWN": @@ -2193,7 +2200,7 @@ class LocationSimulationQueue(LocationSimulation): self.context.simulation_queue_data[current_loc_id]["end"] = datetime.now( timezone.utc).isoformat() await self._update_location_item(current_loc_id) - self._update_queue_data() + await self._update_queue_data() await self._stop_noise_task() await self.set(new_latitude, new_longitude) self.context.simulation_queue_data[loc_id]["status"] = "set" @@ -2202,25 +2209,25 @@ class LocationSimulationQueue(LocationSimulation): self._start_noise_task( loc_id, new_latitude, new_longitude) active_loc_id = self.context.get_current_loc_id() - await self.context.sio.emit( - "simulation_status", - { - "status": self.context.simulation_active, - "loc_id": active_loc_id, - "latitude": new_latitude, - "longitude": new_longitude, - "start": new_start, - "next_move": None, - }, - namespace="/", - ) + # await self.context.sio.emit( + # "simulation_status", + # { + # "status": self.context.simulation_active, + # "loc_id": active_loc_id, + # "latitude": new_latitude, + # "longitude": new_longitude, + # "start": new_start, + # "next_move": None, + # }, + # namespace="/", + # ) logger.info( "Set simulated location to %s, %s after %ss delay", new_latitude, new_longitude, new_delay, ) - self._update_queue_data() + await self._update_queue_data() self.context.simulation_queue_pending_ids.discard(loc_id) self.context.simulation_queue.task_done() await self._enqueue_next_queue_item() @@ -2326,7 +2333,7 @@ class LocationSimulationTestQueue(LocationSimulationBase): name=f"simulation-noise-{loc_id}", ) - def _update_queue_data(self): + async def _update_queue_data(self): data = { "simulation_queue": { "active": self.context.simulation_active, @@ -2336,7 +2343,7 @@ class LocationSimulationTestQueue(LocationSimulationBase): "worker_task": self.context.simulation_task.get_name() if self.context.simulation_task else None, } } - self.context.sio.emit("queue_data_update", { + await self.context.sio.emit("queue_data_update", { "data": data}, namespace="/") async def _update_location_item(self, loc_id: str) -> None: @@ -2438,18 +2445,20 @@ class LocationSimulationTestQueue(LocationSimulationBase): break self.context.next_move = location_item.get("delay") - 1 self.context.simulation_queue_data[loc_id]["delay"] -= 1 - await self.context.sio.emit( - "simulation_status", - { - "status": self.context.simulation_active, - "loc_id": current_loc_id, - "latitude": current_latitude, - "longitude": current_longitude, - "start": current_start, - "next_move": self.context.next_move, - }, - namespace="/", - ) + + # await self.context.sio.emit( + # "simulation_status", + # { + # "status": self.context.simulation_active, + # "loc_id": current_loc_id, + # "latitude": current_latitude, + # "longitude": current_longitude, + # "start": current_start, + # "next_move": self.context.next_move, + # }, + # namespace="/", + # ) + await self._update_location_item(loc_id) await asyncio.sleep(1) if self.context.simulation_queue_state == "SHUTDOWN": @@ -2463,37 +2472,37 @@ class LocationSimulationTestQueue(LocationSimulationBase): self.context.simulation_queue_data[current_loc_id]["end"] = datetime.now( timezone.utc).isoformat() await self._update_location_item(current_loc_id) - self._update_queue_data() + await self._update_queue_data() await self._stop_noise_task() await self.set(new_latitude, new_longitude) self.context.simulation_queue_data[loc_id]["status"] = "set" await self._update_location_item(loc_id) self.context.set_current_loc_id(loc_id) if self.context.simulation_noise: - self._start_noise_talk( + self._start_noise_task( loc_id, new_latitude, new_longitude) active_loc_id = self.context.get_current_loc_id() - await self.context.sio.emit( - "simulation_status", - { - "status": self.context.simulation_active, - "loc_id": active_loc_id, - "latitude": new_latitude, - "longitude": new_longitude, - "start": new_start, - "next_move": None, - }, - namespace="/", - ) + # await self.context.sio.emit( + # "simulation_status", + # { + # "status": self.context.simulation_active, + # "loc_id": active_loc_id, + # "latitude": new_latitude, + # "longitude": new_longitude, + # "start": new_start, + # "next_move": None, + # }, + # namespace="/", + # ) logger.info( "Set simulated location to %s, %s after %ss delay", new_latitude, new_longitude, new_delay, ) - self._update_queue_data() + await self._update_queue_data() self.context.simulation_queue_pending_ids.discard(loc_id) self.context.simulation_queue.task_done() await self._enqueue_next_queue_item() finally: - await self._stop_noise_talk() + await self._stop_noise_task()