@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,24 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/Common.proto";
4
+
5
+ message NowPlayingInfo {
6
+ optional string album = 1;
7
+ optional string artist = 2;
8
+ optional double duration = 3;
9
+ optional double elapsedTime = 4;
10
+ optional float playbackRate = 5;
11
+ optional RepeatMode.Enum repeatMode = 6;
12
+ optional ShuffleMode.Enum shuffleMode = 7;
13
+ optional double timestamp = 8;
14
+ optional string title = 9;
15
+ optional uint64 uniqueIdentifier = 10;
16
+ optional bool isExplicitTrack = 11;
17
+ optional bool isMusicApp = 12;
18
+ optional int64 radioStationIdentifier = 13;
19
+ optional string radioStationHash = 14;
20
+ optional string radioStationName = 15;
21
+ optional bytes artworkDataDigest = 16;
22
+ optional bool isAlwaysLive = 17;
23
+ optional bool isAdvertisement = 18;
24
+ }
@@ -0,0 +1,79 @@
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.Common_pb2
10
+ import typing
11
+
12
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
+
14
+ @typing.final
15
+ class NowPlayingInfo(google.protobuf.message.Message):
16
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
17
+
18
+ ALBUM_FIELD_NUMBER: builtins.int
19
+ ARTIST_FIELD_NUMBER: builtins.int
20
+ DURATION_FIELD_NUMBER: builtins.int
21
+ ELAPSEDTIME_FIELD_NUMBER: builtins.int
22
+ PLAYBACKRATE_FIELD_NUMBER: builtins.int
23
+ REPEATMODE_FIELD_NUMBER: builtins.int
24
+ SHUFFLEMODE_FIELD_NUMBER: builtins.int
25
+ TIMESTAMP_FIELD_NUMBER: builtins.int
26
+ TITLE_FIELD_NUMBER: builtins.int
27
+ UNIQUEIDENTIFIER_FIELD_NUMBER: builtins.int
28
+ ISEXPLICITTRACK_FIELD_NUMBER: builtins.int
29
+ ISMUSICAPP_FIELD_NUMBER: builtins.int
30
+ RADIOSTATIONIDENTIFIER_FIELD_NUMBER: builtins.int
31
+ RADIOSTATIONHASH_FIELD_NUMBER: builtins.int
32
+ RADIOSTATIONNAME_FIELD_NUMBER: builtins.int
33
+ ARTWORKDATADIGEST_FIELD_NUMBER: builtins.int
34
+ ISALWAYSLIVE_FIELD_NUMBER: builtins.int
35
+ ISADVERTISEMENT_FIELD_NUMBER: builtins.int
36
+ album: builtins.str
37
+ artist: builtins.str
38
+ duration: builtins.float
39
+ elapsedTime: builtins.float
40
+ playbackRate: builtins.float
41
+ repeatMode: pyatv.protocols.mrp.protobuf.Common_pb2.RepeatMode.Enum.ValueType
42
+ shuffleMode: pyatv.protocols.mrp.protobuf.Common_pb2.ShuffleMode.Enum.ValueType
43
+ timestamp: builtins.float
44
+ title: builtins.str
45
+ uniqueIdentifier: builtins.int
46
+ isExplicitTrack: builtins.bool
47
+ isMusicApp: builtins.bool
48
+ radioStationIdentifier: builtins.int
49
+ radioStationHash: builtins.str
50
+ radioStationName: builtins.str
51
+ artworkDataDigest: builtins.bytes
52
+ isAlwaysLive: builtins.bool
53
+ isAdvertisement: builtins.bool
54
+ def __init__(
55
+ self,
56
+ *,
57
+ album: builtins.str | None = ...,
58
+ artist: builtins.str | None = ...,
59
+ duration: builtins.float | None = ...,
60
+ elapsedTime: builtins.float | None = ...,
61
+ playbackRate: builtins.float | None = ...,
62
+ repeatMode: pyatv.protocols.mrp.protobuf.Common_pb2.RepeatMode.Enum.ValueType | None = ...,
63
+ shuffleMode: pyatv.protocols.mrp.protobuf.Common_pb2.ShuffleMode.Enum.ValueType | None = ...,
64
+ timestamp: builtins.float | None = ...,
65
+ title: builtins.str | None = ...,
66
+ uniqueIdentifier: builtins.int | None = ...,
67
+ isExplicitTrack: builtins.bool | None = ...,
68
+ isMusicApp: builtins.bool | None = ...,
69
+ radioStationIdentifier: builtins.int | None = ...,
70
+ radioStationHash: builtins.str | None = ...,
71
+ radioStationName: builtins.str | None = ...,
72
+ artworkDataDigest: builtins.bytes | None = ...,
73
+ isAlwaysLive: builtins.bool | None = ...,
74
+ isAdvertisement: builtins.bool | None = ...,
75
+ ) -> None: ...
76
+ def HasField(self, field_name: typing.Literal["album", b"album", "artist", b"artist", "artworkDataDigest", b"artworkDataDigest", "duration", b"duration", "elapsedTime", b"elapsedTime", "isAdvertisement", b"isAdvertisement", "isAlwaysLive", b"isAlwaysLive", "isExplicitTrack", b"isExplicitTrack", "isMusicApp", b"isMusicApp", "playbackRate", b"playbackRate", "radioStationHash", b"radioStationHash", "radioStationIdentifier", b"radioStationIdentifier", "radioStationName", b"radioStationName", "repeatMode", b"repeatMode", "shuffleMode", b"shuffleMode", "timestamp", b"timestamp", "title", b"title", "uniqueIdentifier", b"uniqueIdentifier"]) -> builtins.bool: ...
77
+ def ClearField(self, field_name: typing.Literal["album", b"album", "artist", b"artist", "artworkDataDigest", b"artworkDataDigest", "duration", b"duration", "elapsedTime", b"elapsedTime", "isAdvertisement", b"isAdvertisement", "isAlwaysLive", b"isAlwaysLive", "isExplicitTrack", b"isExplicitTrack", "isMusicApp", b"isMusicApp", "playbackRate", b"playbackRate", "radioStationHash", b"radioStationHash", "radioStationIdentifier", b"radioStationIdentifier", "radioStationName", b"radioStationName", "repeatMode", b"repeatMode", "shuffleMode", b"shuffleMode", "timestamp", b"timestamp", "title", b"title", "uniqueIdentifier", b"uniqueIdentifier"]) -> None: ...
78
+
79
+ global___NowPlayingInfo = NowPlayingInfo
@@ -0,0 +1,11 @@
1
+ syntax = "proto2";
2
+
3
+ message NowPlayingPlayer {
4
+ optional string identifier = 1;
5
+ optional string displayName = 2;
6
+ optional bool isDefaultPlayer = 3;
7
+ optional int32 audioSessionType = 4;
8
+ optional int64 mxSessionIDs = 5;
9
+ optional uint32 audioSessionID = 6;
10
+ optional string iconURL = 7;
11
+ }
@@ -0,0 +1,45 @@
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 NowPlayingPlayer(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ IDENTIFIER_FIELD_NUMBER: builtins.int
18
+ DISPLAYNAME_FIELD_NUMBER: builtins.int
19
+ ISDEFAULTPLAYER_FIELD_NUMBER: builtins.int
20
+ AUDIOSESSIONTYPE_FIELD_NUMBER: builtins.int
21
+ MXSESSIONIDS_FIELD_NUMBER: builtins.int
22
+ AUDIOSESSIONID_FIELD_NUMBER: builtins.int
23
+ ICONURL_FIELD_NUMBER: builtins.int
24
+ identifier: builtins.str
25
+ displayName: builtins.str
26
+ isDefaultPlayer: builtins.bool
27
+ audioSessionType: builtins.int
28
+ mxSessionIDs: builtins.int
29
+ audioSessionID: builtins.int
30
+ iconURL: builtins.str
31
+ def __init__(
32
+ self,
33
+ *,
34
+ identifier: builtins.str | None = ...,
35
+ displayName: builtins.str | None = ...,
36
+ isDefaultPlayer: builtins.bool | None = ...,
37
+ audioSessionType: builtins.int | None = ...,
38
+ mxSessionIDs: builtins.int | None = ...,
39
+ audioSessionID: builtins.int | None = ...,
40
+ iconURL: builtins.str | None = ...,
41
+ ) -> None: ...
42
+ def HasField(self, field_name: typing.Literal["audioSessionID", b"audioSessionID", "audioSessionType", b"audioSessionType", "displayName", b"displayName", "iconURL", b"iconURL", "identifier", b"identifier", "isDefaultPlayer", b"isDefaultPlayer", "mxSessionIDs", b"mxSessionIDs"]) -> builtins.bool: ...
43
+ def ClearField(self, field_name: typing.Literal["audioSessionID", b"audioSessionID", "audioSessionType", b"audioSessionType", "displayName", b"displayName", "iconURL", b"iconURL", "identifier", b"identifier", "isDefaultPlayer", b"isDefaultPlayer", "mxSessionIDs", b"mxSessionIDs"]) -> None: ...
44
+
45
+ global___NowPlayingPlayer = NowPlayingPlayer
@@ -0,0 +1,17 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/DeviceInfoMessage.proto";
4
+
5
+ message Origin {
6
+ enum Type {
7
+ Unknown = 0;
8
+ Local = 1;
9
+ Custom = 2;
10
+ }
11
+
12
+ optional Type type = 1;
13
+ optional string displayName = 2;
14
+ optional int32 identifier = 3;
15
+ optional DeviceInfoMessage deviceInfo = 4;
16
+ optional bool isLocallyHosted = 5;
17
+ }
@@ -0,0 +1,11 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+
5
+ extend ProtocolMessage {
6
+ optional OriginClientPropertiesMessage originClientPropertiesMessage = 87;
7
+ }
8
+
9
+ message OriginClientPropertiesMessage {
10
+ optional double lastPlayingTimestamp = 1;
11
+ }
@@ -0,0 +1,32 @@
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 OriginClientPropertiesMessage(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+
19
+ LASTPLAYINGTIMESTAMP_FIELD_NUMBER: builtins.int
20
+ lastPlayingTimestamp: builtins.float
21
+ def __init__(
22
+ self,
23
+ *,
24
+ lastPlayingTimestamp: builtins.float | None = ...,
25
+ ) -> None: ...
26
+ def HasField(self, field_name: typing.Literal["lastPlayingTimestamp", b"lastPlayingTimestamp"]) -> builtins.bool: ...
27
+ def ClearField(self, field_name: typing.Literal["lastPlayingTimestamp", b"lastPlayingTimestamp"]) -> None: ...
28
+
29
+ global___OriginClientPropertiesMessage = OriginClientPropertiesMessage
30
+
31
+ ORIGINCLIENTPROPERTIESMESSAGE_FIELD_NUMBER: builtins.int
32
+ originClientPropertiesMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___OriginClientPropertiesMessage]
@@ -0,0 +1,63 @@
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.message
10
+ import pyatv.protocols.mrp.protobuf.DeviceInfoMessage_pb2
11
+ import sys
12
+ import typing
13
+
14
+ if sys.version_info >= (3, 10):
15
+ import typing as typing_extensions
16
+ else:
17
+ import typing_extensions
18
+
19
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
20
+
21
+ @typing.final
22
+ class Origin(google.protobuf.message.Message):
23
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
24
+
25
+ class _Type:
26
+ ValueType = typing.NewType("ValueType", builtins.int)
27
+ V: typing_extensions.TypeAlias = ValueType
28
+
29
+ class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Origin._Type.ValueType], builtins.type):
30
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
31
+ Unknown: Origin._Type.ValueType # 0
32
+ Local: Origin._Type.ValueType # 1
33
+ Custom: Origin._Type.ValueType # 2
34
+
35
+ class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
36
+ Unknown: Origin.Type.ValueType # 0
37
+ Local: Origin.Type.ValueType # 1
38
+ Custom: Origin.Type.ValueType # 2
39
+
40
+ TYPE_FIELD_NUMBER: builtins.int
41
+ DISPLAYNAME_FIELD_NUMBER: builtins.int
42
+ IDENTIFIER_FIELD_NUMBER: builtins.int
43
+ DEVICEINFO_FIELD_NUMBER: builtins.int
44
+ ISLOCALLYHOSTED_FIELD_NUMBER: builtins.int
45
+ type: global___Origin.Type.ValueType
46
+ displayName: builtins.str
47
+ identifier: builtins.int
48
+ isLocallyHosted: builtins.bool
49
+ @property
50
+ def deviceInfo(self) -> pyatv.protocols.mrp.protobuf.DeviceInfoMessage_pb2.DeviceInfoMessage: ...
51
+ def __init__(
52
+ self,
53
+ *,
54
+ type: global___Origin.Type.ValueType | None = ...,
55
+ displayName: builtins.str | None = ...,
56
+ identifier: builtins.int | None = ...,
57
+ deviceInfo: pyatv.protocols.mrp.protobuf.DeviceInfoMessage_pb2.DeviceInfoMessage | None = ...,
58
+ isLocallyHosted: builtins.bool | None = ...,
59
+ ) -> None: ...
60
+ def HasField(self, field_name: typing.Literal["deviceInfo", b"deviceInfo", "displayName", b"displayName", "identifier", b"identifier", "isLocallyHosted", b"isLocallyHosted", "type", b"type"]) -> builtins.bool: ...
61
+ def ClearField(self, field_name: typing.Literal["deviceInfo", b"deviceInfo", "displayName", b"displayName", "identifier", b"identifier", "isLocallyHosted", b"isLocallyHosted", "type", b"type"]) -> None: ...
62
+
63
+ global___Origin = Origin
@@ -0,0 +1,15 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ContentItem.proto";
4
+ import "pyatv/protocols/mrp/protobuf/PlaybackQueueContext.proto";
5
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
6
+
7
+ message PlaybackQueue {
8
+ optional int32 location = 1;
9
+ repeated ContentItem contentItems = 2;
10
+ optional PlaybackQueueContext context = 3;
11
+ optional string requestId = 4;
12
+ optional PlayerPath resolvedPlayerPath = 5;
13
+ optional bool sendingPlaybackQueueTransaction = 6;
14
+ optional string queueIdentifier = 7;
15
+ }
@@ -0,0 +1,7 @@
1
+ syntax = "proto2";
2
+
3
+ message PlaybackQueueCapabilities {
4
+ optional bool requestByRange = 1;
5
+ optional bool requestByIdentifiers = 2;
6
+ optional bool requestByRequest = 3;
7
+ }
@@ -0,0 +1,33 @@
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 PlaybackQueueCapabilities(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ REQUESTBYRANGE_FIELD_NUMBER: builtins.int
18
+ REQUESTBYIDENTIFIERS_FIELD_NUMBER: builtins.int
19
+ REQUESTBYREQUEST_FIELD_NUMBER: builtins.int
20
+ requestByRange: builtins.bool
21
+ requestByIdentifiers: builtins.bool
22
+ requestByRequest: builtins.bool
23
+ def __init__(
24
+ self,
25
+ *,
26
+ requestByRange: builtins.bool | None = ...,
27
+ requestByIdentifiers: builtins.bool | None = ...,
28
+ requestByRequest: builtins.bool | None = ...,
29
+ ) -> None: ...
30
+ def HasField(self, field_name: typing.Literal["requestByIdentifiers", b"requestByIdentifiers", "requestByRange", b"requestByRange", "requestByRequest", b"requestByRequest"]) -> builtins.bool: ...
31
+ def ClearField(self, field_name: typing.Literal["requestByIdentifiers", b"requestByIdentifiers", "requestByRange", b"requestByRange", "requestByRequest", b"requestByRequest"]) -> None: ...
32
+
33
+ global___PlaybackQueueCapabilities = PlaybackQueueCapabilities
@@ -0,0 +1,5 @@
1
+ syntax = "proto2";
2
+
3
+ message PlaybackQueueContext {
4
+ optional string revision = 1;
5
+ }
@@ -0,0 +1,27 @@
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 PlaybackQueueContext(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ REVISION_FIELD_NUMBER: builtins.int
18
+ revision: builtins.str
19
+ def __init__(
20
+ self,
21
+ *,
22
+ revision: builtins.str | None = ...,
23
+ ) -> None: ...
24
+ def HasField(self, field_name: typing.Literal["revision", b"revision"]) -> builtins.bool: ...
25
+ def ClearField(self, field_name: typing.Literal["revision", b"revision"]) -> None: ...
26
+
27
+ global___PlaybackQueueContext = PlaybackQueueContext
@@ -0,0 +1,29 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
4
+ import "pyatv/protocols/mrp/protobuf/PlaybackQueueContext.proto";
5
+ import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
6
+
7
+ extend ProtocolMessage {
8
+ optional PlaybackQueueRequestMessage playbackQueueRequestMessage = 37;
9
+ }
10
+
11
+ message PlaybackQueueRequestMessage {
12
+ optional int32 location = 1;
13
+ optional int32 length = 2;
14
+ optional bool includeMetadata = 3;
15
+ optional double artworkWidth = 4;
16
+ optional double artworkHeight = 5;
17
+ optional bool includeLyrics = 6;
18
+ optional bool includeSections = 7;
19
+ optional bool includeInfo = 8;
20
+ optional bool includeLanguageOptions = 9;
21
+ optional PlaybackQueueContext context = 10;
22
+ optional string requestID = 11;
23
+ repeated string contentItemIdentifiers = 12;
24
+ optional bool returnContentItemAssetsInUserCompletion = 13;
25
+ optional PlayerPath playerPath = 14;
26
+ optional int32 cachingPolicy = 15;
27
+ optional string label = 16;
28
+ optional bool isLegacyNowPlayingInfoRequest = 17;
29
+ }
@@ -0,0 +1,87 @@
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.PlaybackQueueContext_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 PlaybackQueueRequestMessage(google.protobuf.message.Message):
21
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
22
+
23
+ LOCATION_FIELD_NUMBER: builtins.int
24
+ LENGTH_FIELD_NUMBER: builtins.int
25
+ INCLUDEMETADATA_FIELD_NUMBER: builtins.int
26
+ ARTWORKWIDTH_FIELD_NUMBER: builtins.int
27
+ ARTWORKHEIGHT_FIELD_NUMBER: builtins.int
28
+ INCLUDELYRICS_FIELD_NUMBER: builtins.int
29
+ INCLUDESECTIONS_FIELD_NUMBER: builtins.int
30
+ INCLUDEINFO_FIELD_NUMBER: builtins.int
31
+ INCLUDELANGUAGEOPTIONS_FIELD_NUMBER: builtins.int
32
+ CONTEXT_FIELD_NUMBER: builtins.int
33
+ REQUESTID_FIELD_NUMBER: builtins.int
34
+ CONTENTITEMIDENTIFIERS_FIELD_NUMBER: builtins.int
35
+ RETURNCONTENTITEMASSETSINUSERCOMPLETION_FIELD_NUMBER: builtins.int
36
+ PLAYERPATH_FIELD_NUMBER: builtins.int
37
+ CACHINGPOLICY_FIELD_NUMBER: builtins.int
38
+ LABEL_FIELD_NUMBER: builtins.int
39
+ ISLEGACYNOWPLAYINGINFOREQUEST_FIELD_NUMBER: builtins.int
40
+ location: builtins.int
41
+ length: builtins.int
42
+ includeMetadata: builtins.bool
43
+ artworkWidth: builtins.float
44
+ artworkHeight: builtins.float
45
+ includeLyrics: builtins.bool
46
+ includeSections: builtins.bool
47
+ includeInfo: builtins.bool
48
+ includeLanguageOptions: builtins.bool
49
+ requestID: builtins.str
50
+ returnContentItemAssetsInUserCompletion: builtins.bool
51
+ cachingPolicy: builtins.int
52
+ label: builtins.str
53
+ isLegacyNowPlayingInfoRequest: builtins.bool
54
+ @property
55
+ def context(self) -> pyatv.protocols.mrp.protobuf.PlaybackQueueContext_pb2.PlaybackQueueContext: ...
56
+ @property
57
+ def contentItemIdentifiers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
58
+ @property
59
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
60
+ def __init__(
61
+ self,
62
+ *,
63
+ location: builtins.int | None = ...,
64
+ length: builtins.int | None = ...,
65
+ includeMetadata: builtins.bool | None = ...,
66
+ artworkWidth: builtins.float | None = ...,
67
+ artworkHeight: builtins.float | None = ...,
68
+ includeLyrics: builtins.bool | None = ...,
69
+ includeSections: builtins.bool | None = ...,
70
+ includeInfo: builtins.bool | None = ...,
71
+ includeLanguageOptions: builtins.bool | None = ...,
72
+ context: pyatv.protocols.mrp.protobuf.PlaybackQueueContext_pb2.PlaybackQueueContext | None = ...,
73
+ requestID: builtins.str | None = ...,
74
+ contentItemIdentifiers: collections.abc.Iterable[builtins.str] | None = ...,
75
+ returnContentItemAssetsInUserCompletion: builtins.bool | None = ...,
76
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
77
+ cachingPolicy: builtins.int | None = ...,
78
+ label: builtins.str | None = ...,
79
+ isLegacyNowPlayingInfoRequest: builtins.bool | None = ...,
80
+ ) -> None: ...
81
+ def HasField(self, field_name: typing.Literal["artworkHeight", b"artworkHeight", "artworkWidth", b"artworkWidth", "cachingPolicy", b"cachingPolicy", "context", b"context", "includeInfo", b"includeInfo", "includeLanguageOptions", b"includeLanguageOptions", "includeLyrics", b"includeLyrics", "includeMetadata", b"includeMetadata", "includeSections", b"includeSections", "isLegacyNowPlayingInfoRequest", b"isLegacyNowPlayingInfoRequest", "label", b"label", "length", b"length", "location", b"location", "playerPath", b"playerPath", "requestID", b"requestID", "returnContentItemAssetsInUserCompletion", b"returnContentItemAssetsInUserCompletion"]) -> builtins.bool: ...
82
+ def ClearField(self, field_name: typing.Literal["artworkHeight", b"artworkHeight", "artworkWidth", b"artworkWidth", "cachingPolicy", b"cachingPolicy", "contentItemIdentifiers", b"contentItemIdentifiers", "context", b"context", "includeInfo", b"includeInfo", "includeLanguageOptions", b"includeLanguageOptions", "includeLyrics", b"includeLyrics", "includeMetadata", b"includeMetadata", "includeSections", b"includeSections", "isLegacyNowPlayingInfoRequest", b"isLegacyNowPlayingInfoRequest", "label", b"label", "length", b"length", "location", b"location", "playerPath", b"playerPath", "requestID", b"requestID", "returnContentItemAssetsInUserCompletion", b"returnContentItemAssetsInUserCompletion"]) -> None: ...
83
+
84
+ global___PlaybackQueueRequestMessage = PlaybackQueueRequestMessage
85
+
86
+ PLAYBACKQUEUEREQUESTMESSAGE_FIELD_NUMBER: builtins.int
87
+ playbackQueueRequestMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___PlaybackQueueRequestMessage]
@@ -0,0 +1,53 @@
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.ContentItem_pb2
12
+ import pyatv.protocols.mrp.protobuf.PlaybackQueueContext_pb2
13
+ import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
14
+ import typing
15
+
16
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
17
+
18
+ @typing.final
19
+ class PlaybackQueue(google.protobuf.message.Message):
20
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
21
+
22
+ LOCATION_FIELD_NUMBER: builtins.int
23
+ CONTENTITEMS_FIELD_NUMBER: builtins.int
24
+ CONTEXT_FIELD_NUMBER: builtins.int
25
+ REQUESTID_FIELD_NUMBER: builtins.int
26
+ RESOLVEDPLAYERPATH_FIELD_NUMBER: builtins.int
27
+ SENDINGPLAYBACKQUEUETRANSACTION_FIELD_NUMBER: builtins.int
28
+ QUEUEIDENTIFIER_FIELD_NUMBER: builtins.int
29
+ location: builtins.int
30
+ requestId: builtins.str
31
+ sendingPlaybackQueueTransaction: builtins.bool
32
+ queueIdentifier: builtins.str
33
+ @property
34
+ def contentItems(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem]: ...
35
+ @property
36
+ def context(self) -> pyatv.protocols.mrp.protobuf.PlaybackQueueContext_pb2.PlaybackQueueContext: ...
37
+ @property
38
+ def resolvedPlayerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
39
+ def __init__(
40
+ self,
41
+ *,
42
+ location: builtins.int | None = ...,
43
+ contentItems: collections.abc.Iterable[pyatv.protocols.mrp.protobuf.ContentItem_pb2.ContentItem] | None = ...,
44
+ context: pyatv.protocols.mrp.protobuf.PlaybackQueueContext_pb2.PlaybackQueueContext | None = ...,
45
+ requestId: builtins.str | None = ...,
46
+ resolvedPlayerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
47
+ sendingPlaybackQueueTransaction: builtins.bool | None = ...,
48
+ queueIdentifier: builtins.str | None = ...,
49
+ ) -> None: ...
50
+ def HasField(self, field_name: typing.Literal["context", b"context", "location", b"location", "queueIdentifier", b"queueIdentifier", "requestId", b"requestId", "resolvedPlayerPath", b"resolvedPlayerPath", "sendingPlaybackQueueTransaction", b"sendingPlaybackQueueTransaction"]) -> builtins.bool: ...
51
+ def ClearField(self, field_name: typing.Literal["contentItems", b"contentItems", "context", b"context", "location", b"location", "queueIdentifier", b"queueIdentifier", "requestId", b"requestId", "resolvedPlayerPath", b"resolvedPlayerPath", "sendingPlaybackQueueTransaction", b"sendingPlaybackQueueTransaction"]) -> None: ...
52
+
53
+ global___PlaybackQueue = PlaybackQueue
@@ -0,0 +1,13 @@
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 PlayerClientPropertiesMessage playerClientPropertiesMessage = 86;
8
+ }
9
+
10
+ message PlayerClientPropertiesMessage {
11
+ optional PlayerPath playerPath = 1;
12
+ optional double lastPlayingTimestamp = 2;
13
+ }
@@ -0,0 +1,37 @@
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 PlayerClientPropertiesMessage(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ PLAYERPATH_FIELD_NUMBER: builtins.int
21
+ LASTPLAYINGTIMESTAMP_FIELD_NUMBER: builtins.int
22
+ lastPlayingTimestamp: builtins.float
23
+ @property
24
+ def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
25
+ def __init__(
26
+ self,
27
+ *,
28
+ playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
29
+ lastPlayingTimestamp: builtins.float | None = ...,
30
+ ) -> None: ...
31
+ def HasField(self, field_name: typing.Literal["lastPlayingTimestamp", b"lastPlayingTimestamp", "playerPath", b"playerPath"]) -> builtins.bool: ...
32
+ def ClearField(self, field_name: typing.Literal["lastPlayingTimestamp", b"lastPlayingTimestamp", "playerPath", b"playerPath"]) -> None: ...
33
+
34
+ global___PlayerClientPropertiesMessage = PlayerClientPropertiesMessage
35
+
36
+ PLAYERCLIENTPROPERTIESMESSAGE_FIELD_NUMBER: builtins.int
37
+ playerClientPropertiesMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___PlayerClientPropertiesMessage]
@@ -0,0 +1,11 @@
1
+ syntax = "proto2";
2
+
3
+ import "pyatv/protocols/mrp/protobuf/Origin.proto";
4
+ import "pyatv/protocols/mrp/protobuf/NowPlayingClient.proto";
5
+ import "pyatv/protocols/mrp/protobuf/NowPlayingPlayer.proto";
6
+
7
+ message PlayerPath {
8
+ optional Origin origin = 1;
9
+ optional NowPlayingClient client = 2;
10
+ optional NowPlayingPlayer player = 3;
11
+ }