@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,454 @@
1
+ <%
2
+ import os
3
+ import sys
4
+
5
+ import pdoc
6
+ from pdoc.html_helpers import extract_toc, glimpse, to_html as _to_html, format_git_link
7
+
8
+ import pyatv
9
+
10
+ def link(d, name=None, fmt='{}'):
11
+ name = fmt.format(name or d.qualname + ('()' if isinstance(d, pdoc.Function) else ''))
12
+ if not isinstance(d, pdoc.Doc) or isinstance(d, pdoc.External) and not external_links:
13
+ return name
14
+ url = d.url(relative_to=module, link_prefix=link_prefix,
15
+ top_ancestor=not show_inherited_members).replace("index.html", "").replace(".html", "")
16
+ # Ugly, ugly hack to make navigation working in submodules...
17
+ if url == "":
18
+ url = ".."
19
+ elif url.startswith("#"):
20
+ pass
21
+ elif "#" not in url:
22
+ if not url.endswith("/"):
23
+ url += "/"
24
+ else:
25
+ url = "../" + url
26
+ return '<a title="{}" href="{}">{}</a>'.format(d.refname, url, name)
27
+
28
+ def const_link(refname):
29
+ desc = ".".join(refname.split(".")[-2:])
30
+ return f'<a title="{refname}" href="/api/const#{refname}">{desc}</a>'
31
+
32
+ def to_html(text):
33
+ return _to_html(text, module=module, link=link, latex_math=latex_math)
34
+
35
+ # Hack to convert Union[x, NoneType] to Optional[x] like in python 3.9
36
+ def insert_union_types(returns, is_return=True):
37
+ if "Union" in returns and "NoneType" in returns:
38
+ returns = returns.replace("Union[", "Optional[")
39
+ returns = returns.replace(",\N{NBSP}NoneType", "")
40
+ return (' ->\N{NBSP}' if is_return else '') + returns
41
+ %>
42
+
43
+ <%def name="ident(name)"><span class="ident">${name}</span></%def>
44
+
45
+ <%def name="show_source(d)">
46
+ % if (show_source_code or git_link_template) and d.source and d.obj is not getattr(d.inherits, 'obj', None):
47
+ <% git_link = format_git_link(git_link_template, d) %>
48
+ % if show_source_code:
49
+ <details class="source">
50
+ <summary>
51
+ <span>Expand source code</span>
52
+ % if git_link:
53
+ <a href="${git_link}" class="git-link">View at GitHub</a>
54
+ %endif
55
+ </summary>
56
+ <pre><code class="python">${d.source | h}</code></pre>
57
+ </details>
58
+ % elif git_link:
59
+ <div class="git-link-div"><a href="${git_link}" class="git-link">Browse git</a></div>
60
+ %endif
61
+ %endif
62
+ </%def>
63
+
64
+ <%def name="show_desc(d, subclasses=None, short=False)">
65
+ <%
66
+ inherits = ' inherited' if d.inherits else ''
67
+ docstring = glimpse(d.docstring) if short or inherits else d.docstring
68
+ %>
69
+ % if d.inherits:
70
+ <p class="inheritance">
71
+ <em>Inherited from:</em>
72
+ % if hasattr(d.inherits, 'cls'):
73
+ <code>${link(d.inherits.cls)}</code>.<code>${link(d.inherits, d.name)}</code>
74
+ % else:
75
+ <code>${link(d.inherits)}</code>
76
+ % endif
77
+ </p>
78
+ % endif
79
+ ${show_protocols(d, subclasses)}
80
+ <section class="desc${inherits}">${docstring | to_html}</section>
81
+ % if not isinstance(d, pdoc.Module):
82
+ ${show_source(d)}
83
+ % endif
84
+ </%def>
85
+
86
+ <%def name="show_module_list(modules)">
87
+ <h1>Python module list</h1>
88
+
89
+ % if not modules:
90
+ <p>No modules found.</p>
91
+ % else:
92
+ <dl id="http-server-module-list">
93
+ % for name, desc in modules:
94
+ <div class="flex">
95
+ <dt><a href="${link_prefix}${name}">${name}</a></dt>
96
+ <dd>${desc | glimpse, to_html}</dd>
97
+ </div>
98
+ % endfor
99
+ </dl>
100
+ % endif
101
+ </%def>
102
+
103
+ <%def name="show_column_list(items)">
104
+ <%
105
+ two_column = len(items) >= 6 and all(len(i.name) < 20 for i in items)
106
+ %>
107
+ <ul class="${'two-column' if two_column else ''}">
108
+ % for item in items:
109
+ <li><code>${link(item, item.name)}</code></li>
110
+ % endfor
111
+ </ul>
112
+ </%def>
113
+
114
+ <%def name="show_protocols(f, subclasses)">
115
+ <%
116
+ feature_name = getattr(f.obj, "_feature_name", "")
117
+ refname = "pyatv.const.FeatureName." + feature_name
118
+ protocols = []
119
+ proto_map = {proto.name.lower(): proto for proto in pyatv.const.Protocol}
120
+ %>
121
+ % if feature_name:
122
+ % for subclass in subclasses or []:
123
+ <%
124
+ # Get reference to method/property in protocol implementation
125
+ module_name, name = subclass.qualname.rsplit(".", maxsplit=1)
126
+ module = sys.modules[module_name]
127
+ method = getattr(getattr(module, name), f.name)
128
+
129
+ # If method is a property, extract the getter method
130
+ target = getattr(method, "fget", method)
131
+ if target != f.obj and "facade" not in module.__name__:
132
+ protocols.append(proto_map[module.__name__.split(".")[-1]])
133
+ %>
134
+ % endfor
135
+ <div class="api_feature">
136
+ <span>Feature: ${const_link(refname)},</span>
137
+ <span>Supported by: ${", ".join([const_link(f"pyatv.const.Protocol.{x.name}") for x in protocols])}</span>
138
+ </div>
139
+ %endif
140
+ </%def>
141
+
142
+ <%def name="show_module(module)">
143
+ <%
144
+ variables = module.variables(sort=sort_identifiers)
145
+ classes = module.classes(sort=sort_identifiers)
146
+ functions = module.functions(sort=sort_identifiers)
147
+ submodules = module.submodules()
148
+ %>
149
+
150
+ <%def name="show_func(f, subclasses)">
151
+ <dt id="${f.refname}">
152
+ <code class="name flex">
153
+ <%
154
+ params = ', '.join([insert_union_types(param, is_return=False) for param in f.params(annotate=show_type_annotations, link=link)])
155
+ returns = show_type_annotations and f.return_annotation(link=link) or ''
156
+ if returns:
157
+ returns = insert_union_types(returns)
158
+ %>
159
+ <span>${f.funcdef()} ${ident(f.name)}</span>(<span>${params})${returns}</span>
160
+ </code>
161
+ </dt>
162
+ <dd>
163
+ ${show_desc(f, subclasses)}
164
+ </dd>
165
+ </%def>
166
+
167
+ <header>
168
+ % if http_server:
169
+ <nav class="http-server-breadcrumbs">
170
+ <a href="/">All packages</a>
171
+ <% parts = module.name.split('.')[:-1] %>
172
+ % for i, m in enumerate(parts):
173
+ <% parent = '.'.join(parts[:i+1]) %>
174
+ :: <a href="/${parent.replace('.', '/')}/">${parent}</a>
175
+ % endfor
176
+ </nav>
177
+ % endif
178
+ <h1 class="title">${'Namespace' if module.is_namespace else 'Module'} <code>${module.name}</code></h1>
179
+ </header>
180
+
181
+ <section id="section-intro">
182
+ ${module.docstring | to_html}
183
+ ${show_source(module)}
184
+ </section>
185
+
186
+ <section>
187
+ % if submodules:
188
+ <h2 class="section-title" id="header-submodules">Sub-modules</h2>
189
+ <dl>
190
+ % for m in submodules:
191
+ <dt><code class="name">${link(m)}</code></dt>
192
+ <dd>${show_desc(m, short=True)}</dd>
193
+ % endfor
194
+ </dl>
195
+ % endif
196
+ </section>
197
+
198
+ <section>
199
+ % if variables:
200
+ <h2 class="section-title" id="header-variables">Global variables</h2>
201
+ <dl>
202
+ % for v in variables:
203
+ <dt id="${v.refname}"><code class="name">var ${ident(v.name)}</code></dt>
204
+ <dd>${show_desc(v)}</dd>
205
+ % endfor
206
+ </dl>
207
+ % endif
208
+ </section>
209
+
210
+ <section>
211
+ % if functions:
212
+ <h2 class="section-title" id="header-functions">Functions</h2>
213
+ <dl>
214
+ % for f in functions:
215
+ ${show_func(f, [])}
216
+ % endfor
217
+ </dl>
218
+ % endif
219
+ </section>
220
+
221
+ <section>
222
+ % if classes:
223
+ <h2 class="section-title" id="header-classes">Classes</h2>
224
+ <dl>
225
+ % for c in classes:
226
+ <%
227
+ class_vars = c.class_variables(show_inherited_members, sort=sort_identifiers)
228
+ smethods = c.functions(show_inherited_members, sort=sort_identifiers)
229
+ inst_vars = c.instance_variables(show_inherited_members, sort=sort_identifiers)
230
+ methods = c.methods(show_inherited_members, sort=sort_identifiers)
231
+ mro = c.mro()
232
+ subclasses = c.subclasses()
233
+ params = ', '.join([insert_union_types(param, is_return=False) for param in c.params(annotate=show_type_annotations, link=link)])
234
+ %>
235
+ <dt id="${c.refname}"><code class="flex name class">
236
+ <span>class ${ident(c.name)}</span>
237
+ % if params:
238
+ <span>(</span><span>${params})</span>
239
+ % endif
240
+ </code></dt>
241
+
242
+ <dd>${show_desc(c)}
243
+
244
+ % if mro:
245
+ <h3>Ancestors</h3>
246
+ <ul class="hlist">
247
+ % for cls in mro:
248
+ <li>${link(cls)}</li>
249
+ % endfor
250
+ </ul>
251
+ %endif
252
+
253
+ % if subclasses:
254
+ <h3>Subclasses</h3>
255
+ <ul class="hlist">
256
+ % for sub in subclasses:
257
+ <li>${link(sub)}</li>
258
+ % endfor
259
+ </ul>
260
+ % endif
261
+ % if class_vars:
262
+ <h3>Class variables</h3>
263
+ <dl>
264
+ % for v in class_vars:
265
+ <%
266
+ var_type = show_type_annotations and v.type_annotation(link=link) or ''
267
+ if var_type:
268
+ var_type = insert_union_types(var_type)
269
+
270
+ # Try to extract value from enums and pydantic models
271
+ var_value = ""
272
+ if any(cls.name.startswith("enum.") for cls in mro):
273
+ var_value = f" = {getattr(c.obj, v.name).value}"
274
+ elif any(cls.name.startswith("pydantic.main.BaseModel") for cls in mro):
275
+ if hasattr(c.obj, "__fields__"):
276
+ field_info = c.obj.__fields__[v.name]
277
+ else:
278
+ field_info = c.obj.model_fields[v.name]
279
+
280
+ # Ignore fields that are pydantic models as they produce unnecessary output
281
+ if "__pydantic_serializer__" not in dir(field_info.annotation):
282
+ var_value = f" = {field_info.default}"
283
+ %>
284
+ <dt id="${v.refname}"><code class="name">var ${ident(v.name)}${var_type}${var_value}</code></dt>
285
+ <dd>${show_desc(v)}</dd>
286
+ % endfor
287
+ </dl>
288
+ % endif
289
+ % if smethods:
290
+ <h3>Static methods</h3>
291
+ <dl>
292
+ % for f in smethods:
293
+ ${show_func(f, subclasses)}
294
+ % endfor
295
+ </dl>
296
+ % endif
297
+ % if inst_vars:
298
+ <h3>Instance variables</h3>
299
+ <dl>
300
+ % for v in inst_vars:
301
+ <%
302
+ var_type = show_type_annotations and v.type_annotation(link=link) or ''
303
+ if var_type:
304
+ var_type = insert_union_types(var_type)
305
+ %>
306
+ <dt id="${v.refname}"><code class="name">var ${ident(v.name)}${var_type}</code></dt>
307
+ <dd>${show_desc(v, subclasses)}</dd>
308
+ % endfor
309
+ </dl>
310
+ % endif
311
+ % if methods:
312
+ <h3>Methods</h3>
313
+ <dl>
314
+ % for f in methods:
315
+ ${show_func(f, subclasses)}
316
+ % endfor
317
+ </dl>
318
+ % endif
319
+
320
+ % if not show_inherited_members:
321
+ <%
322
+ members = c.inherited_members()
323
+ %>
324
+ % if members:
325
+ <h3>Inherited members</h3>
326
+ <ul class="hlist">
327
+ % for cls, mems in members:
328
+ <li><code><b>${link(cls)}</b></code>:
329
+ <ul class="hlist">
330
+ % for m in mems:
331
+ <li><code>${link(m, name=m.name)}</code></li>
332
+ % endfor
333
+ </ul>
334
+
335
+ </li>
336
+ % endfor
337
+ </ul>
338
+ % endif
339
+ % endif
340
+
341
+ </dd>
342
+ % endfor
343
+ </dl>
344
+ % endif
345
+ </section>
346
+ </%def>
347
+
348
+ <%def name="module_index(module)">
349
+ <%
350
+ variables = module.variables(sort=sort_identifiers)
351
+ classes = module.classes(sort=sort_identifiers)
352
+ functions = module.functions(sort=sort_identifiers)
353
+ submodules = module.submodules()
354
+ supermodule = module.supermodule
355
+ %>
356
+ <nav id="sidebar">
357
+
358
+ <h1>Index</h1>
359
+ ${extract_toc(module.docstring) if extract_module_toc_into_sidebar else ''}
360
+
361
+ % if "__pdoc_dev_page__" in dir(module.obj):
362
+ This module has additional documentation
363
+ <a title="test" href=${f"{module.obj.__pdoc_dev_page__}"}>here</a>.
364
+ % endif
365
+
366
+ <ul id="index">
367
+ % if supermodule:
368
+ <li><h3>Super-module</h3>
369
+ <ul>
370
+ <li><code>${link(supermodule)}</code></li>
371
+ </ul>
372
+ </li>
373
+ % endif
374
+
375
+ % if submodules:
376
+ <li><h3><a href="#header-submodules">Sub-modules</a></h3>
377
+ <ul>
378
+ % for m in submodules:
379
+ <li><code>${link(m)}</code></li>
380
+ % endfor
381
+ </ul>
382
+ </li>
383
+ % endif
384
+
385
+ % if variables:
386
+ <li><h3><a href="#header-variables">Global variables</a></h3>
387
+ ${show_column_list(variables)}
388
+ </li>
389
+ % endif
390
+
391
+ % if functions:
392
+ <li><h3><a href="#header-functions">Functions</a></h3>
393
+ ${show_column_list(functions)}
394
+ </li>
395
+ % endif
396
+
397
+ % if classes:
398
+ <li><h3><a href="#header-classes">Classes</a></h3>
399
+ <ul>
400
+ % for c in classes:
401
+ <li>
402
+ <h4><code>${link(c)}</code></h4>
403
+ <%
404
+ members = c.functions(sort=sort_identifiers) + c.methods(sort=sort_identifiers)
405
+ if list_class_variables_in_index:
406
+ members += (c.instance_variables(sort=sort_identifiers) +
407
+ c.class_variables(sort=sort_identifiers))
408
+ if not show_inherited_members:
409
+ members = [i for i in members if not i.inherits]
410
+ if sort_identifiers:
411
+ members = sorted(members)
412
+ %>
413
+ % if members:
414
+ ${show_column_list(members)}
415
+ % endif
416
+ </li>
417
+ % endfor
418
+ </ul>
419
+ </li>
420
+ % endif
421
+
422
+ </ul>
423
+ </nav>
424
+ </%def>
425
+
426
+ <%
427
+ url = module.name.replace("pyatv", "").replace(".", "/")
428
+ if url.startswith("/"):
429
+ url = url[1:]
430
+ if not url.endswith("/"):
431
+ url += "/"
432
+ %>
433
+
434
+ ---
435
+ layout: template
436
+ title: API - ${module.name}
437
+ permalink: /api/${url}
438
+ link_group: api
439
+ ---
440
+
441
+ % if module_list:
442
+ <article id="content">
443
+ ${show_module_list(modules)}
444
+ </article>
445
+ % else:
446
+ ${module_index(module)}
447
+ <article id="content">
448
+ ${show_module(module)}
449
+ </article>
450
+ % endif
451
+
452
+ <footer id="footer">
453
+ <p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite>.</p>
454
+ </footer>
@@ -0,0 +1,87 @@
1
+ ---
2
+ layout: template
3
+ title: Acknowledgements
4
+ permalink: /support/acknowledgements/
5
+ link_group: support
6
+ ---
7
+ # Acknowledgements
8
+
9
+ A *lot* of time and effort has been put into this project in order
10
+ to get where it is today. Some things I've done myself, but I could
11
+ of course not have done it all without help. So this page is a small
12
+ dedication the rest of you!
13
+
14
+ ## External Projects
15
+
16
+ **[GitHub](https://github.com)**
17
+
18
+ Thanks for providing a good, integrated platform supporting free and
19
+ open source software. Since the launch of Pages and Actions I've
20
+ managed to move more or less completely to rely on GitHub services,
21
+ which is great!
22
+
23
+ **[mediaremotetv-protocol](https://github.com/jeanregisser/mediaremotetv-protocol)**
24
+
25
+ Thanks to Jean Regisser, which started exploring the Media Remote Protocol
26
+ and giving early insights. The `MRP` support is based on this findings.
27
+ It also helped me complete the reverse engineering of the protocol.
28
+ Some of my findings I have already submitted back.
29
+
30
+ **[pdoc3](https://pdoc3.github.io/pdoc/)**
31
+
32
+ Every library needs an API reference. I use pdoc3 for that due to its
33
+ flexibility. With some tweaks it integrates neatly with the rest of the
34
+ documentation.
35
+
36
+ **[miniaudio](https://github.com/mackron/miniaudio) / [pyminiaudio](https://github.com/irmen/pyminiaudio)**
37
+
38
+ Excellent minimalistic library for decoding and working with audio files! Supports
39
+ most relevant audio formats and operating systems. This library is vital
40
+ for audio streaming in RAOP (used via the python library).
41
+
42
+ ## Contributors
43
+
44
+ This is a complete list of everyone that has contributed code to
45
+ the project: thank you!
46
+
47
+ ```raw
48
+ acheronfail <acheronfail at gmail.com>
49
+ Alexandre Pulido <apulido at free.fr>
50
+ Alexey <alexey.www at gmail.com>
51
+ Andreas Billmeier <b at edevau.net>
52
+ Colin <12702068+ckeehan at users.noreply.github.com>
53
+ Colin <ckeehan at me.com>
54
+ crxporter <38265886+crxporter at users.noreply.github.com>
55
+ Dennis Frommknecht <dfrommi at users.noreply.github.com>
56
+ Doug Hoffman <doug+github at hoff.mn>
57
+ Erik Hendrix <hendrix_erik at hotmail.com>
58
+ jakobjjw <73580309+jakobjjw at users.noreply.github.com>
59
+ jdsnape <joel at sna.pe>
60
+ J. Nick Koston <nick at koston.org>
61
+ John Lian <jlian at users.noreply.github.com>
62
+ KibosJ <29429479+KibosJ at users.noreply.github.com>
63
+ Lucas Christian <lucas at lucasec.com>
64
+ Maximilian Leith <maximilian at leith.de>
65
+ Michael Carroll <mrc at apple.com>
66
+ Michał Modzelewski <michal.modzelewski at gmail.com>
67
+ Nebz <28622481+NebzHB at users.noreply.github.com>
68
+ Paul <itsascambutmailmeanyway at gmail.com>
69
+ Pierre Ståhl <pierre.sigma at renzgroup.com>
70
+ Pierre Ståhl <pierre.staahl at gmail.com>
71
+ Pierrick Rouxel <pierrick.rouxel at me.com>
72
+ Raymond Ha <raymond at shraymonks.com>
73
+ Robbie Trencheny <me at robbiet.us>
74
+ Rob Nee <robnee at hotmail.com>
75
+ sassukeuchiha <116432455+sassukeuchiha at users.noreply.github.com>
76
+ SchlaubiSchlump <Schlaubischlump at users.noreply.github.com>
77
+ Sebastian Pekarek <mail at sebbo.net>
78
+ Stackie Jia <jsq2627 at gmail.com>
79
+ stickpin <630000+stickpin at users.noreply.github.com>
80
+ stimulated <56211318+xpnewmedia at users.noreply.github.com>
81
+ Sylvain CECCHETTO <cecchetto.sylvain at me.com>
82
+ Will Ross <paxswill at paxswill.com>
83
+ ```
84
+
85
+ *The list is manuallt updated, so if you are missing feel to send a
86
+ PR. The list is generated with:
87
+ `git log --format="%aN <%aE>" | sort | uniq | egrep -v "dependabot" | sed -s 's/@/ at /'`*