@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,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage.proto";
5
+
6
+ extend ProtocolMessage {
7
+ optional RegisterHIDDeviceMessage registerHIDDeviceMessage = 11;
8
+ }
9
+
10
+ message RegisterHIDDeviceMessage {
11
+ optional VirtualTouchDeviceDescriptor deviceDescriptor = 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.ProtocolMessage_pb2
11
+ import pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class RegisterHIDDeviceMessage(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ DEVICEDESCRIPTOR_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def deviceDescriptor(self) -> pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2.VirtualTouchDeviceDescriptor: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ deviceDescriptor: pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2.VirtualTouchDeviceDescriptor | None = ...,
27
+ ) -> None: ...
28
+ def HasField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> builtins.bool: ...
29
+ def ClearField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> None: ...
30
+
31
+ global___RegisterHIDDeviceMessage = RegisterHIDDeviceMessage
32
+
33
+ REGISTERHIDDEVICEMESSAGE_FIELD_NUMBER: builtins.int
34
+ registerHIDDeviceMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterHIDDeviceMessage]
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional RegisterHIDDeviceResultMessage registerHIDDeviceResultMessage = 12;
7
+ }
8
+
9
+ message RegisterHIDDeviceResultMessage {
10
+ optional int32 errorCode = 1;
11
+ optional int32 deviceIdentifier = 2;
12
+ }
@@ -0,0 +1,35 @@
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 RegisterHIDDeviceResultMessage(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ ERRORCODE_FIELD_NUMBER: builtins.int
20
+ DEVICEIDENTIFIER_FIELD_NUMBER: builtins.int
21
+ errorCode: builtins.int
22
+ deviceIdentifier: builtins.int
23
+ def __init__(
24
+ self,
25
+ *,
26
+ errorCode: builtins.int | None = ...,
27
+ deviceIdentifier: builtins.int | None = ...,
28
+ ) -> None: ...
29
+ def HasField(self, field_name: typing.Literal["deviceIdentifier", b"deviceIdentifier", "errorCode", b"errorCode"]) -> builtins.bool: ...
30
+ def ClearField(self, field_name: typing.Literal["deviceIdentifier", b"deviceIdentifier", "errorCode", b"errorCode"]) -> None: ...
31
+
32
+ global___RegisterHIDDeviceResultMessage = RegisterHIDDeviceResultMessage
33
+
34
+ REGISTERHIDDEVICERESULTMESSAGE_FIELD_NUMBER: builtins.int
35
+ registerHIDDeviceResultMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterHIDDeviceResultMessage]
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage.proto";
5
+
6
+ extend ProtocolMessage {
7
+ optional RegisterVoiceInputDeviceMessage registerVoiceInputDeviceMessage = 33;
8
+ }
9
+
10
+ message RegisterVoiceInputDeviceMessage {
11
+ optional VoiceInputDeviceDescriptor deviceDescriptor = 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.ProtocolMessage_pb2
11
+ import pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2
12
+ import typing
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class RegisterVoiceInputDeviceMessage(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ DEVICEDESCRIPTOR_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def deviceDescriptor(self) -> pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2.VoiceInputDeviceDescriptor: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ deviceDescriptor: pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2.VoiceInputDeviceDescriptor | None = ...,
27
+ ) -> None: ...
28
+ def HasField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> builtins.bool: ...
29
+ def ClearField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> None: ...
30
+
31
+ global___RegisterVoiceInputDeviceMessage = RegisterVoiceInputDeviceMessage
32
+
33
+ REGISTERVOICEINPUTDEVICEMESSAGE_FIELD_NUMBER: builtins.int
34
+ registerVoiceInputDeviceMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterVoiceInputDeviceMessage]
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional RegisterVoiceInputDeviceResponseMessage registerVoiceInputDeviceResponseMessage = 34;
7
+ }
8
+
9
+ message RegisterVoiceInputDeviceResponseMessage {
10
+ optional int32 deviceID = 1;
11
+ optional int32 errorCode = 2;
12
+ }
@@ -0,0 +1,35 @@
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 RegisterVoiceInputDeviceResponseMessage(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ DEVICEID_FIELD_NUMBER: builtins.int
20
+ ERRORCODE_FIELD_NUMBER: builtins.int
21
+ deviceID: builtins.int
22
+ errorCode: builtins.int
23
+ def __init__(
24
+ self,
25
+ *,
26
+ deviceID: builtins.int | None = ...,
27
+ errorCode: builtins.int | None = ...,
28
+ ) -> None: ...
29
+ def HasField(self, field_name: typing.Literal["deviceID", b"deviceID", "errorCode", b"errorCode"]) -> builtins.bool: ...
30
+ def ClearField(self, field_name: typing.Literal["deviceID", b"deviceID", "errorCode", b"errorCode"]) -> None: ...
31
+
32
+ global___RegisterVoiceInputDeviceResponseMessage = RegisterVoiceInputDeviceResponseMessage
33
+
34
+ REGISTERVOICEINPUTDEVICERESPONSEMESSAGE_FIELD_NUMBER: builtins.int
35
+ registerVoiceInputDeviceResponseMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterVoiceInputDeviceResponseMessage]
@@ -0,0 +1,13 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional RemoteTextInputMessage remoteTextInputMessage = 71;
7
+ }
8
+
9
+ message RemoteTextInputMessage {
10
+ optional double timestamp = 1;
11
+ optional uint64 version = 2;
12
+ optional bytes data = 3;
13
+ }
@@ -0,0 +1,38 @@
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 RemoteTextInputMessage(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ TIMESTAMP_FIELD_NUMBER: builtins.int
20
+ VERSION_FIELD_NUMBER: builtins.int
21
+ DATA_FIELD_NUMBER: builtins.int
22
+ timestamp: builtins.float
23
+ version: builtins.int
24
+ data: builtins.bytes
25
+ def __init__(
26
+ self,
27
+ *,
28
+ timestamp: builtins.float | None = ...,
29
+ version: builtins.int | None = ...,
30
+ data: builtins.bytes | None = ...,
31
+ ) -> None: ...
32
+ def HasField(self, field_name: typing.Literal["data", b"data", "timestamp", b"timestamp", "version", b"version"]) -> builtins.bool: ...
33
+ def ClearField(self, field_name: typing.Literal["data", b"data", "timestamp", b"timestamp", "version", b"version"]) -> None: ...
34
+
35
+ global___RemoteTextInputMessage = RemoteTextInputMessage
36
+
37
+ REMOTETEXTINPUTMESSAGE_FIELD_NUMBER: builtins.int
38
+ remoteTextInputMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoteTextInputMessage]
@@ -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 RemoveClientMessage removeClientMessage = 57;
8
+ }
9
+
10
+ message RemoveClientMessage {
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 RemoveClientMessage(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___RemoveClientMessage = RemoveClientMessage
32
+
33
+ REMOVECLIENTMESSAGE_FIELD_NUMBER: builtins.int
34
+ removeClientMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveClientMessage]
@@ -0,0 +1,11 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional RemoveEndpointsMessage removeEndpointsMessage = 84;
7
+ }
8
+
9
+ message RemoveEndpointsMessage {
10
+ repeated string endpointUIDs = 1;
11
+ }
@@ -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 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.ProtocolMessage_pb2
13
+ import typing
14
+
15
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
+
17
+ @typing.final
18
+ class RemoveEndpointsMessage(google.protobuf.message.Message):
19
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
20
+
21
+ ENDPOINTUIDS_FIELD_NUMBER: builtins.int
22
+ @property
23
+ def endpointUIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
24
+ def __init__(
25
+ self,
26
+ *,
27
+ endpointUIDs: collections.abc.Iterable[builtins.str] | None = ...,
28
+ ) -> None: ...
29
+ def ClearField(self, field_name: typing.Literal["endpointUIDs", b"endpointUIDs"]) -> None: ...
30
+
31
+ global___RemoveEndpointsMessage = RemoveEndpointsMessage
32
+
33
+ REMOVEENDPOINTSMESSAGE_FIELD_NUMBER: builtins.int
34
+ removeEndpointsMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveEndpointsMessage]
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional RemoveOutputDevicesMessage removeOutputDevicesMessage = 70;
7
+ }
8
+
9
+ message RemoveOutputDevicesMessage {
10
+ repeated string outputDeviceUIDs = 1;
11
+ optional string endpointUID = 2;
12
+ }
@@ -0,0 +1,38 @@
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.ProtocolMessage_pb2
13
+ import typing
14
+
15
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
+
17
+ @typing.final
18
+ class RemoveOutputDevicesMessage(google.protobuf.message.Message):
19
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
20
+
21
+ OUTPUTDEVICEUIDS_FIELD_NUMBER: builtins.int
22
+ ENDPOINTUID_FIELD_NUMBER: builtins.int
23
+ endpointUID: builtins.str
24
+ @property
25
+ def outputDeviceUIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
26
+ def __init__(
27
+ self,
28
+ *,
29
+ outputDeviceUIDs: collections.abc.Iterable[builtins.str] | None = ...,
30
+ endpointUID: builtins.str | None = ...,
31
+ ) -> None: ...
32
+ def HasField(self, field_name: typing.Literal["endpointUID", b"endpointUID"]) -> builtins.bool: ...
33
+ def ClearField(self, field_name: typing.Literal["endpointUID", b"endpointUID", "outputDeviceUIDs", b"outputDeviceUIDs"]) -> None: ...
34
+
35
+ global___RemoveOutputDevicesMessage = RemoveOutputDevicesMessage
36
+
37
+ REMOVEOUTPUTDEVICESMESSAGE_FIELD_NUMBER: builtins.int
38
+ removeOutputDevicesMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveOutputDevicesMessage]
@@ -0,0 +1,12 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
5
+
6
+ extend ProtocolMessage {
7
+ optional RemovePlayerMessage removePlayerMessage = 58;
8
+ }
9
+
10
+ message RemovePlayerMessage {
11
+ optional PlayerPath playerPath = 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.PlayerPath_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 RemovePlayerMessage(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ PLAYERPATH_FIELD_NUMBER: builtins.int
21
+ @property
22
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
23
+ def __init__(
24
+ self,
25
+ *,
26
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
27
+ ) -> None: ...
28
+ def HasField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> builtins.bool: ...
29
+ def ClearField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> None: ...
30
+
31
+ global___RemovePlayerMessage = RemovePlayerMessage
32
+
33
+ REMOVEPLAYERMESSAGE_FIELD_NUMBER: builtins.int
34
+ removePlayerMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemovePlayerMessage]
@@ -0,0 +1,13 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional SendButtonEventMessage sendButtonEventMessage = 43;
7
+ }
8
+
9
+ message SendButtonEventMessage {
10
+ optional uint32 usagePage = 1;
11
+ optional uint32 usage = 2;
12
+ optional bool buttonDown = 3;
13
+ }
@@ -0,0 +1,38 @@
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 SendButtonEventMessage(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ USAGEPAGE_FIELD_NUMBER: builtins.int
20
+ USAGE_FIELD_NUMBER: builtins.int
21
+ BUTTONDOWN_FIELD_NUMBER: builtins.int
22
+ usagePage: builtins.int
23
+ usage: builtins.int
24
+ buttonDown: builtins.bool
25
+ def __init__(
26
+ self,
27
+ *,
28
+ usagePage: builtins.int | None = ...,
29
+ usage: builtins.int | None = ...,
30
+ buttonDown: builtins.bool | None = ...,
31
+ ) -> None: ...
32
+ def HasField(self, field_name: typing.Literal["buttonDown", b"buttonDown", "usage", b"usage", "usagePage", b"usagePage"]) -> builtins.bool: ...
33
+ def ClearField(self, field_name: typing.Literal["buttonDown", b"buttonDown", "usage", b"usage", "usagePage", b"usagePage"]) -> None: ...
34
+
35
+ global___SendButtonEventMessage = SendButtonEventMessage
36
+
37
+ SENDBUTTONEVENTMESSAGE_FIELD_NUMBER: builtins.int
38
+ sendButtonEventMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___SendButtonEventMessage]
@@ -0,0 +1,16 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/CommandInfo.proto";
5
+ import "pyatv/protocols/mrp/protobuf/CommandOptions.proto";
6
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
7
+
8
+ extend ProtocolMessage {
9
+ optional SendCommandMessage sendCommandMessage = 6;
10
+ }
11
+
12
+ message SendCommandMessage {
13
+ optional Command command = 1;
14
+ optional CommandOptions options = 2;
15
+ optional PlayerPath playerPath = 3;
16
+ }
@@ -0,0 +1,43 @@
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.CommandInfo_pb2
11
+ import pyatv.protocols.mrp.protobuf.CommandOptions_pb2
12
+ import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
13
+ import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
14
+ import typing
15
+
16
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
17
+
18
+ @typing.final
19
+ class SendCommandMessage(google.protobuf.message.Message):
20
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
21
+
22
+ COMMAND_FIELD_NUMBER: builtins.int
23
+ OPTIONS_FIELD_NUMBER: builtins.int
24
+ PLAYERPATH_FIELD_NUMBER: builtins.int
25
+ command: pyatv.protocols.mrp.protobuf.CommandInfo_pb2.Command.ValueType
26
+ @property
27
+ def options(self) -> pyatv.protocols.mrp.protobuf.CommandOptions_pb2.CommandOptions: ...
28
+ @property
29
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
30
+ def __init__(
31
+ self,
32
+ *,
33
+ command: pyatv.protocols.mrp.protobuf.CommandInfo_pb2.Command.ValueType | None = ...,
34
+ options: pyatv.protocols.mrp.protobuf.CommandOptions_pb2.CommandOptions | None = ...,
35
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
36
+ ) -> None: ...
37
+ def HasField(self, field_name: typing.Literal["command", b"command", "options", b"options", "playerPath", b"playerPath"]) -> builtins.bool: ...
38
+ def ClearField(self, field_name: typing.Literal["command", b"command", "options", b"options", "playerPath", b"playerPath"]) -> None: ...
39
+
40
+ global___SendCommandMessage = SendCommandMessage
41
+
42
+ SENDCOMMANDMESSAGE_FIELD_NUMBER: builtins.int
43
+ sendCommandMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___SendCommandMessage]
@@ -0,0 +1,100 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
5
+
6
+ extend ProtocolMessage {
7
+ optional SendCommandResultMessage sendCommandResultMessage = 7;
8
+ }
9
+
10
+ message SendError {
11
+ enum Enum {
12
+ NoError = 0; // This is None in original message definitions (no-go with python)
13
+ ApplicationNotFound = 1;
14
+ ConnectionFailed = 2;
15
+ Ignored = 3;
16
+ CouldNotLaunchApplication = 4;
17
+ TimedOut = 5;
18
+ OriginDoesNotExist = 6;
19
+ InvalidOptions = 7;
20
+ NoCommandHandlers = 8;
21
+ ApplicationNotInstalled = 9;
22
+ NotSupported = 10;
23
+ }
24
+ }
25
+
26
+ message HandlerReturnStatus {
27
+ enum Enum {
28
+ Success = 0;
29
+ NoSuchContent = 1;
30
+ CommandFailed = 2;
31
+ NoActionableNowPlayingItem = 10;
32
+ DeviceNotFound = 20;
33
+ UIKitLegacy = 3;
34
+ SkipAdProhibited = 100;
35
+ QueueIsUserCurated = 101;
36
+ UserModifiedQueueDisabled = 102;
37
+ UserQueueModificationNotSupportedForCurrentItem = 103;
38
+ SubscriptionRequiredForSharedQueue = 104;
39
+ InsertionPositionNotSpecified = 105;
40
+ InvalidInsertionPosition = 106;
41
+ RequestParametersOutOfBounds = 107;
42
+ SkipLimitReached = 108;
43
+ AuthenticationFailure = 401;
44
+ MediaServiceUnavailable = 501;
45
+ }
46
+ }
47
+
48
+ message SendCommandStatusCode {
49
+ enum Enum {
50
+ Success = 0;
51
+ NoSuchContent = 1;
52
+ CommandFailed = 2;
53
+ NoActionableNowPlayingItem = 10;
54
+ DeviceNotFound = 20;
55
+ UIKitLegacy = 3;
56
+ SkipAdProhibited = 100;
57
+ QueueIsUserCurated = 101;
58
+ UserModifiedQueueDisabled = 102;
59
+ UserQueueModificationNotSupportedForCurrentItem = 103;
60
+ SubscriptionRequiredForSharedQueue = 104;
61
+ InsertionPositionNotSpecified = 105;
62
+ InvalidInsertionPosition = 106;
63
+ RequestParametersOutOfBounds = 107;
64
+ SkipLimitReached = 108;
65
+ AuthenticationFailure = 401;
66
+ MediaServiceUnavailable = 501;
67
+ }
68
+ }
69
+
70
+ message SendCommandResultType {
71
+ enum Enum {
72
+ Dialog = 1;
73
+ Error = 2;
74
+ Custom = 999;
75
+ }
76
+ }
77
+
78
+ message SendCommandResultStatus {
79
+ optional SendCommandStatusCode.Enum statusCode = 1;
80
+ optional SendCommandResultType.Enum type = 2;
81
+ // optional ... dialog = 3;
82
+ // optional ... error = 4;
83
+ optional bytes customData = 5;
84
+ optional string customDataType = 6;
85
+ }
86
+
87
+ message SendCommandResult {
88
+ optional PlayerPath playerPath = 1;
89
+ optional SendError.Enum sendError = 2;
90
+ repeated SendCommandResultStatus statuses = 3;
91
+ }
92
+
93
+ message SendCommandResultMessage {
94
+ optional SendError.Enum sendError = 1;
95
+ optional HandlerReturnStatus.Enum handlerReturnStatus = 2;
96
+ repeated bytes handlerReturnStatusDatas = 3;
97
+ optional string commandID = 4;
98
+ optional PlayerPath playerPath = 5;
99
+ optional SendCommandResult commandResult = 6;
100
+ }