postlund / pyatv

A client library for Apple TV and AirPlay devices
https://pyatv.dev
MIT License
891 stars 100 forks source link

Position error when polling #2321

Open mschwartz opened 10 months ago

mschwartz commented 10 months ago

Describe the bug

This seems to be new with the 17.2 version of tvOS...

When I poll every second in a loop, using:

      playing = await atv.metadata.playing()

I am getting 0 for position for the first minute or minute and a half (it varies) and then position is off by that amount of time - it starts counting from 0, 1, 2, ... after the first minute/minute and a half.

However, if I do this, the position value is correct:

watch -n 1 atvscript -s 192.168.100.17 -i 58:D3:49:EE:6F:D2 --dmap-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 --mrp-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 --airplay-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 --companion-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 --raop-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 playin

push_updates prints once and hangs

cls && atvremote -s 192.168.100.17 --airplay-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 push_updates

Press ENTER to stop
  Media type: Unknown
Device state: Playing
       Title: Batting Practice with a USSSA Conference Pro: Brandon Traylor | ASA / USSSA Slowpitch Softball
      Artist: League Night Softball
       Album: 
    Position: 694/732s (94.8%)
      Repeat: Off
     Shuffle: Off
--------------------

The position 694/732 is correct in this case.

If I pause and play on the remote, it updates the position with correct values.

Error log

See below

How to reproduce the bug?

Call metadata.playing() in a loop with a delay of 1 second between, print the position.

This fails with YouTube and Computers (playing over LAN from shared library), Netflix, etc.

What is expected behavior?

When the video starts playing, position should immediately start at 1 and each second increment by 1.

Operating System

MacOS and Linux

Python

3.6

pyatv

whatever is installed when I pip3 install pyatv

Device

Apple TV OS 17.2

Additional context

This happens on all my ATVs, of various generations. I have one from previous generation, and one from the year before that exhibit the problem for sure.

mschwartz commented 10 months ago
```log

cls && atvremote --debug -s 192.168.100.17 --airplay-credentials 060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626:7764b0b44b76f6c96f5c6dd00e265107d2d8066055939aa7a3b74da46309af30:32343236343330412d424141362d343346362d383844382d304644383242374539464533:39626231356131392d336631322d343336342d383165322d303834363864383833373534 push_updates

2024-01-01 00:33:41 DEBUG [pyatv.scripts]: Running with pyatv 0.14.5
2024-01-01 00:33:41 DEBUG [pyatv.support.knock]: Knocking at port 3689 on 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv.support.knock]: Knocking at port 7000 on 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv.support.knock]: Knocking at port 49152 on 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv.support.knock]: Knocking at port 32498 on 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv.core.scan]: Auto-discovered THEATER at 192.168.100.17:7000 via Protocol.AirPlay ({'acl': '0', 'btaddr': '00:00:00:00:00:00', 'deviceid': '58:D3:49:EE:6F:D2', 'fex': '1d9/St5/F7w4oQY', 'features': '0x4A7FDFD5,0xBC177FDE', 'flags': '0x118644', 'gid': 'BE972F9D-7B7B-4623-A479-ACA945B5C7F7', 'igl': '1', 'gcgl': '1', 'model': 'AppleTV11,1', 'protovers': '1.1', 'pi': 'f1783640-7115-423e-886a-b61050a7b0c7', 'psi': '2426430A-BAA6-43F6-88D8-0FD82B7E9FE3', 'pk': '14a763c3ed3d09a0ecaa2592f0d9c927160210659010a014dcf38f6a82adf82c', 'srcvers': '750.14.2', 'osvers': '17.2', 'vv': '1'})
2024-01-01 00:33:41 DEBUG [pyatv.core.scan]: Auto-discovered THEATER at 192.168.100.17:49401 via Protocol.Companion ({'rpmac': '1', 'rphn': '3929dbb7bc36', 'rpfl': '0xB67A2', 'rpha': '569ad45318b1', 'rpmd': 'AppleTV11,1', 'rpvr': '523.1.2', 'rpad': '7367cf8494e0', 'rphi': '585fb2fa3d9b', 'rpba': '3B:4E:09:76:CF:8D', 'rpmrtid': '2426430A-BAA6-43F6-88D8-0FD82B7E9FE3'})
2024-01-01 00:33:41 DEBUG [pyatv.core.scan]: Auto-discovered 58D349EE6FD2@THEATER at 192.168.100.17:7000 via Protocol.RAOP ({'cn': '0,1,2,3', 'da': 'true', 'et': '0,3,5', 'ft': '0x4A7FDFD5,0xBC177FDE', 'sf': '0x118644', 'md': '0,1,2', 'am': 'AppleTV11,1', 'pk': '14a763c3ed3d09a0ecaa2592f0d9c927160210659010a014dcf38f6a82adf82c', 'tp': 'UDP', 'vn': '65537', 'vs': '750.14.2', 'ov': '17.2', 'vv': '1'})
2024-01-01 00:33:41 INFO [pyatv.scripts.atvremote]: Auto-discovered THEATER at 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv]: Loading settings from FileStorage:/root/.pyatv.conf
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.AirPlay
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay]: Remote control channel is supported
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.MRP
2024-01-01 00:33:41 DEBUG [pyatv.protocols.companion]: Not adding Companion as credentials are missing
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.MRP
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Adding handler for protocol Protocol.RAOP
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.AirPlay
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.AirPlay
2024-01-01 00:33:41 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.MRP
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay.ap2_session]: Setting up remote connection to 192.168.100.17:7000
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Connected to 192.168.100.17
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay.auth]: Setting up new AirPlay Pair-Verify procedure with type AuthenticationType.HAP
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-verify HTTP/1.1\r\nContent-Length: 37\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 3\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x01\x03 _\x8d\xe5PD\xe3\xd2,{\x92*\xd8\xdf\x971\xe1\x82P\x05\x05\x1e\xd2i\x80\x0e\x1c\xb6d\x990[H'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:41 GMT\r\nContent-Length: 159\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/750.14.2\r\n\r\n\x05x\x8c\xf2\xeci\xddI4\x81\xb9_J\xed\xfe&\xa5\x11\x03\xd6\xc4\x84B\xea\x174p\x0b\x9eM\xfd\x03!\x15\xf8\x1d\xcc/"\n\xab\x95\xb9\x14\xe7\x85\xfd\x1a\xce\xaf\xf5\xb9\x04R\x9d\x8dF\xf7\x17\xd5tAD\x91OO(\r9\x1fy\x92\xce\xd7Vl9@\xd8\xe8\x19n\xc7\x81\xbb\x17\xd9\xcd\xfbD\x82\x16\x8e\x9a\xf6o\xfaaF\x99\xe1l\x94\x03o\x93\x84\xa5\x9f\xa2\x13o`\xff\x9b\xe1\xce4\xfdrX\xf3\x06\x01\x02\x03 \x94?\xcey\xc5/\x9dAY\xf4\xfa\xe7\xd9f!t\x08\x02\x106\xd0n-d\xd6\x9a\xef\xf4H8g\x0e'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:41 GMT', 'Content-Length': '159', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/750.14.2'}, body=b'\x05x\x8c\xf2\xeci\xddI4\x81\xb9_J\xed\xfe&\xa5\x11\x03\xd6\xc4\x84B\xea\x174p\x0b\x9eM\xfd\x03!\x15\xf8\x1d\xcc/"\n\xab\x95\xb9\x14\xe7\x85\xfd\x1a\xce\xaf\xf5\xb9\x04R\x9d\x8dF\xf7\x17\xd5tAD\x91OO(\r9\x1fy\x92\xce\xd7Vl9@\xd8\xe8\x19n\xc7\x81\xbb\x17\xd9\xcd\xfbD\x82\x16\x8e\x9a\xf6o\xfaaF\x99\xe1l\x94\x03o\x93\x84\xa5\x9f\xa2\x13o`\xff\x9b\xe1\xce4\xfdrX\xf3\x06\x01\x02\x03 \x94?\xcey\xc5/\x9dAY\xf4\xfa\xe7\xd9f!t\x08\x02\x106\xd0n-d\xd6\x9a\xef\xf4H8g\x0e'):
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay.auth.hap]: Device (Encrypted=8cf2ec69dd493481b95f4aedfe26a51103d6c48442ea1734700b9e4dfd032115f81dcc2f220aab95b914e785fd1aceaff5b904529d8d46f717d5744144914f4f280d391f7992ced7566c3940d8e8196ec781bb17d9cdfb4482168e9af66ffa614699e16c94036f9384a59fa2136f60ff9be1ce34fd7258f3, Public=060ebb767e780ddc21e74f56fec233697ff154ace425bb416054f0a60d44a626)
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Sending HTTP/1.1 message: b'POST /pair-verify HTTP/1.1\r\nContent-Length: 125\r\nUser-Agent: AirPlay/320.20\r\nConnection: keep-alive\r\nX-Apple-HKP: 3\r\nContent-Type: application/octet-stream\r\n\r\n\x06\x01\x03\x05xa\xc6\x99q\x190)\r\xe8\x17z\x90\xcdT\x15\x97we\xfeQ\xb4\xd0\xadn\x910W\xe6\xaa\xef\x0f-\xa9\xc4i0\x97\n\x07J\xda\xfa\x15\x1aQ\xf03]\xea\xf1\xc7\xa34\\F\xf3\xd6\xd65i|\x90\xf1\xa5\x97n\xda\xee\xe3\t\xca\xa9my>\xa5Ls\x17Z\x81\t;\xeev\x11-\xae\xcd\x80)\x0e(\xdd!\xd2\xa6|\x14)&>\xf2r03\x15\x93@\xff\x15\xc9\xe6\xa6H\x8f\x0b\xcby\x0b'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Received: b'HTTP/1.1 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:41 GMT\r\nContent-Length: 3\r\nContent-Type: application/octet-stream\r\nServer: AirTunes/750.14.2\r\n\r\n\x06\x01\x04'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Got HTTP response: HttpResponse(protocol='HTTP', version='1.1', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:41 GMT', 'Content-Length': '3', 'Content-Type': 'application/octet-stream', 'Server': 'AirTunes/750.14.2'}, body=b'\x06\x01\x04'):
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_srp]: Keys (Input=b5b028f2541dd1a225650f51b8ef5ece9d2f0995141072a0638cbb44247f132e, Output=2a280159dbd70119aa17021fc9c87477364f82a7305b4c76f37c9d88b6a3f27e)
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.65.3/1491855816 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 367\r\nCSeq: 0\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xdb\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16XdeviceID_\x10\x13isRemoteControlOnlyZmacAddressUmodelTname^osBuildVersionVosNameYosVersion[sessionUUID]sourceVersion^timingProtocol_\x10\x11FF:70:79:61:74:76\t_\x10\x1102:70:79:61:74:76ZiPhone10,6UpyatvU18G82YiPhone OSV14.7.1_\x10$EB5390D0-A134-408A-A74D-88B080F8884BV550.10TNone\x00\x08\x00\x1f\x00(\x00>\x00I\x00O\x00T\x00c\x00j\x00t\x00\x80\x00\x8e\x00\x9d\x00\xb1\x00\xb2\x00\xc6\x00\xd1\x00\xd7\x00\xdd\x00\xe7\x00\xee\x01\x15\x01\x1c\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01!'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:41 GMT\r\nContent-Length: 59\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/750.14.2\r\nCSeq: 0\r\n\r\nbplist00\xd1\x01\x02YeventPort\x11\xf1\x18\x08\x0b\x15\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:41 GMT', 'Content-Length': '59', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/750.14.2', 'CSeq': '0'}, body=b'bplist00\xd1\x01\x02YeventPort\x11\xf1\x18\x08\x0b\x15\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18'):
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_srp]: Keys (Input=7e7f9faeeb0a12a93666c4bb2e4e8e892913f2bf15b775f58064e4a92dd4fc78, Output=42ce40cabcf8d693b35879bc5ce49eed2bd47628b3cfff076d5f19bbed537a90)
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Connected to 192.168.100.17:61720
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'RECORD rtsp://192.168.65.3/1491855816 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 1\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\n\r\n'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:41 GMT\r\nContent-Length: 0\r\nAudio-Latency: 0\r\nServer: AirTunes/750.14.2\r\nCSeq: 1\r\n\r\n'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:41 GMT', 'Content-Length': '0', 'Audio-Latency': '0', 'Server': 'AirTunes/750.14.2', 'CSeq': '1'}, body=''):
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'SETUP rtsp://192.168.65.3/1491855816 RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nContent-Length: 298\r\nCSeq: 2\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\nContent-Type: application/x-apple-binary-plist\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd7\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11YchannelID^clientTypeUUIDZclientUUID[controlTypeTseedTtype_\x10\x14wantsDedicatedSocket_\x10$B6E528EE-A407-4959-A8A3-CA5F819772B4_\x10$1910A70F-DBC0-4242-AF95-115DB30604E1_\x10$DABB3098-97AC-4B37-831E-BABDCD3F1A73\x10\x02\x13\x11\xd2\x16[\\\xd5\xb7\xd8\x10\x82\t\x08\x0b\x13\x15$.=HTY^u\x9c\xc3\xea\xec\xf5\xf7\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8'
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Received data (Data=0004aaff25bfaa444c06fbfd345165d3ce01abdb52749360e74cbcb1c085cc6a19a2175589faa822a4eacc2874bde5bee4e10b9a7cd772ad8d313e5dd425da32f8d80adf89ee3d8d0a0b3f5717db1b3184d75e9747af7c3ffc1034cc7b7c4b49fb6f06b25c09d79a7803b2ba77499b13393aa37e0aa7fe8ee6cf5386b8fefafed4f7e54a98a90502aaf9c0335b348e1acdc773c4b00cfd3eb04eb5c0a685ae7f4d661d79035e096c7da4eaca3efac2b66b316726228d12f6d7d9bc02407ba99c353fe2f0949ac7bf55a2cad5fc0fca7fe8fbef528cf95dc6a88ef8a3cd20d383c2876690a5254bd866bb60d8c0bab24cef3afa598236a49bd0be011a709f6...)
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay.channels]: Got message on event channel: HttpRequest(method='POST', path='/command', protocol='RTSP', version='1.0', headers={'CSeq': '0', 'Content-Length': '1683', 'Content-Type': 'application/x-apple-binary-plist'}, body=b'bplist00\xd2\x01\x02\x03\x04TtypeUvalueZupdateInfo\xdf\x10\x1a\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f 67>E?GHIJKL>NOPQ?ST[\\]^_Spsi_\x10\x1dsupportedAudioFormatsExtendedRvv_\x10\x14playbackCapabilities_\x10\x15canRecordScreenStream[statusFlags_\x10\x18keepAliveSendStatsAsBodyTname_\x10\x0fprotocolVersion_\x10\x11volumeControlType]senderAddressXdeviceIDRpi^screenDemoMode]initialVolumeZfeaturesExZtxtAirPlay]sourceVersion_\x10\x16hasUDPMirroringSupportUmodel_\x10\x10supportedFormatsRpkZmacAddress^osBuildVersion_\x10\x15receiverHDRCapabilityXfeatures_\x10$2426430A-BAA6-43F6-88D8-0FD82B7E9FE3\xd1!"\\bufferStream\xaf\x10\x13#$%&\'()*+,-./012345\x10J\x10K\x10G\x108\x10=\x10\x16\x107\x10\'\x10H\x10(\x10\x15\x10\x17\x10\x13\x10F\x10:\x10<\x10I\x109\x106\x10\x01\xd689:;<=>???>?_\x10\x12supportsOfflineHLS_\x10\x1dsupportsUIForAudioOnlyContent_\x10\x15supportsInterstitials_\x10\x15supportsFPSSecureStop_\x10\x18supportsStopAtEndOfQueue_\x10!supportsAirPlayVideoWithSharePlay\x08\t\t\t\x08\t\x08\x12\x00\x11\x86D\tWTHEATERS1.1\x10\x04_\x10\x12192.168.0.13:61570_\x10\x1158:D3:49:EE:6F:D2_\x10$f1783640-7115-423e-886a-b61050a7b0c7\x08#\x00\x00\x00\x00\x00\x00\x00\x00_\x10\x0f1d9/St5/F7w4oQYO\x11\x01\x89\x05acl=0\x18btaddr=00:00:00:00:00:00\x1adeviceid=58:D3:49:EE:6F:D2\x13fex=1d9/St5/F7w4oQY\x1efeatures=0x4A7FDFD5,0xBC177FDE\x0eflags=0x118644(gid=BE972F9D-7B7B-4623-A479-ACA945B5C7F7\x05igl=1\x06gcgl=1\x11model=AppleTV11,1\rprotovers=1.1\'pi=f1783640-7115-423e-886a-b61050a7b0c7(psi=2426430A-BAA6-43F6-88D8-0FD82B7E9FE3Cpk=14a763c3ed3d09a0ecaa2592f0d9c927160210659010a014dcf38f6a82adf82c\x10srcvers=750.14.2\x0bosvers=17.2\x04vv=1X750.14.2\t[AppleTV11,1\xd4UVW!XYYZ_\x10\x15lowLatencyAudioStream\\screenStream[audioStream\x10\x00\x12\x01D\x08\x00\x137\xc0\x01\x80\x00\xe8\x00\x00O\x10 \x14\xa7c\xc3\xed=\t\xa0\xec\xaa%\x92\xf0\xd9\xc9\'\x16\x02\x10e\x90\x10\xa0\x14\xdc\xf3\x8fj\x82\xad\xf8,_\x10\x1158:D3:49:EE:6F:D2V21K365T4k60\x13\xbc\x17\x7f\xdeJ\x7f\xdf\xd5\x00\x08\x00\r\x00\x12\x00\x18\x00#\x00Z\x00^\x00~\x00\x81\x00\x98\x00\xb0\x00\xbc\x00\xd7\x00\xdc\x00\xee\x01\x02\x01\x10\x01\x19\x01\x1c\x01+\x019\x01D\x01O\x01]\x01v\x01|\x01\x8f\x01\x92\x01\x9d\x01\xac\x01\xc4\x01\xcd\x01\xf4\x01\xf7\x02\x04\x02\x1a\x02\x1c\x02\x1e\x02 \x02"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02O\x02d\x02\x84\x02\x9c\x02\xb4\x02\xcf\x02\xf3\x02\xf4\x02\xf5\x02\xf6\x02\xf7\x02\xf8\x02\xf9\x02\xfa\x02\xff\x03\x00\x03\x08\x03\x0c\x03\x0e\x03#\x037\x03^\x03_\x03h\x03z\x05\x07\x05\x10\x05\x11\x05\x1d\x05&\x05>\x05K\x05W\x05Y\x05^\x05g\x05\x8a\x05\x9e\x05\xa5\x05\xaa\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\xb3')
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=5b00684bc07389c610b03a28c7b6eb55bb107bacad85a0759b53c8406b73b2c963a9910a26a0ea07fd4a00668c3e3d30679d385874286ebd5995701a33546dd576fc6417bbc2dfbb5115b85147520b9e7ccadc29cf2f2b4db7aa51a7d865b71df0bd31d357760416ce73af57dd)
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:41 GMT\r\nContent-Length: 100\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/750.14.2\r\nCSeq: 2\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXstreamIDXdataPort\x10\x82\x10\x01\x11\xf1\x19\x08\x0b\x13\x15\x1c!*357\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:'
2024-01-01 00:33:41 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:41 GMT', 'Content-Length': '100', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/750.14.2', 'CSeq': '2'}, body=b'bplist00\xd1\x01\x02Wstreams\xa1\x03\xd3\x04\x05\x06\x07\x08\tTtypeXstreamIDXdataPort\x10\x82\x10\x01\x11\xf1\x19\x08\x0b\x13\x15\x1c!*357\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:'):
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_srp]: Keys (Input=ce36fb5f2849e4862ef900e2a5386e4cbdfa42128ea3cce40513334ff5536b02, Output=4ffd19bb1fcac56bba143ac0a5d7ecfbd8457581eb30082ccae6a2aa1cdfb2f2)
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Connected to 192.168.100.17:61721
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=3b013a435ac63509d098acea37d19b66840b9a76ed06fa3a29cce43f302e3a3a8eb619c81845e8bee96a80b32d77f3097cdd635cae913df765b556d0574e3c1f10a5a4ff6bbbbbf6b1839966066a5d865fc6a59e5bc12b8eb7e29dfcdbe538cbfc18ed40d84d754a17ab082c8ea8d21146f05e7b6df6c47847d83fe8d1bf79531518365872689150e8dadd5f4e380740209094088cdd7944174c78b6f233ebb8d429af645ac5995f945cba4bc8d9a2b1df9d228b22cc0bd0dfff5ae088a5b46d11ed49900c4e94d8728ea8e0292f7b8278f963cc0e023617e8604f39df21082a1f02e5eb0426ba28b355e45ad5b3c0b9cc41f1965ede5a77a211886df5833...)
2024-01-01 00:33:41 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: DEVICE_INFO_MESSAGE
identifier: "3CC12EC6-EDBA-4420-AB6D-5DAFC02AC3A3"
errorCode: NoError
[deviceInfoMessage] {
  uniqueIdentifier: "eb964d7c-eafe-4c8f-a138-f17288fcd80b"
  name: "pyatv"
  localizedModelName: "iPhone"
  systemBuildVersion: "18G82"
  applicationBundleIdentifier: "com.apple.TVRemote"
  applicationBundleVersion: "344.28"
  protocolVersion: 1
  lastSupportedMessageType: 108
  supportsSystemPairing: true
  allowsPairing: true
  systemMediaApplication: "com.apple.TVMusic"
  supportsACL: true
  supportsSharedQueue: true
  supportsExtendedMotion: true
  sharedQueueVersion: 2
  deviceClass: iPhone
  logicalDeviceCount: 1
}
uniqueIdentifier: "7B38A907-AD98-41CC-99FD-0D8348288DFD"
2024-01-01 00:33:41 DEBUG [pyatv.core.protocol]: Starting heartbeat loop (AirPlay:192.168.100.17)
2024-01-01 00:33:41 DEBUG [pyatv.auth.hap_channel]: Received data (Data=200067eb025debeb94b2a66f4011e9c7a60047007e1a906ba30a5145cdfd210272e2946a20271249b722fc2c82c87db641362a0021c04fdb04b08ebf35a806482fd100639b9635c37c9dd74e7af54d2399c38321b558435cf6d0ca9a09a3ca65a6f2e0ebeff07a731e890b8731e6)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000a597be1f57df90f25179fda203c098572d6f8cdd5acc171ac704cd0c7528c73b1255208ddf795923bfc5d41b969515486a0208eeff173c6c87ef2917ffefaeb9043d03e00ad2758d5bcdd2674abdad753638bd11cd8a435fe770628c3859df43148b0f547f46e7ac11130322f9ffa3717ae7f3252629f40c82c0b6dd6019f4dd86418a450d4abc6cd618aea433d053596e0eddc1e76bb970312e6db19a309241221a5e86b4976b169312f218012629967b34d29c082f77318712208b9a162477b06d5e1e54d1afdbf07369ab266470d4ff89d680eccce1d52eec9ed2ce09054171b2328a6ca2b2d7b00c533a7e1cb5e7c350a49d6e1b101b8f33066cb...)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: DEVICE_INFO_MESSAGE
identifier: "3CC12EC6-EDBA-4420-AB6D-5DAFC02AC3A3"
[deviceInfoMessage] {
  uniqueIdentifier: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
  name: "THEATER"
  localizedModelName: "Apple\302\240TV"
  systemBuildVersion: "21K365"
  applicationBundleIdentifier: "com.apple.mediaremoted"
  protocolVersion: 1
  lastSupportedMessageType: 132
  supportsSystemPairing: true
  allowsPairing: true
  systemMediaApplication: "com.apple.TVMusic"
  supportsACL: true
  supportsSharedQueue: true
  supportsExtendedMotion: true
  sharedQueueVersion: 3
  deviceUID: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
  managedConfigDeviceID: "58:d3:49:ee:6f:d2"
  deviceClass: AppleTV
  logicalDeviceCount: 1
  isProxyGroupPlayer: false
  groupUID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
  isGroupLeader: true
  isAirplayActive: false
  systemPodcastApplication: "com.apple.podcasts"
  senderDefaultGroupUID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
  airplayReceivers: "TVAirPlay"
  clusterType: 0
  isClusterAware: true
  modelID: "AppleTV11,1"
  supportsMultiplayer: false
  routingContextID: "577E1BCA-2D9B-41C2-A8F8-C515CE8072D4"
  airPlayGroupID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
  systemBooksApplication: "com.apple.TVBooks"
  parentGroupContainsDiscoverableGroupLeader: 0
  groupContainsDiscoverableGroupLeader: 1
  lastKnownClusterType: 2
  supportsOutputContextSync: true
  computerName: "THEATER"
  configuredClusterSize: 0
  preferredEncoding: Default
}
uniqueIdentifier: "DD26E5B3-CC06-461A-9589-F3056EAD2A0D"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=20000b3bb2bc3f44baf253dc63e1fa393c56974df04f11f4eab9f1d712725ce01419414b3cb29921ab1a6cd7e50d6642e887)
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 15 to <bound method MrpPower._update_power_state of <pyatv.protocols.mrp.MrpPower object at 0xffff7b70ac50>>
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 15 to <bound method MrpAudio._update_output_devices of <pyatv.protocols.mrp.MrpAudio object at 0xffff7b70ad50>>
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=930096ad133087bfe5f17fb59108ae5bc063c6d73ceac46b84ead45eacd188f8f3bbeaa8c69fd17eb8ec7f2939af2c04a593eeb5f34eb2690b5b88bb7b9ed087c85166d92cd71a71febc79c32ead1a9b9dee54830be05f3f37799a5b2ac5229e52acf8ec4f5613757f0adec7a534737e6a464f53b655631dbd01b5242791376ba0db9871f4f0f52e07897a030f5c076e2077de4888fe8421ef6b433d2dad37e18f8cd073c7)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: SET_CONNECTION_STATE_MESSAGE
errorCode: NoError
[setConnectionStateMessage] {
  state: Connected
}
uniqueIdentifier: "946C6649-E9EC-4B77-A755-58DA8E2CE1B0"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=c10073ebcc58b7ce61e515d7875de05203f18bee83c4f51c39e2273fa2f4fbdb30bdd74c50f274835a6200007523adf9b5173cee7a82786119c7f314335ba902c39c6d1b1a11bff11644e8b66d60500afc6722a0a29b0ca6675f710594416c22e022ef056438bfad3382377a3fa57e9a563102a459d495a44880cb1282cfd52176cdbff05a94da79ffa6046d3dd965f98b242a89afc81126b13c7e977660b43cc2de71e1c928855fa6cf5b3408eb2e9e1b56c9891055e06410e9d792ad855dafb1809545a873ec075c911a355cc8c9613c19b2)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: CLIENT_UPDATES_CONFIG_MESSAGE
identifier: "31556D0A-7203-46E7-B0AE-345FD1E1FB49"
errorCode: NoError
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: false
  volumeUpdates: true
  keyboardUpdates: true
  outputDeviceUpdates: true
}
uniqueIdentifier: "DE633C02-C888-49E4-AEED-B5B29A1138DC"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type UpdatedState.OutputDevices to <bound method FacadeAudio._output_devices_changed of <pyatv.core.facade.FacadeAudio object at 0xffff7e790090>>
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000d7ae13cb3fd514cb0133b8a3f0eb4eb731287ad23ab83516bf84054a65b73f2dde7a25f111a783d4982cf53a441300d02a006ce2a0a16ae562bc6c7f06725a50fed47c4f30f353fb0540ec8e878dadf6c9a470a74180408ee1dc7fc9b96f842d8013db465fccd098f2b3e5bd)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=200087145c34c9ed50cd1cfbe271e72793c8d5b4ce3e03030932c2ca7aa8f5548786bd02f326c95072da4f8b30d35c5878272a003dc287429da5bf70db3830bb27b8a336061e440f5572a5ef30ef441af69486208587764fb60aa4238b3a23e453e41e33eec1b9ae57b91e223c64)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=20002e340c159a0f0607a0922461566382108561b82fdf56eff21c58cccb1932b3140b8ee79082e0b70737ef83b60755c4a37100082927f8e912729d3166351004e9f304327409fc0c5c86cef7e4dfab9b11dd1b309aeb2e562b88c0df358f22d6ee4c1da936947313b942656ffe82ca011c3c0f7b7526d49b5feecda780df8c09fd4656de012511e73937aca4809af181fda24e3754c1fa4193af808d51e5ca5a9374ec4bdf2f489fb3b9dcbfb6b6cef570a9e776)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: REGISTER_FOR_GAME_CONTROLLER_EVENTS_MESSAGE
[registerForGameControllerEventsMessage] {
  1: 6
}
uniqueIdentifier: "D1B4A5DB-1117-41D1-97BB-B73EC297152A"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=2000395aa0c49a1127609c5b464a6c6e457c4cfcf43204b3d4793dd561bd5f3ec75ce451106f908996eaca5a638d6769d19a)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000313ca91aec7d26da47b901c241525eda5c875b31200f5e1cb4b3ee983587482db7964092a1c9e9b9887936a957b502b3)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.channels]: Not enough data on data channel (has 32, expects 14314)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=ca377e3311e850193e727125bfb7372a2ad6adede0566226497567697cdfe3f2d1d992432bf5146dba00a897d5994be3510edd70489bc274ff9458bd0364ad29fa7a43eb0001f3edb89aa1554df4698cde67fd87a859209a37b4c9f5f51c4d5602bf3676c43511e5b8d050de3a1dba3ef5843f36f3f47191f2adffda0d2c88432b1232785280b0318751217d5baba2e658735a9f62e5aa10c415634b437822a515879905dec6b8599316b6fa0f659a144b1cd1da8bd46557e15aa80adc523ae8d43bf6b65bdb286fc35f81cacd1a97dddd76edf894f7aacc63b99b2bce04c751d7937487be029504cf9545fa901685545b18b2d6b7f925a257ad2555a0125...)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=1b97d341149c0989b88461605cf18b8781bf063472c551ad3d5d40ccffd8f1aa0565569106f04c07671636cac2130d06051dde614f61972f34c1317816128f9d25c8ce59c3dde82da3a00ec9e009f1fa88897121f77fcd59310dfd92897236c3b8dd68e6d57235478fe03f23eb68304c81bc42303473ebc265779e0088d151e20cdb9ce09d12634e0f151cbbb268a51bbc780ce8e071263604727bfab452df422769278d9c17ef03cb7bd4814c388191c206f82eafa4ef75f06bd88adcc8a61615e223a8ec56b30c210c8d2675521e5c909eaf10559ef40ff8c1b4cbe898a100f9c96ac85a21293a9192f99353071a0363f474e5719480e1353f6299c1384...)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=37fc2dd5059b625608f347d3bb7c07052703b6f2e58f4b5f9d939b4e2ec1f89ba53237a89ba787b4f767fdb7df341503bb48dca96563755a60bd5e8b1e962179fc0bafd397d4809ead29a16be9e500200f707726248cf452e862192891a569c503d2ae430cd07aa7c8ba5ebb9cdd454618f12f378b622b23500fc7cce0595938ac109cb15d770c0fa15fce52ad38d53634711e71de01d1e0beccb7cc65e15e5ca638bfcd25499cb243d8d58605eb61932d5dd95811d2f54370f73cf9a45b57f4915f773be3a47ce1f630ff2c1670db2599ea7fe72755e016000dc91d58acb7bb56412c852d00ac1d7c492bc36f29d02ac66f584510b1c5d7f1198862c6969...)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_OUTPUT_DEVICE_MESSAGE
[updateOutputDeviceMessage] {
  outputDevices {
    name: "THEATER"
    uniqueIdentifier: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
    groupID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
    modelID: "AppleTV11,1"
    canAccessRemoteAssets: false
    isRemoteControllable: true
    isGroupLeader: true
    isGroupable: true
    deviceType: AirPlay
    deviceSubType: AppleTV
    isLocalDevice: false
    supportsExternalScreen: false
    requiresAuthorization: false
    sourceInfo {
      multipleBuiltInDevices: false
    }
    isDeviceGroupable: false
    canRelayCommunicationChannel: false
    isProxyGroupPlayer: false
    canAccessAppleMusic: false
    canAccessiCloudMusicLibrary: false
    groupContainsGroupLeader: true
    supportsBufferedAirPlay: false
    canPlayEncryptedProgressiveDownloadAssets: false
    canFetchMediaDataFromSender: false
    resentsOptimizedUserInterfaceWhenPlayingFetchedAudioOnlyAssets: false
    isAirPlayReceiverSessionActive: false
    parentGroupContainsDiscoverableLeader: false
    isAddedToHomeKit: false
    supportsHAP: false
    usingJSONProtocol: false
    clusterType: 0
    primaryUID: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
    configuredClusterSize: 0
    supportsRapportRemoteControlTransport: false
    supportsMultiplayer: false
    producesLowFidelityAudio: false
    hostDeviceClass: 4
    supportsSharePlayHandoff: false
    discoveredOnSameInfra: false
    pickable: true
    transportType: 0
    isClusterLeader: false
    isAppleAccessory: false
  }
  clusterAwareOutputDevices {
    name: "THEATER"
    uniqueIdentifier: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
    groupID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
    modelID: "AppleTV11,1"
    canAccessRemoteAssets: false
    isRemoteControllable: true
    isGroupLeader: true
    isGroupable: true
    deviceType: AirPlay
    deviceSubType: AppleTV
    isLocalDevice: false
    supportsExternalScreen: false
    requiresAuthorization: false
    sourceInfo {
      multipleBuiltInDevices: false
    }
    isDeviceGroupable: false
    canRelayCommunicationChannel: false
    isProxyGroupPlayer: false
    canAccessAppleMusic: false
    canAccessiCloudMusicLibrary: false
    groupContainsGroupLeader: true
    supportsBufferedAirPlay: false
    canPlayEncryptedProgressiveDownloadAssets: false
    canFetchMediaDataFromSender: false
    resentsOptimizedUserInterfaceWhenPlayingFetchedAudioOnlyAssets: false
    isAirPlayReceiverSessionActive: false
    parentGroupContainsDiscoverableLeader: false
    isAddedToHomeKit: false
    supportsHAP: false
    usingJSONProtocol: false
    clusterType: 0
    primaryUID: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
    configuredClusterSize: 0
    supportsRapportRemoteControlTransport: false
    supportsMultiplayer: false
    producesLowFidelityAudio: false
    hostDeviceClass: 4
    supportsSharePlayHandoff: false
    discoveredOnSameInfra: false
    pickable: true
    transportType: 0
    isClusterLeader: false
    isAppleAccessory: false
  }
}
uniqueIdentifier: "0B79F512-30A4-4F99-9D69-10B711DEAE92"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: VOLUME_CONTROL_AVAILABILITY_MESSAGE
[volumeControlAvailabilityMessage] {
  volumeControlAvailable: true
  volumeCapabilities: Relative
}
uniqueIdentifier: "3CC7709F-5EB4-47C3-9CD2-FBB3815FFC54"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 17 to <bound method MrpAudio._volume_control_availability of <pyatv.protocols.mrp.MrpAudio object at 0xffff7b70ad50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: VOLUME_CONTROL_CAPABILITIES_DID_CHANGE_MESSAGE
[volumeControlCapabilitiesDidChangeMessage] {
  capabilities {
    volumeControlAvailable: true
    volumeCapabilities: Relative
  }
  endpointUID: "BE972F9D-7B7B-4623-A479-ACA945B5C7F7"
  outputDeviceUID: "2426430A-BAA6-43F6-88D8-0FD82B7E9FE3"
}
uniqueIdentifier: "E98B516E-1CE5-4CB6-8686-ECE7106149D0"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 64 to <bound method MrpAudio._volume_control_changed of <pyatv.protocols.mrp.MrpAudio object at 0xffff7b70ad50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: PreloadedPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:7776798"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:7776798"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:7776798"
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.5.opack:subscription:cloudLibrary:7776798"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v4.opack:subscription:cloudLibrary:7776798"
      supportedPlaybackSessionTypes: "com.apple.MediaPlaybackCore.playbackSession-v3.opack:subscription:cloudLibrary:7776798"
    }
    supportedCommands {
      command: PrepareForSetQueue
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 7
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
      supportedPlaybackQueueTypes: 8
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.radio"
      supportedCustomQueueIdentifiers: "com.apple.music.playbackqueue.tracklist"
      supportedCustomQueueIdentifiers: "com.apple.MediaPlaybackCore.playbackContextArchive-v1.opack"
      supportedCustomQueueIdentifiers: "com.apple.mediaplayer.playbackcontext"
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  displayID: "com.apple.TVMusic"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.TVMusic"
    }
  }
}
uniqueIdentifier: "45B55E84-FB5E-4CED-A52A-BFC84429BD9C"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 72 to <bound method PlayerStateManager._handle_set_default_supported_commands of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE
[setDefaultSupportedCommandsMessage] {
  supportedCommands {
    supportedCommands {
      command: Play
      enabled: true
    }
    supportedCommands {
      command: SetPlaybackQueue
      enabled: true
      supportedPlaybackQueueTypes: 3
      supportedPlaybackQueueTypes: 6
      supportedPlaybackQueueTypes: 2
      supportedPlaybackQueueTypes: 5
      supportedPlaybackQueueTypes: 1
    }
    supportedCommands {
      command: SetPlaybackSession
      enabled: true
      supportedPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
      currentPlaybackSessionTypes: "com.apple.podcasts.MTPlaybackQueueController.GenericQueue"
    }
  }
  displayID: "com.apple.podcasts"
  playbackQueueCapabilities {
  }
  playerPath {
    client {
      bundleIdentifier: "com.apple.podcasts"
    }
  }
}
uniqueIdentifier: "E3EB52D8-90CA-4004-A452-69990DF59104"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 72 to <bound method PlayerStateManager._handle_set_default_supported_commands of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: ORIGIN_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "46673A21-6F61-465E-9DF7-682FA685C7C1"
[originClientPropertiesMessage] {
  lastPlayingTimestamp: 725762022.015292
  2: "30E229F8-A0F7-4948-9BB7-0EB5D25394AE"
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_NOW_PLAYING_CLIENT_MESSAGE
[setNowPlayingClientMessage] {
  client {
    processIdentifier: 3494
    bundleIdentifier: "com.google.ios.youtube"
  }
}
uniqueIdentifier: "ED043321-33A6-4C1E-8D10-E68A56CC05E2"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 46 to <bound method PlayerStateManager._handle_set_now_playing_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3089
    bundleIdentifier: "com.timewarnercable.simulcast"
    processUserIdentifier: 501
    displayName: "Spectrum TV"
  }
}
uniqueIdentifier: "E6E6E652-D3C4-43E9-A2A7-3F3E825575E7"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Spectrum TV"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3089
      bundleIdentifier: "com.timewarnercable.simulcast"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725504413.816145
}
uniqueIdentifier: "C80F326C-89B1-4779-BB40-33B6AD84D2F1"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "B7987FC7-FFE3-4062-9123-21952767BB50"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3089
      bundleIdentifier: "com.timewarnercable.simulcast"
      processUserIdentifier: 501
      displayName: "Spectrum TV"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3019
    bundleIdentifier: "com.peacocktv.peacock"
    processUserIdentifier: 501
    displayName: "Peacock"
  }
}
uniqueIdentifier: "7F04FE11-98B1-49B7-A364-A5885E67316B"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  playbackQueue {
    location: 0
    contentItems {
      identifier: "CF57060F-A00E-4EDC-B889-16F935461443"
      metadata {
        artworkAvailable: false
        elapsedTime: 881.632373834
        playbackRate: 0.0
        nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchive...
        elapsedTimeTimestamp: 725469721.617766
      }
    }
  }
  displayName: "Peacock"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3019
      bundleIdentifier: "com.peacocktv.peacock"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725469721.386787
}
uniqueIdentifier: "638C8AAD-965B-4B24-86D6-12D1A021FEAC"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "0C277284-2247-44E1-9AC1-B3A95F842CE8"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3019
      bundleIdentifier: "com.peacocktv.peacock"
      processUserIdentifier: 501
      displayName: "Peacock"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: 725469721.38683
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 219
    bundleIdentifier: "com.apple.TVAirPlay"
    processUserIdentifier: 501
    displayName: "Safari"
    bundleIdentifierHierarchys: "com.apple.WebKit.GPU"
    bundleIdentifierHierarchys: "com.apple.mobilesafari"
  }
}
uniqueIdentifier: "896D8695-C809-459E-AD11-B8FD0E26195F"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Safari"
  playbackState: Stopped
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 219
      bundleIdentifier: "com.apple.TVAirPlay"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725052188.535534
}
uniqueIdentifier: "FB2EEE16-139E-4548-9FD7-E5C287C8A906"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "44FD09E0-D306-462A-B261-6F61F2C965F6"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 219
      bundleIdentifier: "com.apple.TVAirPlay"
      processUserIdentifier: 501
      displayName: "Safari"
      bundleIdentifierHierarchys: "com.apple.WebKit.GPU"
      bundleIdentifierHierarchys: "com.apple.mobilesafari"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: 725052188.536239
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3494
    bundleIdentifier: "com.google.ios.youtube"
    processUserIdentifier: 501
    displayName: "YouTube"
  }
}
uniqueIdentifier: "B8BE65E0-626B-4696-8B68-CFA95150D9A3"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  supportedCommands {
    supportedCommands {
      command: SeekToPlaybackPosition
      enabled: true
      canScrub: 0
    }
    supportedCommands {
      command: SkipBackward
      enabled: true
      preferredIntervals: 10.0
    }
    supportedCommands {
      command: SkipForward
      enabled: true
      preferredIntervals: 10.0
    }
    supportedCommands {
      command: PreviousTrack
      enabled: true
    }
    supportedCommands {
      command: NextTrack
      enabled: true
    }
    supportedCommands {
      command: Pause
      enabled: true
    }
    supportedCommands {
      command: Play
    }
  }
  playbackQueue {
    location: 0
    contentItems {
      identifier: "3381A539-AF94-4E2B-936C-E6DAD2C3F963"
      metadata {
        title: "Batting Practice 101: How to get the most out of your BP | USA / ASA / USSSA Slowpitch Softball"
        albumName: ""
        trackArtistName: "League Night Softball"
        duration: 912.060974
        artworkAvailable: false
        elapsedTime: 154.246003
        playbackRate: 1.0
        nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchive...
        elapsedTimeTimestamp: 725761902.568633
        inferredTimestamp: 725761902.569027
      }
    }
  }
  displayName: "YouTube"
  playbackState: Playing
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3494
      bundleIdentifier: "com.google.ios.youtube"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725761903.354101
}
uniqueIdentifier: "FC3BC24F-C289-4F99-82A2-37FF27559EC9"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "0D717D77-2701-44FB-83ED-3DCFA6AE47D7"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3494
      bundleIdentifier: "com.google.ios.youtube"
      processUserIdentifier: 501
      displayName: "YouTube"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: 725761901.217041
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3074
    bundleIdentifier: "com.apple.TVHomeSharing"
    processUserIdentifier: 501
    displayName: "Computers"
  }
}
uniqueIdentifier: "8391A5D6-A369-4F0D-8AAA-0468A415E23B"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725500140.697533
}
uniqueIdentifier: "19FCC1EE-8A91-4964-A56C-65DAE8587111"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "04D826DF-A150-474C-8C96-FA472052B7A8"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-BEA74B58-DA15-4604-BECE-7B2AB78E600B"
      displayName: "player-1"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725504359.785678
}
uniqueIdentifier: "E19CB533-551B-4202-9840-CE654A130FC7"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "30B9AECC-F5BC-482F-8E66-D5DD5185FE17"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-BEA74B58-DA15-4604-BECE-7B2AB78E600B"
      displayName: "player-1"
      mxSessionIDs: 3154
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-BEA74B58-DA15-4604-BECE-7B2AB78E600B"
      displayName: "player-1"
      mxSessionIDs: 3154
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "38B915FA-A532-4F97-882E-8BE0917E3AC0"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-639D1AAC-F5BE-47B8-857C-746F97B871F3"
      displayName: "player-2"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725512877.471882
}
uniqueIdentifier: "64E48C4C-932E-4BBF-A0B3-31423E7006D3"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "90AB6E53-2FE5-43CC-93FA-A6AEEDA8B90F"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-639D1AAC-F5BE-47B8-857C-746F97B871F3"
      displayName: "player-2"
      mxSessionIDs: 3163
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-639D1AAC-F5BE-47B8-857C-746F97B871F3"
      displayName: "player-2"
      mxSessionIDs: 3163
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "9D3981F6-2685-4FAA-A018-C8EF38F9816C"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-E366283A-1DB7-4B8C-A8AB-BD54AA8BCE9F"
      displayName: "player-3"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725583983.557488
}
uniqueIdentifier: "DB4E5820-50F9-4C0A-98CD-722A7E253023"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "7ED5F44C-2DFA-4138-B501-E0F77E9EC549"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-E366283A-1DB7-4B8C-A8AB-BD54AA8BCE9F"
      displayName: "player-3"
      mxSessionIDs: 3216
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-E366283A-1DB7-4B8C-A8AB-BD54AA8BCE9F"
      displayName: "player-3"
      mxSessionIDs: 3216
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "06C63BFA-A13D-41D9-8387-E96995D6027C"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-92721F94-B50B-494C-B308-99324EEF719E"
      displayName: "player-4"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725586687.775786
}
uniqueIdentifier: "394AD921-1B02-4778-9015-E07C348A3AE5"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "18B1FFF8-C1A1-4816-A335-EF9B12FF735B"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-92721F94-B50B-494C-B308-99324EEF719E"
      displayName: "player-4"
      mxSessionIDs: 3218
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-92721F94-B50B-494C-B308-99324EEF719E"
      displayName: "player-4"
      mxSessionIDs: 3218
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "C1C8FF61-C2B1-474C-A41B-545B56F8D7BB"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-C20C3806-249E-4CF7-88F1-426E11087689"
      displayName: "player-5"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725589261.689165
}
uniqueIdentifier: "0FF7A296-B018-4ED0-A56A-9C48B3D6C80B"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "1689E776-C440-43CD-8FE0-B53BB5F0B9F1"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-C20C3806-249E-4CF7-88F1-426E11087689"
      displayName: "player-5"
      mxSessionIDs: 3220
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-C20C3806-249E-4CF7-88F1-426E11087689"
      displayName: "player-5"
      mxSessionIDs: 3220
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "C8990C7B-456E-4AA3-8B09-A357B3ABE9CB"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-B0914670-B5FF-4286-9988-927F344A7812"
      displayName: "player-6"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725592125.571033
}
uniqueIdentifier: "5F82142E-2434-40A7-997A-77C1E4042E20"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "CE8A9B16-5C34-400B-BFF6-016000E34404"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-B0914670-B5FF-4286-9988-927F344A7812"
      displayName: "player-6"
      mxSessionIDs: 3222
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-B0914670-B5FF-4286-9988-927F344A7812"
      displayName: "player-6"
      mxSessionIDs: 3222
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "895B15A3-C8B0-499C-A6D8-E9EEFEFF5AAF"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-94CF20DD-B67E-4B4F-97E8-97BD038A2E61"
      displayName: "player-7"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725596260.233513
}
uniqueIdentifier: "9540B56C-9AB5-4C99-B70B-208C8554A23D"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "167CBE74-15CD-47F3-9ACB-548E1EFBC8E0"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-94CF20DD-B67E-4B4F-97E8-97BD038A2E61"
      displayName: "player-7"
      mxSessionIDs: 3224
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-94CF20DD-B67E-4B4F-97E8-97BD038A2E61"
      displayName: "player-7"
      mxSessionIDs: 3224
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "443E12A2-BDAA-43F3-BF2E-E08A8F6C9BF9"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-3667299D-C584-47EE-8156-E0726A8C662C"
      displayName: "player-8"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725653058.862825
}
uniqueIdentifier: "8FBAF9FE-EC4C-45BB-90E9-DBC98E4D0D85"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "2DDF366F-9301-460D-9158-66670F2D6F95"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-3667299D-C584-47EE-8156-E0726A8C662C"
      displayName: "player-8"
      mxSessionIDs: 3264
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-3667299D-C584-47EE-8156-E0726A8C662C"
      displayName: "player-8"
      mxSessionIDs: 3264
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "F7AAAC48-06AD-4E22-9966-F20D9C08C42F"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Computers"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-94AC5ECB-9B85-4893-82BA-D796FCB74AA1"
      displayName: "player-9"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725655791.551198
}
uniqueIdentifier: "0790CBED-D262-46B5-A43B-B5BAD8420642"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "AC7E825F-5CC7-482D-89FD-11C0202401DF"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
      processUserIdentifier: 501
      displayName: "Computers"
    }
    player {
      identifier: "avkit-94AC5ECB-9B85-4893-82BA-D796FCB74AA1"
      displayName: "player-9"
      mxSessionIDs: 3266
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3074
      bundleIdentifier: "com.apple.TVHomeSharing"
    }
    player {
      identifier: "avkit-94AC5ECB-9B85-4893-82BA-D796FCB74AA1"
      displayName: "player-9"
      mxSessionIDs: 3266
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "4F9E9D48-B9DB-41F3-B3BC-1C8A2BB369D3"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3084
    bundleIdentifier: "com.apple.TVWatchList"
    processUserIdentifier: 501
    displayName: "TV"
  }
}
uniqueIdentifier: "CB44D4F7-95A3-4409-80B5-27047C94EB13"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  supportedCommands {
    supportedCommands {
      command: PlayItemInPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: ReorderPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: RemoveFromPlaybackQueue
      enabled: true
    }
    supportedCommands {
      command: PreviousInContext
      enabled: true
    }
    supportedCommands {
      command: NextInContext
      enabled: true
    }
    supportedCommands {
      command: DisableLanguageOption
      enabled: true
    }
    supportedCommands {
      command: EnableLanguageOption
      enabled: true
    }
    supportedCommands {
      command: ChangeShuffleMode
      shuffleMode: Off
    }
    supportedCommands {
      command: ChangeRepeatMode
      repeatMode: Off
    }
    supportedCommands {
      command: SeekToPlaybackPosition
      enabled: true
      canScrub: 0
    }
    supportedCommands {
      command: ChangePlaybackRate
      enabled: true
    }
    supportedCommands {
      command: SkipBackward
      enabled: true
      preferredIntervals: 10.0
    }
    supportedCommands {
      command: SkipForward
      enabled: true
      preferredIntervals: 10.0
    }
    supportedCommands {
      command: BeginRewind
      enabled: true
    }
    supportedCommands {
      command: EndRewind
      enabled: true
    }
    supportedCommands {
      command: BeginFastForward
      enabled: true
    }
    supportedCommands {
      command: EndFastForward
      enabled: true
    }
    supportedCommands {
      command: AdvanceRepeatMode
      repeatMode: Off
    }
    supportedCommands {
      command: AdvanceShuffleMode
      shuffleMode: Off
    }
    supportedCommands {
      command: PreviousTrack
    }
    supportedCommands {
      command: NextTrack
    }
    supportedCommands {
      command: Stop
      enabled: true
    }
    supportedCommands {
      command: TogglePlayPause
      enabled: true
    }
    supportedCommands {
      command: Pause
      enabled: true
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  playbackQueue {
    location: 0
    contentItems {
      identifier: "BFDF9970-9649-42AA-8EE1-B5DA079C8250"
      metadata {
        title: "The Morning Show"
        duration: 39.205
        localizedContentRating: "TV_MA"
        elapsedTime: 0.0
        genre: "Drama"
        isAlwaysLive: false
        playbackRate: 0.0
        totalTrackCount: 1
        trackNumber: 1
        iTunesStoreIdentifier: 1707232631
        nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchive...
        elapsedTimeTimestamp: 725743053.953036
      }
    }
  }
  displayName: "TV"
  playbackState: Paused
  playbackQueueCapabilities {
    requestByRange: true
    requestByIdentifiers: true
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725667557.750404
}
uniqueIdentifier: "288F2E7A-8530-4B96-BB36-84227175079A"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "1114508F-21E4-480F-9BCA-10CCE65226B0"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
      processUserIdentifier: 501
      displayName: "TV"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: 725667557.750457
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "TV"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-3A60F985-2303-43A4-9A1F-5705CF22F4E0"
      displayName: "player-1"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725582724.97281
}
uniqueIdentifier: "CEC06432-C42B-4244-A503-116115A276F0"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "13F26DE2-01ED-48EB-8230-69C7AB94BA89"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
      processUserIdentifier: 501
      displayName: "TV"
    }
    player {
      identifier: "avkit-3A60F985-2303-43A4-9A1F-5705CF22F4E0"
      displayName: "player-1"
      mxSessionIDs: 3208
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-3A60F985-2303-43A4-9A1F-5705CF22F4E0"
      displayName: "player-1"
      mxSessionIDs: 3208
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "CDE4CC42-CEB5-417E-AD45-78F9DA2D7010"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "TV"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-6EB3659D-52AF-4A33-BB77-01CDC9B6843A"
      displayName: "player-2"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725667557.955424
}
uniqueIdentifier: "1C3DBF76-2EF0-4A44-9366-8975710BEBE5"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "1DAA9658-D15B-4692-9B48-1B337B49028C"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
      processUserIdentifier: 501
      displayName: "TV"
    }
    player {
      identifier: "avkit-6EB3659D-52AF-4A33-BB77-01CDC9B6843A"
      displayName: "player-2"
      mxSessionIDs: 3279
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-6EB3659D-52AF-4A33-BB77-01CDC9B6843A"
      displayName: "player-2"
      mxSessionIDs: 3279
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "94F672E0-C5B1-4583-A738-CD441A3EB98C"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "TV"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-C06E8951-FE00-41BD-BF4A-9C7E76D4C14B"
      displayName: "player-3"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725739846.343529
}
uniqueIdentifier: "9DAEDE66-9146-46D9-A119-97BE6B0FD868"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "77738B57-EEA4-47DC-92B0-A9809815403F"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
      processUserIdentifier: 501
      displayName: "TV"
    }
    player {
      identifier: "avkit-C06E8951-FE00-41BD-BF4A-9C7E76D4C14B"
      displayName: "player-3"
      mxSessionIDs: 3294
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-C06E8951-FE00-41BD-BF4A-9C7E76D4C14B"
      displayName: "player-3"
      mxSessionIDs: 3294
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "57772257-40E7-4828-B7B4-B9D50FEA1B16"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "TV"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-C254264A-03B2-4E56-B9E2-9B046E2BFA44"
      displayName: "player-4"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725743054.156761
}
uniqueIdentifier: "F3A5CBAE-1B40-46C0-A5DB-C64C8F802899"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "05A547AD-7F33-43C5-8318-14DF2CB64963"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
      processUserIdentifier: 501
      displayName: "TV"
    }
    player {
      identifier: "avkit-C254264A-03B2-4E56-B9E2-9B046E2BFA44"
      displayName: "player-4"
      mxSessionIDs: 3344
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_PLAYER_MESSAGE
[updatePlayerMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3084
      bundleIdentifier: "com.apple.TVWatchList"
    }
    player {
      identifier: "avkit-C254264A-03B2-4E56-B9E2-9B046E2BFA44"
      displayName: "player-4"
      mxSessionIDs: 3344
      audioSessionID: 0
    }
  }
}
uniqueIdentifier: "317C1BAC-CE05-4ED1-B80A-9485BAD604D2"
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3502
    bundleIdentifier: "com.nfl.gamecenter"
    processUserIdentifier: 501
    displayName: "NFL"
  }
}
uniqueIdentifier: "F04E508F-CA8C-4E47-94E2-C46C06110F81"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  supportedCommands {
    supportedCommands {
      command: SeekToPlaybackPosition
      canScrub: 0
    }
    supportedCommands {
      command: SkipBackward
      preferredIntervals: 15.0
    }
    supportedCommands {
      command: SkipForward
      preferredIntervals: 15.0
    }
    supportedCommands {
      command: Stop
      enabled: true
    }
    supportedCommands {
      command: TogglePlayPause
      enabled: true
    }
    supportedCommands {
      command: Pause
      enabled: true
    }
    supportedCommands {
      command: Play
      enabled: true
    }
  }
  playbackQueue {
    location: 0
    contentItems {
      identifier: "ekxV0ubcywG8Sgo7NVZPaw"
      metadata {
        title: "Atlanta Falcons at Chicago Bears"
        trackArtistName: "NFL"
        duration: 0.0
        artworkAvailable: false
        elapsedTime: 0.0
        isAlwaysLive: true
        playbackRate: 1.0
        contentIdentifier: "ekxV0ubcywG8Sgo7NVZPaw"
        mediaType: Video
        mediaSubType: UnknownMediaSubType
        nowPlayingInfoData: "bplist00\324\001\002\003\004\005\006\007\nX$versionY$archiverT$topX$objects\022\000\001\206\240_\020\017NSKeyedArchive...
        elapsedTimeTimestamp: 725750294.579891
        inferredTimestamp: 725749108.941243
      }
    }
  }
  displayName: "NFL"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3502
      bundleIdentifier: "com.nfl.gamecenter"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725750297.767608
}
uniqueIdentifier: "756645F5-E5FC-4A6C-B282-F81A0D23445A"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "9C88A3ED-F33D-45F4-BCF9-738E3F940A56"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3502
      bundleIdentifier: "com.nfl.gamecenter"
      processUserIdentifier: 501
      displayName: "NFL"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: 725750297.767662
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UPDATE_CLIENT_MESSAGE
[updateClientMessage] {
  client {
    processIdentifier: 3365
    bundleIdentifier: "com.hulu.plus"
    processUserIdentifier: 501
    displayName: "Hulu"
  }
}
uniqueIdentifier: "5F7A9841-A117-459E-8806-FB1648D32BF8"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 55 to <bound method PlayerStateManager._handle_update_client of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: SET_STATE_MESSAGE
[setStateMessage] {
  displayName: "Hulu"
  playbackState: Paused
  playbackQueueCapabilities {
  }
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
    }
    client {
      processIdentifier: 3365
      bundleIdentifier: "com.hulu.plus"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  playbackStateTimestamp: 725667885.660047
}
uniqueIdentifier: "1DB8F53B-BAF7-4F6F-8946-46EF2AD87CFB"
2024-01-01 00:33:42 DEBUG [pyatv.core.protocol]: Dispatching message with type 4 to <bound method PlayerStateManager._handle_set_state of <pyatv.protocols.mrp.player_state.PlayerStateManager object at 0xffff7b936c50>>
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: PLAYER_CLIENT_PROPERTIES_MESSAGE
uniqueIdentifier: "9CC40E1B-2F6B-4621-ADAE-894FC6B4DD96"
[playerClientPropertiesMessage] {
  playerPath {
    origin {
      displayName: "Apple\302\240TV"
      identifier: 1280262988
      isLocallyHosted: true
    }
    client {
      processIdentifier: 3365
      bundleIdentifier: "com.hulu.plus"
      processUserIdentifier: 501
      displayName: "Hulu"
    }
    player {
      identifier: "MediaRemote-DefaultPlayer"
      displayName: "Default Player"
      audioSessionID: 0
    }
  }
  lastPlayingTimestamp: -63114076800.0
}
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: UNKNOWN_MESSAGE
identifier: "31556D0A-7203-46E7-B0AE-345FD1E1FB49"
uniqueIdentifier: "B5FEC57A-ED37-408E-A8AD-BF95573B8292"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=2000f5e36a1850e0933f60d6454d7547da9fc5bed355e15c5b056d7b18a8f8519c849ce6e850be03b7c3ba66f11c6419da3e)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.mrp]: Volume control availability changed to True
2024-01-01 00:33:42 DEBUG [pyatv.protocols.mrp]: Volume control availability changed to True
2024-01-01 00:33:42 DEBUG [pyatv.protocols.mrp.player_state]: Active client is now com.google.ios.youtube
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=b400bde89ccea3edc9453b27014f84444641904482d3b3187883db04834ae23a0cba459100ef2c88b8517d9f4b611e570dc664fd8cce3eefea5f4d71fe635afdb1531f334207ddd651141a59fc211d4b2b69c45633be1108d7a4086c4d261811c1b00a526265207927e95be076cb4f8ae0900a63f2f4e52f223cfdde503234b694b72c1891f9e1fa649a14754ef03e4557d6d1f01c7cd31e6ebe891afda910f33c06474b15a40fca174780f3bca2ea8278f5a9cefef13754867b6acecfc9dc43d29cee4175f2)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: >> Send: Protobuf: type: GET_KEYBOARD_SESSION_MESSAGE
identifier: "00E278E7-B16E-4D3A-BE7A-A8C926DD5121"
errorCode: NoError
uniqueIdentifier: "2E60E49A-3D72-4CBF-8658-249577BFFE74"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000dc43b31ebc42446a2142123fd774e40b53a62bdc58f52af4ff7c7d06b6a9da9b78b9d970424403c11973fdaf28ac19822a00397c5ee208b277704fb526ae3cd86edfcbf12b8ab7823cadc75f8a1d4db5a9f93f83607155cba4eee35035f22defbf724425fabe71454a58ca53)
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Received data (Data=2000e152368360542f1e70d9e2ea12f5d10633feb730caaa4471e0f421926736ef48b4776874f3c1d4869eccc14e8224af6ea900ccffc05b327d47dac84cd13e00b19f996ac226ca48fe13d65c52213a3e9e9999fd6cf9fe6f3a7f07e871fe25e669b400d39a6458cae6aed128110d90a67700411da8ebeee3591fe1976423cd145c404b43c048023252334431d9f4024682690895df2f502f9a877a454a95c52c4c086333580bd0c7d5a91d331044c434fd28bfba7f2b89286636e34b4eb821116c8aec1afa5291149c6b6b8829d74160827491f9bf280c5f9fa3d6ef7564af2651755db341e1f5c7631055af)
2024-01-01 00:33:42 DEBUG [pyatv.protocols.airplay.mrp_connection]: << Receive: Protobuf: type: KEYBOARD_MESSAGE
identifier: "00E278E7-B16E-4D3A-BE7A-A8C926DD5121"
[keyboardMessage] {
  state: Unknown
  attributes {
    inputTraits {
      autocapitalizationType: None
      keyboardType: Default
      returnKeyType: Default
      enablesReturnKeyAutomatically: false
      secureTextEntry: false
      validTextRangeLocation: 0
      validTextRangeLength: 0
    }
  }
}
uniqueIdentifier: "D22E96CF-F990-45CF-A731-CCA1426EE7C7"
2024-01-01 00:33:42 DEBUG [pyatv.auth.hap_channel]: Sending data (Encrypted=200096486148ec9c2520fb66d6471c9bde806ed01f797611e30b7166b219664972f82748d38719b9b7513fbcf487db66ae8b)
2024-01-01 00:33:42 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.MRP
2024-01-01 00:33:42 DEBUG [pyatv.core.facade]: Protocol Protocol.MRP already set up, ignoring
2024-01-01 00:33:42 DEBUG [pyatv.core.facade]: Connecting to protocol: Protocol.RAOP
2024-01-01 00:33:42 DEBUG [pyatv.core.facade]: Connected to protocol: Protocol.RAOP
Press ENTER to stop
  Media type: Unknown
Device state: Playing
       Title: Batting Practice 101: How to get the most out of your BP | USA / ASA / USSSA Slowpitch Softball
      Artist: League Night Softball
       Album: 
    Position: 273/912s (29.9%)
      Repeat: Off
     Shuffle: Off
--------------------
2024-01-01 00:33:43 DEBUG [pyatv.core.protocol]: Sending periodic heartbeat 0 (AirPlay:192.168.100.17)
2024-01-01 00:33:43 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 3\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\n\r\n'
2024-01-01 00:33:43 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:43 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/750.14.2\r\nCSeq: 3\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'
2024-01-01 00:33:43 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:43 GMT', 'Content-Length': '55', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/750.14.2', 'CSeq': '3'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'):
2024-01-01 00:33:43 DEBUG [pyatv.core.protocol]: Got heartbeat 0 (AirPlay:192.168.100.17)
2024-01-01 00:33:45 DEBUG [pyatv.core.protocol]: Sending periodic heartbeat 1 (AirPlay:192.168.100.17)
2024-01-01 00:33:45 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 4\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\n\r\n'
2024-01-01 00:33:45 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:45 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/750.14.2\r\nCSeq: 4\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'
2024-01-01 00:33:45 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:45 GMT', 'Content-Length': '55', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/750.14.2', 'CSeq': '4'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'):
2024-01-01 00:33:45 DEBUG [pyatv.core.protocol]: Got heartbeat 1 (AirPlay:192.168.100.17)
2024-01-01 00:33:47 DEBUG [pyatv.core.protocol]: Sending periodic heartbeat 2 (AirPlay:192.168.100.17)
2024-01-01 00:33:47 DEBUG [pyatv.support.http]: Sending RTSP/1.0 message: b'POST /feedback RTSP/1.0\r\nUser-Agent: AirPlay/550.10\r\nCSeq: 5\r\nDACP-ID: EFD38294A0B0FD06\r\nActive-Remote: 975508575\r\nClient-Instance: EFD38294A0B0FD06\r\n\r\n'
2024-01-01 00:33:47 DEBUG [pyatv.support.http]: Received: b'RTSP/1.0 200 OK\r\nDate: Mon, 01 Jan 2024 00:33:47 GMT\r\nContent-Length: 55\r\nContent-Type: application/x-apple-binary-plist\r\nServer: AirTunes/750.14.2\r\nCSeq: 5\r\n\r\nbplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'
2024-01-01 00:33:47 DEBUG [pyatv.support.http]: Got RTSP response: HttpResponse(protocol='RTSP', version='1.0', code=200, message='OK', headers={'Date': 'Mon, 01 Jan 2024 00:33:47 GMT', 'Content-Length': '55', 'Content-Type': 'application/x-apple-binary-plist', 'Server': 'AirTunes/750.14.2', 'CSeq': '5'}, body=b'bplist00\xd1\x01\x02Wstreams\xa0\x08\x0b\x13\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14'):
2024-01-01 00:33:47 DEBUG [pyatv.core.protocol]: Got heartbeat 2 (AirPlay:192.168.100.17)
mschwartz commented 10 months ago
appletv/appletv-theater/status/position 285
appletv/appletv-theater/status/position 286
appletv/appletv-theater/status/position 287
appletv/appletv-theater/status/position 288
appletv/appletv-theater/status/position 289
appletv/appletv-theater/status/position 290
appletv/appletv-theater/status/position 386 <<< paused, this is the correct position
appletv/appletv-theater/status/position 291
appletv/appletv-theater/status/position 292
appletv/appletv-theater/status/position 293
appletv/appletv-theater/status/position 389 <<< paused, this is the correct position
mschwartz commented 10 months ago

OK, this is weird. I have something useful to report here.

When I run my script on a Mac, it works. If I run it on a Linux host, it has this bad behavior as reported here.