@bharper/atv-js 0.2.6 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/dist/index.d.ts +15 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +89 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/mdns.d.ts.map +1 -1
  6. package/dist/mdns.js +96 -11
  7. package/dist/mdns.js.map +1 -1
  8. package/examples/print-device-json.js +22 -0
  9. package/package.json +2 -3
  10. package/pyatv/.codecov.yml +38 -0
  11. package/pyatv/.github/FUNDING.yml +3 -0
  12. package/pyatv/.github/ISSUE_TEMPLATE/bug_report.yml +80 -0
  13. package/pyatv/.github/ISSUE_TEMPLATE/config.yml +1 -0
  14. package/pyatv/.github/ISSUE_TEMPLATE/feature_request.yml +22 -0
  15. package/pyatv/.github/ISSUE_TEMPLATE/implementation-proposal.yml +29 -0
  16. package/pyatv/.github/ISSUE_TEMPLATE/investigation.yml +16 -0
  17. package/pyatv/.github/ISSUE_TEMPLATE/minor-change.yml +10 -0
  18. package/pyatv/.github/ISSUE_TEMPLATE/question-or-idea.yml +11 -0
  19. package/pyatv/.github/dependabot.yml +26 -0
  20. package/pyatv/.github/workflows/codeql-analysis.yml +71 -0
  21. package/pyatv/.github/workflows/release.yml +160 -0
  22. package/pyatv/.github/workflows/tests.yml +104 -0
  23. package/pyatv/.gitpod.yml +23 -0
  24. package/pyatv/CHANGES.md +3708 -0
  25. package/pyatv/CODE_OF_CONDUCT.md +76 -0
  26. package/pyatv/CONTRIBUTING.md +72 -0
  27. package/pyatv/CONTRIBUTORS.md +3 -0
  28. package/pyatv/Dockerfile +15 -0
  29. package/pyatv/LICENSE.md +9 -0
  30. package/pyatv/MANIFEST.in +14 -0
  31. package/pyatv/README.md +111 -0
  32. package/pyatv/base_versions.txt +13 -0
  33. package/pyatv/chickn.yaml +75 -0
  34. package/pyatv/docs/404.html +24 -0
  35. package/pyatv/docs/CNAME +1 -0
  36. package/pyatv/docs/Gemfile +31 -0
  37. package/pyatv/docs/_config.yml +121 -0
  38. package/pyatv/docs/_includes/api +10 -0
  39. package/pyatv/docs/_includes/atvremote_scan +32 -0
  40. package/pyatv/docs/_includes/code +6 -0
  41. package/pyatv/docs/_includes/issue +14 -0
  42. package/pyatv/docs/_includes/pypi +5 -0
  43. package/pyatv/docs/_layouts/template.html +109 -0
  44. package/pyatv/docs/api/pyatv.conf.html +312 -0
  45. package/pyatv/docs/api/pyatv.const.html +974 -0
  46. package/pyatv/docs/api/pyatv.convert.html +106 -0
  47. package/pyatv/docs/api/pyatv.exceptions.html +489 -0
  48. package/pyatv/docs/api/pyatv.helpers.html +102 -0
  49. package/pyatv/docs/api/pyatv.html +120 -0
  50. package/pyatv/docs/api/pyatv.interface.html +2369 -0
  51. package/pyatv/docs/api/pyatv.settings.html +484 -0
  52. package/pyatv/docs/api/pyatv.storage.file_storage.html +102 -0
  53. package/pyatv/docs/api/pyatv.storage.html +186 -0
  54. package/pyatv/docs/api/pyatv.storage.memory_storage.html +83 -0
  55. package/pyatv/docs/assets/css/custom.css +19 -0
  56. package/pyatv/docs/assets/css/hljs.css +1 -0
  57. package/pyatv/docs/assets/css/normalize.css +349 -0
  58. package/pyatv/docs/assets/css/pdoc.css +287 -0
  59. package/pyatv/docs/assets/css/sanitize.css +566 -0
  60. package/pyatv/docs/assets/css/style.scss +9 -0
  61. package/pyatv/docs/assets/img/logo.svg +63 -0
  62. package/pyatv/docs/assets/js/highlight.9.12.0.min.js +3 -0
  63. package/pyatv/docs/assets/js/mermaid.8.9.2.min.js +32 -0
  64. package/pyatv/docs/assets/js/mermaid.min.js.map +1 -0
  65. package/pyatv/docs/development/apps.md +81 -0
  66. package/pyatv/docs/development/audio.md +42 -0
  67. package/pyatv/docs/development/control.md +56 -0
  68. package/pyatv/docs/development/development.md +15 -0
  69. package/pyatv/docs/development/device_info.md +36 -0
  70. package/pyatv/docs/development/examples.md +44 -0
  71. package/pyatv/docs/development/features.md +70 -0
  72. package/pyatv/docs/development/keyboard.md +51 -0
  73. package/pyatv/docs/development/listeners.md +144 -0
  74. package/pyatv/docs/development/logging.md +55 -0
  75. package/pyatv/docs/development/metadata.md +115 -0
  76. package/pyatv/docs/development/power_management.md +53 -0
  77. package/pyatv/docs/development/scan_pair_and_connect.md +331 -0
  78. package/pyatv/docs/development/services.md +9 -0
  79. package/pyatv/docs/development/storage.md +259 -0
  80. package/pyatv/docs/development/stream.md +241 -0
  81. package/pyatv/docs/development/testing.md +9 -0
  82. package/pyatv/docs/documentation/atvlog.md +64 -0
  83. package/pyatv/docs/documentation/atvproxy.md +244 -0
  84. package/pyatv/docs/documentation/atvremote.md +639 -0
  85. package/pyatv/docs/documentation/atvscript.md +275 -0
  86. package/pyatv/docs/documentation/concepts.md +168 -0
  87. package/pyatv/docs/documentation/documentation.md +130 -0
  88. package/pyatv/docs/documentation/getting_started.md +248 -0
  89. package/pyatv/docs/documentation/protocols.md +1959 -0
  90. package/pyatv/docs/documentation/supported_features.md +246 -0
  91. package/pyatv/docs/documentation/tutorial.md +1062 -0
  92. package/pyatv/docs/documentation/workspace.code-workspace +7 -0
  93. package/pyatv/docs/favicon.ico +0 -0
  94. package/pyatv/docs/index.md +109 -0
  95. package/pyatv/docs/internals/design.md +354 -0
  96. package/pyatv/docs/internals/documentation.md +84 -0
  97. package/pyatv/docs/internals/interfaces.md +95 -0
  98. package/pyatv/docs/internals/internals.md +157 -0
  99. package/pyatv/docs/internals/submit_pr.md +56 -0
  100. package/pyatv/docs/internals/testing.md +176 -0
  101. package/pyatv/docs/internals/tools.md +574 -0
  102. package/pyatv/docs/pdoc_templates/config.mako +46 -0
  103. package/pyatv/docs/pdoc_templates/html.mako +454 -0
  104. package/pyatv/docs/support/acknowledgements.md +87 -0
  105. package/pyatv/docs/support/faq.md +214 -0
  106. package/pyatv/docs/support/migration.md +138 -0
  107. package/pyatv/docs/support/scanning_issues.md +110 -0
  108. package/pyatv/docs/support/support.md +18 -0
  109. package/pyatv/docs/support/troubleshooting.md +83 -0
  110. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage.proto +13 -0
  111. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage_pb2.pyi +37 -0
  112. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage.proto +11 -0
  113. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage_pb2.pyi +32 -0
  114. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage.proto +5 -0
  115. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage_pb2.pyi +27 -0
  116. package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage.proto +16 -0
  117. package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage_pb2.pyi +44 -0
  118. package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo.proto +117 -0
  119. package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo_pb2.pyi +325 -0
  120. package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions.proto +36 -0
  121. package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions_pb2.pyi +115 -0
  122. package/pyatv/pyatv/protocols/mrp/protobuf/Common.proto +79 -0
  123. package/pyatv/pyatv/protocols/mrp/protobuf/Common_pb2.pyi +228 -0
  124. package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage.proto +11 -0
  125. package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage_pb2.pyi +32 -0
  126. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem.proto +27 -0
  127. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata.proto +213 -0
  128. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata_pb2.pyi +630 -0
  129. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem_pb2.pyi +94 -0
  130. package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage.proto +15 -0
  131. package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage_pb2.pyi +46 -0
  132. package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage.proto +69 -0
  133. package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage_pb2.pyi +226 -0
  134. package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage.proto +12 -0
  135. package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage_pb2.pyi +35 -0
  136. package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage.proto +11 -0
  137. package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage_pb2.pyi +26 -0
  138. package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage.proto +10 -0
  139. package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage_pb2.pyi +26 -0
  140. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage.proto +11 -0
  141. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage_pb2.pyi +32 -0
  142. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage.proto +11 -0
  143. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage_pb2.pyi +32 -0
  144. package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage.proto +88 -0
  145. package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage_pb2.pyi +261 -0
  146. package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption.proto +9 -0
  147. package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption_pb2.pyi +42 -0
  148. package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage.proto +23 -0
  149. package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage_pb2.pyi +86 -0
  150. package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage.proto +12 -0
  151. package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage_pb2.pyi +38 -0
  152. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient.proto +12 -0
  153. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient_pb2.pyi +49 -0
  154. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo.proto +24 -0
  155. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo_pb2.pyi +79 -0
  156. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer.proto +11 -0
  157. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer_pb2.pyi +45 -0
  158. package/pyatv/pyatv/protocols/mrp/protobuf/Origin.proto +17 -0
  159. package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage.proto +11 -0
  160. package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage_pb2.pyi +32 -0
  161. package/pyatv/pyatv/protocols/mrp/protobuf/Origin_pb2.pyi +63 -0
  162. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue.proto +15 -0
  163. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities.proto +7 -0
  164. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities_pb2.pyi +33 -0
  165. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext.proto +5 -0
  166. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext_pb2.pyi +27 -0
  167. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage.proto +29 -0
  168. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage_pb2.pyi +87 -0
  169. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue_pb2.pyi +53 -0
  170. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage.proto +13 -0
  171. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage_pb2.pyi +37 -0
  172. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath.proto +11 -0
  173. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath_pb2.pyi +39 -0
  174. package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage.proto +171 -0
  175. package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage_pb2.pyi +377 -0
  176. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage.proto +18 -0
  177. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage_pb2.pyi +54 -0
  178. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage.proto +12 -0
  179. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage_pb2.pyi +34 -0
  180. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage.proto +12 -0
  181. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage_pb2.pyi +35 -0
  182. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage.proto +12 -0
  183. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage_pb2.pyi +34 -0
  184. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage.proto +12 -0
  185. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage_pb2.pyi +35 -0
  186. package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage.proto +13 -0
  187. package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage_pb2.pyi +38 -0
  188. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage.proto +12 -0
  189. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage_pb2.pyi +34 -0
  190. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage.proto +11 -0
  191. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage_pb2.pyi +34 -0
  192. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage.proto +12 -0
  193. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage_pb2.pyi +38 -0
  194. package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage.proto +12 -0
  195. package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage_pb2.pyi +34 -0
  196. package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage.proto +13 -0
  197. package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage_pb2.pyi +38 -0
  198. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage.proto +16 -0
  199. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage_pb2.pyi +43 -0
  200. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage.proto +100 -0
  201. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage_pb2.pyi +286 -0
  202. package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage.proto +41 -0
  203. package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage_pb2.pyi +63 -0
  204. package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage.proto +24 -0
  205. package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage_pb2.pyi +64 -0
  206. package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage.proto +38 -0
  207. package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage_pb2.pyi +134 -0
  208. package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage.proto +11 -0
  209. package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage_pb2.pyi +32 -0
  210. package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage.proto +18 -0
  211. package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage_pb2.pyi +54 -0
  212. package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage.proto +28 -0
  213. package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage_pb2.pyi +74 -0
  214. package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage.proto +12 -0
  215. package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage_pb2.pyi +35 -0
  216. package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage.proto +11 -0
  217. package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage_pb2.pyi +32 -0
  218. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage.proto +12 -0
  219. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage_pb2.pyi +34 -0
  220. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage.proto +12 -0
  221. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage_pb2.pyi +34 -0
  222. package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage.proto +17 -0
  223. package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage_pb2.pyi +54 -0
  224. package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage.proto +27 -0
  225. package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage_pb2.pyi +72 -0
  226. package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage.proto +12 -0
  227. package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage_pb2.pyi +35 -0
  228. package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands.proto +7 -0
  229. package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands_pb2.pyi +30 -0
  230. package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage.proto +23 -0
  231. package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage_pb2.pyi +76 -0
  232. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey.proto +6 -0
  233. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey_pb2.pyi +30 -0
  234. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage.proto +15 -0
  235. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage_pb2.pyi +42 -0
  236. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket.proto +11 -0
  237. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket_pb2.pyi +41 -0
  238. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets.proto +7 -0
  239. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets_pb2.pyi +30 -0
  240. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage.proto +12 -0
  241. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage_pb2.pyi +34 -0
  242. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage.proto +14 -0
  243. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage_pb2.pyi +41 -0
  244. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage.proto +14 -0
  245. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage_pb2.pyi +41 -0
  246. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage.proto +25 -0
  247. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage_pb2.pyi +74 -0
  248. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage.proto +88 -0
  249. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage_pb2.pyi +277 -0
  250. package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath.proto +12 -0
  251. package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath_pb2.pyi +34 -0
  252. package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage.proto +8 -0
  253. package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage_pb2.pyi +36 -0
  254. package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage.proto +8 -0
  255. package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage_pb2.pyi +35 -0
  256. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage.proto +23 -0
  257. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage_pb2.pyi +71 -0
  258. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage.proto +14 -0
  259. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage_pb2.pyi +40 -0
  260. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage.proto +13 -0
  261. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage_pb2.pyi +38 -0
  262. package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage.proto +11 -0
  263. package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage_pb2.pyi +26 -0
  264. package/pyatv/pyatv/py.typed +0 -0
  265. package/pyatv/pylintrc +49 -0
  266. package/pyatv/pyproject.toml +74 -0
  267. package/pyatv/requirements/requirements.txt +14 -0
  268. package/pyatv/requirements/requirements_docs.txt +2 -0
  269. package/pyatv/requirements/requirements_test.txt +20 -0
  270. package/pyatv/scripts/build_docs.sh +17 -0
  271. package/pyatv/scripts/setup_dev_env.sh +83 -0
  272. package/pyatv/setup.cfg +14 -0
  273. package/pyatv/tests/data/README +23 -0
  274. package/pyatv/tests/data/audio_10_frames.wav +0 -0
  275. package/pyatv/tests/data/audio_1_packet_metadata.wav +0 -0
  276. package/pyatv/tests/data/audio_3_packets.wav +0 -0
  277. package/pyatv/tests/data/only_metadata.wav +0 -0
  278. package/pyatv/tests/data/only_title.wav +0 -0
  279. package/pyatv/tests/data/static_3sec.ogg +0 -0
  280. package/pyatv/tests/data/testfile.txt +1 -0
  281. package/pyatv/tests/support/pyatv.code-workspace +14 -0
  282. package/src/index.ts +122 -8
  283. package/src/mdns.ts +64 -11
@@ -0,0 +1,30 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.message
11
+ import pyatv.protocols.mrp.protobuf.CommandInfo_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class SupportedCommands(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ SUPPORTEDCOMMANDS_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def supportedCommands(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pyatv.protocols.mrp.protobuf.CommandInfo_pb2.CommandInfo]: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ supportedCommands: collections.abc.Iterable[pyatv.protocols.mrp.protobuf.CommandInfo_pb2.CommandInfo] | None = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing.Literal["supportedCommands", b"supportedCommands"]) -> None: ...
29
+
30
+ global___SupportedCommands = SupportedCommands
@@ -0,0 +1,23 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional TextInputMessage textInputMessage = 30;
7
+ }
8
+
9
+ message ActionType {
10
+ enum Enum {
11
+ Unknown = 0;
12
+ Insert = 1;
13
+ Set = 2;
14
+ Delete = 3;
15
+ ClearAction = 4; // "Clear" clashes with something, making mypy unhappy
16
+ }
17
+ }
18
+
19
+ message TextInputMessage {
20
+ optional double timestamp = 1;
21
+ optional string text = 2;
22
+ optional ActionType.Enum actionType = 3;
23
+ }
@@ -0,0 +1,76 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.enum_type_wrapper
9
+ import google.protobuf.internal.extension_dict
10
+ import google.protobuf.message
11
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
12
+ import sys
13
+ import typing
14
+
15
+ if sys.version_info >= (3, 10):
16
+ import typing as typing_extensions
17
+ else:
18
+ import typing_extensions
19
+
20
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
21
+
22
+ @typing.final
23
+ class ActionType(google.protobuf.message.Message):
24
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
25
+
26
+ class _Enum:
27
+ ValueType = typing.NewType("ValueType", builtins.int)
28
+ V: typing_extensions.TypeAlias = ValueType
29
+
30
+ class _EnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ActionType._Enum.ValueType], builtins.type):
31
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
32
+ Unknown: ActionType._Enum.ValueType # 0
33
+ Insert: ActionType._Enum.ValueType # 1
34
+ Set: ActionType._Enum.ValueType # 2
35
+ Delete: ActionType._Enum.ValueType # 3
36
+ ClearAction: ActionType._Enum.ValueType # 4
37
+ """"Clear" clashes with something, making mypy unhappy"""
38
+
39
+ class Enum(_Enum, metaclass=_EnumEnumTypeWrapper): ...
40
+ Unknown: ActionType.Enum.ValueType # 0
41
+ Insert: ActionType.Enum.ValueType # 1
42
+ Set: ActionType.Enum.ValueType # 2
43
+ Delete: ActionType.Enum.ValueType # 3
44
+ ClearAction: ActionType.Enum.ValueType # 4
45
+ """"Clear" clashes with something, making mypy unhappy"""
46
+
47
+ def __init__(
48
+ self,
49
+ ) -> None: ...
50
+
51
+ global___ActionType = ActionType
52
+
53
+ @typing.final
54
+ class TextInputMessage(google.protobuf.message.Message):
55
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
56
+
57
+ TIMESTAMP_FIELD_NUMBER: builtins.int
58
+ TEXT_FIELD_NUMBER: builtins.int
59
+ ACTIONTYPE_FIELD_NUMBER: builtins.int
60
+ timestamp: builtins.float
61
+ text: builtins.str
62
+ actionType: global___ActionType.Enum.ValueType
63
+ def __init__(
64
+ self,
65
+ *,
66
+ timestamp: builtins.float | None = ...,
67
+ text: builtins.str | None = ...,
68
+ actionType: global___ActionType.Enum.ValueType | None = ...,
69
+ ) -> None: ...
70
+ def HasField(self, field_name: typing.Literal["actionType", b"actionType", "text", b"text", "timestamp", b"timestamp"]) -> builtins.bool: ...
71
+ def ClearField(self, field_name: typing.Literal["actionType", b"actionType", "text", b"text", "timestamp", b"timestamp"]) -> None: ...
72
+
73
+ global___TextInputMessage = TextInputMessage
74
+
75
+ TEXTINPUTMESSAGE_FIELD_NUMBER: builtins.int
76
+ textInputMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___TextInputMessage]
@@ -0,0 +1,6 @@
1
+ syntax = "proto2";
2
+
3
+ message TransactionKey {
4
+ optional string identifier = 1;
5
+ optional bytes userData = 2;
6
+ }
@@ -0,0 +1,30 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+
11
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
12
+
13
+ @typing.final
14
+ class TransactionKey(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ IDENTIFIER_FIELD_NUMBER: builtins.int
18
+ USERDATA_FIELD_NUMBER: builtins.int
19
+ identifier: builtins.str
20
+ userData: builtins.bytes
21
+ def __init__(
22
+ self,
23
+ *,
24
+ identifier: builtins.str | None = ...,
25
+ userData: builtins.bytes | None = ...,
26
+ ) -> None: ...
27
+ def HasField(self, field_name: typing.Literal["identifier", b"identifier", "userData", b"userData"]) -> builtins.bool: ...
28
+ def ClearField(self, field_name: typing.Literal["identifier", b"identifier", "userData", b"userData"]) -> None: ...
29
+
30
+ global___TransactionKey = TransactionKey
@@ -0,0 +1,15 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/TransactionPackets.proto";
4
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
5
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
6
+
7
+ extend ProtocolMessage {
8
+ optional TransactionMessage transactionMessage = 38;
9
+ }
10
+
11
+ message TransactionMessage {
12
+ optional uint64 name = 1;
13
+ optional TransactionPackets packets = 2;
14
+ optional PlayerPath playerPath = 3;
15
+ }
@@ -0,0 +1,42 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.extension_dict
9
+ import google.protobuf.message
10
+ import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
11
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
12
+ import pyatv.protocols.mrp.protobuf.TransactionPackets_pb2
13
+ import typing
14
+
15
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
+
17
+ @typing.final
18
+ class TransactionMessage(google.protobuf.message.Message):
19
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
20
+
21
+ NAME_FIELD_NUMBER: builtins.int
22
+ PACKETS_FIELD_NUMBER: builtins.int
23
+ PLAYERPATH_FIELD_NUMBER: builtins.int
24
+ name: builtins.int
25
+ @property
26
+ def packets(self) -> pyatv.protocols.mrp.protobuf.TransactionPackets_pb2.TransactionPackets: ...
27
+ @property
28
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
29
+ def __init__(
30
+ self,
31
+ *,
32
+ name: builtins.int | None = ...,
33
+ packets: pyatv.protocols.mrp.protobuf.TransactionPackets_pb2.TransactionPackets | None = ...,
34
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
35
+ ) -> None: ...
36
+ def HasField(self, field_name: typing.Literal["name", b"name", "packets", b"packets", "playerPath", b"playerPath"]) -> builtins.bool: ...
37
+ def ClearField(self, field_name: typing.Literal["name", b"name", "packets", b"packets", "playerPath", b"playerPath"]) -> None: ...
38
+
39
+ global___TransactionMessage = TransactionMessage
40
+
41
+ TRANSACTIONMESSAGE_FIELD_NUMBER: builtins.int
42
+ transactionMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___TransactionMessage]
@@ -0,0 +1,11 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/TransactionKey.proto";
4
+
5
+ message TransactionPacket {
6
+ optional TransactionKey key = 1;
7
+ optional bytes packetData = 2;
8
+ optional string identifier = 3;
9
+ optional uint64 totalLength = 4;
10
+ optional uint64 totalWritePosition = 5;
11
+ }
@@ -0,0 +1,41 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import pyatv.protocols.mrp.protobuf.TransactionKey_pb2
10
+ import typing
11
+
12
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
+
14
+ @typing.final
15
+ class TransactionPacket(google.protobuf.message.Message):
16
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
17
+
18
+ KEY_FIELD_NUMBER: builtins.int
19
+ PACKETDATA_FIELD_NUMBER: builtins.int
20
+ IDENTIFIER_FIELD_NUMBER: builtins.int
21
+ TOTALLENGTH_FIELD_NUMBER: builtins.int
22
+ TOTALWRITEPOSITION_FIELD_NUMBER: builtins.int
23
+ packetData: builtins.bytes
24
+ identifier: builtins.str
25
+ totalLength: builtins.int
26
+ totalWritePosition: builtins.int
27
+ @property
28
+ def key(self) -> pyatv.protocols.mrp.protobuf.TransactionKey_pb2.TransactionKey: ...
29
+ def __init__(
30
+ self,
31
+ *,
32
+ key: pyatv.protocols.mrp.protobuf.TransactionKey_pb2.TransactionKey | None = ...,
33
+ packetData: builtins.bytes | None = ...,
34
+ identifier: builtins.str | None = ...,
35
+ totalLength: builtins.int | None = ...,
36
+ totalWritePosition: builtins.int | None = ...,
37
+ ) -> None: ...
38
+ def HasField(self, field_name: typing.Literal["identifier", b"identifier", "key", b"key", "packetData", b"packetData", "totalLength", b"totalLength", "totalWritePosition", b"totalWritePosition"]) -> builtins.bool: ...
39
+ def ClearField(self, field_name: typing.Literal["identifier", b"identifier", "key", b"key", "packetData", b"packetData", "totalLength", b"totalLength", "totalWritePosition", b"totalWritePosition"]) -> None: ...
40
+
41
+ global___TransactionPacket = TransactionPacket
@@ -0,0 +1,7 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/TransactionPacket.proto";
4
+
5
+ message TransactionPackets {
6
+ repeated TransactionPacket packets = 1;
7
+ }
@@ -0,0 +1,30 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.message
11
+ import pyatv.protocols.mrp.protobuf.TransactionPacket_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class TransactionPackets(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ PACKETS_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def packets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pyatv.protocols.mrp.protobuf.TransactionPacket_pb2.TransactionPacket]: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ packets: collections.abc.Iterable[pyatv.protocols.mrp.protobuf.TransactionPacket_pb2.TransactionPacket] | None = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing.Literal["packets", b"packets"]) -> None: ...
29
+
30
+ global___TransactionPackets = TransactionPackets
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/NowPlayingClient.proto";
5
+
6
+ extend ProtocolMessage {
7
+ optional UpdateClientMessage updateClientMessage = 59;
8
+ }
9
+
10
+ message UpdateClientMessage {
11
+ optional NowPlayingClient client = 1;
12
+ }
@@ -0,0 +1,34 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.extension_dict
9
+ import google.protobuf.message
10
+ import pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2
11
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class UpdateClientMessage(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ CLIENT_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def client(self) -> pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2.NowPlayingClient: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ client: pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2.NowPlayingClient | None = ...,
27
+ ) -> None: ...
28
+ def HasField(self, field_name: typing.Literal["client", b"client"]) -> builtins.bool: ...
29
+ def ClearField(self, field_name: typing.Literal["client", b"client"]) -> None: ...
30
+
31
+ global___UpdateClientMessage = UpdateClientMessage
32
+
33
+ UPDATECLIENTMESSAGE_FIELD_NUMBER: builtins.int
34
+ updateClientMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___UpdateClientMessage]
@@ -0,0 +1,14 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/ContentItem.proto";
5
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
6
+
7
+ extend ProtocolMessage {
8
+ optional UpdateContentItemArtworkMessage updateContentItemArtworkMessage = 61;
9
+ }
10
+
11
+ message UpdateContentItemArtworkMessage {
12
+ repeated ContentItem contentItems = 1;
13
+ optional PlayerPath playerPath = 2;
14
+ }
@@ -0,0 +1,41 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.internal.extension_dict
11
+ import google.protobuf.message
12
+ import pyatv.protocols.mrp.protobuf.ContentItem_pb2
13
+ import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
14
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
15
+ import typing
16
+
17
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
18
+
19
+ @typing.final
20
+ class UpdateContentItemArtworkMessage(google.protobuf.message.Message):
21
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
22
+
23
+ CONTENTITEMS_FIELD_NUMBER: builtins.int
24
+ PLAYERPATH_FIELD_NUMBER: builtins.int
25
+ @property
26
+ def contentItems(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem]: ...
27
+ @property
28
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
29
+ def __init__(
30
+ self,
31
+ *,
32
+ contentItems: collections.abc.Iterable[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem] | None = ...,
33
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
34
+ ) -> None: ...
35
+ def HasField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> builtins.bool: ...
36
+ def ClearField(self, field_name: typing.Literal["contentItems", b"contentItems", "playerPath", b"playerPath"]) -> None: ...
37
+
38
+ global___UpdateContentItemArtworkMessage = UpdateContentItemArtworkMessage
39
+
40
+ UPDATECONTENTITEMARTWORKMESSAGE_FIELD_NUMBER: builtins.int
41
+ updateContentItemArtworkMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___UpdateContentItemArtworkMessage]
@@ -0,0 +1,14 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/ContentItem.proto";
5
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
6
+
7
+ extend ProtocolMessage {
8
+ optional UpdateContentItemMessage updateContentItemMessage = 60;
9
+ }
10
+
11
+ message UpdateContentItemMessage {
12
+ repeated ContentItem contentItems = 1;
13
+ optional PlayerPath playerPath = 2;
14
+ }
@@ -0,0 +1,41 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.internal.extension_dict
11
+ import google.protobuf.message
12
+ import pyatv.protocols.mrp.protobuf.ContentItem_pb2
13
+ import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
14
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
15
+ import typing
16
+
17
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
18
+
19
+ @typing.final
20
+ class UpdateContentItemMessage(google.protobuf.message.Message):
21
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
22
+
23
+ CONTENTITEMS_FIELD_NUMBER: builtins.int
24
+ PLAYERPATH_FIELD_NUMBER: builtins.int
25
+ @property
26
+ def contentItems(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem]: ...
27
+ @property
28
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
29
+ def __init__(
30
+ self,
31
+ *,
32
+ contentItems: collections.abc.Iterable[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem] | None = ...,
33
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
34
+ ) -> None: ...
35
+ def HasField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> builtins.bool: ...
36
+ def ClearField(self, field_name: typing.Literal["contentItems", b"contentItems", "playerPath", b"playerPath"]) -> None: ...
37
+
38
+ global___UpdateContentItemMessage = UpdateContentItemMessage
39
+
40
+ UPDATECONTENTITEMMESSAGE_FIELD_NUMBER: builtins.int
41
+ updateContentItemMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___UpdateContentItemMessage]
@@ -0,0 +1,25 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional UpdateEndPointsMessage updateEndPointsMessage = 83;
7
+ }
8
+
9
+ message AVEndpointDescriptor {
10
+ optional string name = 1;
11
+ optional string uniqueIdentifier = 2;
12
+ // repeated ... outputDevices = 3;
13
+ // optional ... designatedGroupLeader = 4;
14
+ optional bool isLocalEndpoint = 5;
15
+ optional string instanceIdentifier = 6;
16
+ optional bool isProxyGroupPlayer = 7;
17
+ optional int32 connectionType = 8;
18
+ optional bool canModifyGroupMembership = 9;
19
+ // repeated ... _personalOutputDevices = 10;
20
+ }
21
+
22
+ message UpdateEndPointsMessage {
23
+ optional AVEndpointDescriptor endpoints = 1;
24
+ optional int32 endpointFeatures = 2;
25
+ }
@@ -0,0 +1,74 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.extension_dict
9
+ import google.protobuf.message
10
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
11
+ import typing
12
+
13
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
14
+
15
+ @typing.final
16
+ class AVEndpointDescriptor(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ NAME_FIELD_NUMBER: builtins.int
20
+ UNIQUEIDENTIFIER_FIELD_NUMBER: builtins.int
21
+ ISLOCALENDPOINT_FIELD_NUMBER: builtins.int
22
+ INSTANCEIDENTIFIER_FIELD_NUMBER: builtins.int
23
+ ISPROXYGROUPPLAYER_FIELD_NUMBER: builtins.int
24
+ CONNECTIONTYPE_FIELD_NUMBER: builtins.int
25
+ CANMODIFYGROUPMEMBERSHIP_FIELD_NUMBER: builtins.int
26
+ name: builtins.str
27
+ uniqueIdentifier: builtins.str
28
+ isLocalEndpoint: builtins.bool
29
+ """repeated ... outputDevices = 3;
30
+ optional ... designatedGroupLeader = 4;
31
+ """
32
+ instanceIdentifier: builtins.str
33
+ isProxyGroupPlayer: builtins.bool
34
+ connectionType: builtins.int
35
+ canModifyGroupMembership: builtins.bool
36
+ """repeated ... _personalOutputDevices = 10;"""
37
+ def __init__(
38
+ self,
39
+ *,
40
+ name: builtins.str | None = ...,
41
+ uniqueIdentifier: builtins.str | None = ...,
42
+ isLocalEndpoint: builtins.bool | None = ...,
43
+ instanceIdentifier: builtins.str | None = ...,
44
+ isProxyGroupPlayer: builtins.bool | None = ...,
45
+ connectionType: builtins.int | None = ...,
46
+ canModifyGroupMembership: builtins.bool | None = ...,
47
+ ) -> None: ...
48
+ def HasField(self, field_name: typing.Literal["canModifyGroupMembership", b"canModifyGroupMembership", "connectionType", b"connectionType", "instanceIdentifier", b"instanceIdentifier", "isLocalEndpoint", b"isLocalEndpoint", "isProxyGroupPlayer", b"isProxyGroupPlayer", "name", b"name", "uniqueIdentifier", b"uniqueIdentifier"]) -> builtins.bool: ...
49
+ def ClearField(self, field_name: typing.Literal["canModifyGroupMembership", b"canModifyGroupMembership", "connectionType", b"connectionType", "instanceIdentifier", b"instanceIdentifier", "isLocalEndpoint", b"isLocalEndpoint", "isProxyGroupPlayer", b"isProxyGroupPlayer", "name", b"name", "uniqueIdentifier", b"uniqueIdentifier"]) -> None: ...
50
+
51
+ global___AVEndpointDescriptor = AVEndpointDescriptor
52
+
53
+ @typing.final
54
+ class UpdateEndPointsMessage(google.protobuf.message.Message):
55
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
56
+
57
+ ENDPOINTS_FIELD_NUMBER: builtins.int
58
+ ENDPOINTFEATURES_FIELD_NUMBER: builtins.int
59
+ endpointFeatures: builtins.int
60
+ @property
61
+ def endpoints(self) -> global___AVEndpointDescriptor: ...
62
+ def __init__(
63
+ self,
64
+ *,
65
+ endpoints: global___AVEndpointDescriptor | None = ...,
66
+ endpointFeatures: builtins.int | None = ...,
67
+ ) -> None: ...
68
+ def HasField(self, field_name: typing.Literal["endpointFeatures", b"endpointFeatures", "endpoints", b"endpoints"]) -> builtins.bool: ...
69
+ def ClearField(self, field_name: typing.Literal["endpointFeatures", b"endpointFeatures", "endpoints", b"endpoints"]) -> None: ...
70
+
71
+ global___UpdateEndPointsMessage = UpdateEndPointsMessage
72
+
73
+ UPDATEENDPOINTSMESSAGE_FIELD_NUMBER: builtins.int
74
+ updateEndPointsMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___UpdateEndPointsMessage]