@bharper/atv-js 0.3.0 → 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 (277) hide show
  1. package/dist/mdns.d.ts.map +1 -1
  2. package/dist/mdns.js +79 -9
  3. package/dist/mdns.js.map +1 -1
  4. package/package.json +1 -1
  5. package/pyatv/.codecov.yml +38 -0
  6. package/pyatv/.github/FUNDING.yml +3 -0
  7. package/pyatv/.github/ISSUE_TEMPLATE/bug_report.yml +80 -0
  8. package/pyatv/.github/ISSUE_TEMPLATE/config.yml +1 -0
  9. package/pyatv/.github/ISSUE_TEMPLATE/feature_request.yml +22 -0
  10. package/pyatv/.github/ISSUE_TEMPLATE/implementation-proposal.yml +29 -0
  11. package/pyatv/.github/ISSUE_TEMPLATE/investigation.yml +16 -0
  12. package/pyatv/.github/ISSUE_TEMPLATE/minor-change.yml +10 -0
  13. package/pyatv/.github/ISSUE_TEMPLATE/question-or-idea.yml +11 -0
  14. package/pyatv/.github/dependabot.yml +26 -0
  15. package/pyatv/.github/workflows/codeql-analysis.yml +71 -0
  16. package/pyatv/.github/workflows/release.yml +160 -0
  17. package/pyatv/.github/workflows/tests.yml +104 -0
  18. package/pyatv/.gitpod.yml +23 -0
  19. package/pyatv/CHANGES.md +3708 -0
  20. package/pyatv/CODE_OF_CONDUCT.md +76 -0
  21. package/pyatv/CONTRIBUTING.md +72 -0
  22. package/pyatv/CONTRIBUTORS.md +3 -0
  23. package/pyatv/Dockerfile +15 -0
  24. package/pyatv/LICENSE.md +9 -0
  25. package/pyatv/MANIFEST.in +14 -0
  26. package/pyatv/README.md +111 -0
  27. package/pyatv/base_versions.txt +13 -0
  28. package/pyatv/chickn.yaml +75 -0
  29. package/pyatv/docs/404.html +24 -0
  30. package/pyatv/docs/CNAME +1 -0
  31. package/pyatv/docs/Gemfile +31 -0
  32. package/pyatv/docs/_config.yml +121 -0
  33. package/pyatv/docs/_includes/api +10 -0
  34. package/pyatv/docs/_includes/atvremote_scan +32 -0
  35. package/pyatv/docs/_includes/code +6 -0
  36. package/pyatv/docs/_includes/issue +14 -0
  37. package/pyatv/docs/_includes/pypi +5 -0
  38. package/pyatv/docs/_layouts/template.html +109 -0
  39. package/pyatv/docs/api/pyatv.conf.html +312 -0
  40. package/pyatv/docs/api/pyatv.const.html +974 -0
  41. package/pyatv/docs/api/pyatv.convert.html +106 -0
  42. package/pyatv/docs/api/pyatv.exceptions.html +489 -0
  43. package/pyatv/docs/api/pyatv.helpers.html +102 -0
  44. package/pyatv/docs/api/pyatv.html +120 -0
  45. package/pyatv/docs/api/pyatv.interface.html +2369 -0
  46. package/pyatv/docs/api/pyatv.settings.html +484 -0
  47. package/pyatv/docs/api/pyatv.storage.file_storage.html +102 -0
  48. package/pyatv/docs/api/pyatv.storage.html +186 -0
  49. package/pyatv/docs/api/pyatv.storage.memory_storage.html +83 -0
  50. package/pyatv/docs/assets/css/custom.css +19 -0
  51. package/pyatv/docs/assets/css/hljs.css +1 -0
  52. package/pyatv/docs/assets/css/normalize.css +349 -0
  53. package/pyatv/docs/assets/css/pdoc.css +287 -0
  54. package/pyatv/docs/assets/css/sanitize.css +566 -0
  55. package/pyatv/docs/assets/css/style.scss +9 -0
  56. package/pyatv/docs/assets/img/logo.svg +63 -0
  57. package/pyatv/docs/assets/js/highlight.9.12.0.min.js +3 -0
  58. package/pyatv/docs/assets/js/mermaid.8.9.2.min.js +32 -0
  59. package/pyatv/docs/assets/js/mermaid.min.js.map +1 -0
  60. package/pyatv/docs/development/apps.md +81 -0
  61. package/pyatv/docs/development/audio.md +42 -0
  62. package/pyatv/docs/development/control.md +56 -0
  63. package/pyatv/docs/development/development.md +15 -0
  64. package/pyatv/docs/development/device_info.md +36 -0
  65. package/pyatv/docs/development/examples.md +44 -0
  66. package/pyatv/docs/development/features.md +70 -0
  67. package/pyatv/docs/development/keyboard.md +51 -0
  68. package/pyatv/docs/development/listeners.md +144 -0
  69. package/pyatv/docs/development/logging.md +55 -0
  70. package/pyatv/docs/development/metadata.md +115 -0
  71. package/pyatv/docs/development/power_management.md +53 -0
  72. package/pyatv/docs/development/scan_pair_and_connect.md +331 -0
  73. package/pyatv/docs/development/services.md +9 -0
  74. package/pyatv/docs/development/storage.md +259 -0
  75. package/pyatv/docs/development/stream.md +241 -0
  76. package/pyatv/docs/development/testing.md +9 -0
  77. package/pyatv/docs/documentation/atvlog.md +64 -0
  78. package/pyatv/docs/documentation/atvproxy.md +244 -0
  79. package/pyatv/docs/documentation/atvremote.md +639 -0
  80. package/pyatv/docs/documentation/atvscript.md +275 -0
  81. package/pyatv/docs/documentation/concepts.md +168 -0
  82. package/pyatv/docs/documentation/documentation.md +130 -0
  83. package/pyatv/docs/documentation/getting_started.md +248 -0
  84. package/pyatv/docs/documentation/protocols.md +1959 -0
  85. package/pyatv/docs/documentation/supported_features.md +246 -0
  86. package/pyatv/docs/documentation/tutorial.md +1062 -0
  87. package/pyatv/docs/documentation/workspace.code-workspace +7 -0
  88. package/pyatv/docs/favicon.ico +0 -0
  89. package/pyatv/docs/index.md +109 -0
  90. package/pyatv/docs/internals/design.md +354 -0
  91. package/pyatv/docs/internals/documentation.md +84 -0
  92. package/pyatv/docs/internals/interfaces.md +95 -0
  93. package/pyatv/docs/internals/internals.md +157 -0
  94. package/pyatv/docs/internals/submit_pr.md +56 -0
  95. package/pyatv/docs/internals/testing.md +176 -0
  96. package/pyatv/docs/internals/tools.md +574 -0
  97. package/pyatv/docs/pdoc_templates/config.mako +46 -0
  98. package/pyatv/docs/pdoc_templates/html.mako +454 -0
  99. package/pyatv/docs/support/acknowledgements.md +87 -0
  100. package/pyatv/docs/support/faq.md +214 -0
  101. package/pyatv/docs/support/migration.md +138 -0
  102. package/pyatv/docs/support/scanning_issues.md +110 -0
  103. package/pyatv/docs/support/support.md +18 -0
  104. package/pyatv/docs/support/troubleshooting.md +83 -0
  105. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage.proto +13 -0
  106. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage_pb2.pyi +37 -0
  107. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage.proto +11 -0
  108. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage_pb2.pyi +32 -0
  109. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage.proto +5 -0
  110. package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage_pb2.pyi +27 -0
  111. package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage.proto +16 -0
  112. package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage_pb2.pyi +44 -0
  113. package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo.proto +117 -0
  114. package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo_pb2.pyi +325 -0
  115. package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions.proto +36 -0
  116. package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions_pb2.pyi +115 -0
  117. package/pyatv/pyatv/protocols/mrp/protobuf/Common.proto +79 -0
  118. package/pyatv/pyatv/protocols/mrp/protobuf/Common_pb2.pyi +228 -0
  119. package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage.proto +11 -0
  120. package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage_pb2.pyi +32 -0
  121. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem.proto +27 -0
  122. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata.proto +213 -0
  123. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata_pb2.pyi +630 -0
  124. package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem_pb2.pyi +94 -0
  125. package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage.proto +15 -0
  126. package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage_pb2.pyi +46 -0
  127. package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage.proto +69 -0
  128. package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage_pb2.pyi +226 -0
  129. package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage.proto +12 -0
  130. package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage_pb2.pyi +35 -0
  131. package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage.proto +11 -0
  132. package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage_pb2.pyi +26 -0
  133. package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage.proto +10 -0
  134. package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage_pb2.pyi +26 -0
  135. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage.proto +11 -0
  136. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage_pb2.pyi +32 -0
  137. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage.proto +11 -0
  138. package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage_pb2.pyi +32 -0
  139. package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage.proto +88 -0
  140. package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage_pb2.pyi +261 -0
  141. package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption.proto +9 -0
  142. package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption_pb2.pyi +42 -0
  143. package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage.proto +23 -0
  144. package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage_pb2.pyi +86 -0
  145. package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage.proto +12 -0
  146. package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage_pb2.pyi +38 -0
  147. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient.proto +12 -0
  148. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient_pb2.pyi +49 -0
  149. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo.proto +24 -0
  150. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo_pb2.pyi +79 -0
  151. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer.proto +11 -0
  152. package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer_pb2.pyi +45 -0
  153. package/pyatv/pyatv/protocols/mrp/protobuf/Origin.proto +17 -0
  154. package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage.proto +11 -0
  155. package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage_pb2.pyi +32 -0
  156. package/pyatv/pyatv/protocols/mrp/protobuf/Origin_pb2.pyi +63 -0
  157. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue.proto +15 -0
  158. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities.proto +7 -0
  159. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities_pb2.pyi +33 -0
  160. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext.proto +5 -0
  161. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext_pb2.pyi +27 -0
  162. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage.proto +29 -0
  163. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage_pb2.pyi +87 -0
  164. package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue_pb2.pyi +53 -0
  165. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage.proto +13 -0
  166. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage_pb2.pyi +37 -0
  167. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath.proto +11 -0
  168. package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath_pb2.pyi +39 -0
  169. package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage.proto +171 -0
  170. package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage_pb2.pyi +377 -0
  171. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage.proto +18 -0
  172. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage_pb2.pyi +54 -0
  173. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage.proto +12 -0
  174. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage_pb2.pyi +34 -0
  175. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage.proto +12 -0
  176. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage_pb2.pyi +35 -0
  177. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage.proto +12 -0
  178. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage_pb2.pyi +34 -0
  179. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage.proto +12 -0
  180. package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage_pb2.pyi +35 -0
  181. package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage.proto +13 -0
  182. package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage_pb2.pyi +38 -0
  183. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage.proto +12 -0
  184. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage_pb2.pyi +34 -0
  185. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage.proto +11 -0
  186. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage_pb2.pyi +34 -0
  187. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage.proto +12 -0
  188. package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage_pb2.pyi +38 -0
  189. package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage.proto +12 -0
  190. package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage_pb2.pyi +34 -0
  191. package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage.proto +13 -0
  192. package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage_pb2.pyi +38 -0
  193. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage.proto +16 -0
  194. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage_pb2.pyi +43 -0
  195. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage.proto +100 -0
  196. package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage_pb2.pyi +286 -0
  197. package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage.proto +41 -0
  198. package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage_pb2.pyi +63 -0
  199. package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage.proto +24 -0
  200. package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage_pb2.pyi +64 -0
  201. package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage.proto +38 -0
  202. package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage_pb2.pyi +134 -0
  203. package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage.proto +11 -0
  204. package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage_pb2.pyi +32 -0
  205. package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage.proto +18 -0
  206. package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage_pb2.pyi +54 -0
  207. package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage.proto +28 -0
  208. package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage_pb2.pyi +74 -0
  209. package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage.proto +12 -0
  210. package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage_pb2.pyi +35 -0
  211. package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage.proto +11 -0
  212. package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage_pb2.pyi +32 -0
  213. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage.proto +12 -0
  214. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage_pb2.pyi +34 -0
  215. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage.proto +12 -0
  216. package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage_pb2.pyi +34 -0
  217. package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage.proto +17 -0
  218. package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage_pb2.pyi +54 -0
  219. package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage.proto +27 -0
  220. package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage_pb2.pyi +72 -0
  221. package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage.proto +12 -0
  222. package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage_pb2.pyi +35 -0
  223. package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands.proto +7 -0
  224. package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands_pb2.pyi +30 -0
  225. package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage.proto +23 -0
  226. package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage_pb2.pyi +76 -0
  227. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey.proto +6 -0
  228. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey_pb2.pyi +30 -0
  229. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage.proto +15 -0
  230. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage_pb2.pyi +42 -0
  231. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket.proto +11 -0
  232. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket_pb2.pyi +41 -0
  233. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets.proto +7 -0
  234. package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets_pb2.pyi +30 -0
  235. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage.proto +12 -0
  236. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage_pb2.pyi +34 -0
  237. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage.proto +14 -0
  238. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage_pb2.pyi +41 -0
  239. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage.proto +14 -0
  240. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage_pb2.pyi +41 -0
  241. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage.proto +25 -0
  242. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage_pb2.pyi +74 -0
  243. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage.proto +88 -0
  244. package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage_pb2.pyi +277 -0
  245. package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath.proto +12 -0
  246. package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath_pb2.pyi +34 -0
  247. package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage.proto +8 -0
  248. package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage_pb2.pyi +36 -0
  249. package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage.proto +8 -0
  250. package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage_pb2.pyi +35 -0
  251. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage.proto +23 -0
  252. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage_pb2.pyi +71 -0
  253. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage.proto +14 -0
  254. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage_pb2.pyi +40 -0
  255. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage.proto +13 -0
  256. package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage_pb2.pyi +38 -0
  257. package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage.proto +11 -0
  258. package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage_pb2.pyi +26 -0
  259. package/pyatv/pyatv/py.typed +0 -0
  260. package/pyatv/pylintrc +49 -0
  261. package/pyatv/pyproject.toml +74 -0
  262. package/pyatv/requirements/requirements.txt +14 -0
  263. package/pyatv/requirements/requirements_docs.txt +2 -0
  264. package/pyatv/requirements/requirements_test.txt +20 -0
  265. package/pyatv/scripts/build_docs.sh +17 -0
  266. package/pyatv/scripts/setup_dev_env.sh +83 -0
  267. package/pyatv/setup.cfg +14 -0
  268. package/pyatv/tests/data/README +23 -0
  269. package/pyatv/tests/data/audio_10_frames.wav +0 -0
  270. package/pyatv/tests/data/audio_1_packet_metadata.wav +0 -0
  271. package/pyatv/tests/data/audio_3_packets.wav +0 -0
  272. package/pyatv/tests/data/only_metadata.wav +0 -0
  273. package/pyatv/tests/data/only_title.wav +0 -0
  274. package/pyatv/tests/data/static_3sec.ogg +0 -0
  275. package/pyatv/tests/data/testfile.txt +1 -0
  276. package/pyatv/tests/support/pyatv.code-workspace +14 -0
  277. package/src/mdns.ts +46 -9
@@ -1 +1 @@
1
- {"version":3,"file":"mdns.d.ts","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAgCD,wBAAsB,IAAI,CAAC,OAAO,SAAO,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAiKvF"}
1
+ {"version":3,"file":"mdns.d.ts","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAgCD,wBAAsB,IAAI,CAAC,OAAO,SAAO,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA4KvF"}
package/dist/mdns.js CHANGED
@@ -3,12 +3,72 @@
3
3
  * mDNS device scanning for Apple TV discovery.
4
4
  * Queries for _companion-link._tcp and _airplay._tcp services.
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
6
39
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
41
  };
9
42
  Object.defineProperty(exports, "__esModule", { value: true });
10
43
  exports.scan = scan;
11
44
  const multicast_dns_1 = __importDefault(require("multicast-dns"));
45
+ const os = __importStar(require("os"));
46
+ /**
47
+ * Returns the list of mdns constructor option objects to use for scanning.
48
+ * On Windows, multicast must be joined on a specific interface address rather
49
+ * than 0.0.0.0, so we create one entry per non-internal IPv4 address.
50
+ * On macOS/Linux the default (no interface option) works correctly, so we
51
+ * return a single entry with no options.
52
+ */
53
+ function getMdnsOptions() {
54
+ if (process.platform !== 'win32') {
55
+ return [undefined];
56
+ }
57
+ const interfaces = os.networkInterfaces();
58
+ const addresses = [];
59
+ for (const iface of Object.values(interfaces)) {
60
+ if (!iface)
61
+ continue;
62
+ for (const addr of iface) {
63
+ if (addr.family === 'IPv4' && !addr.internal) {
64
+ addresses.push(addr.address);
65
+ }
66
+ }
67
+ }
68
+ if (addresses.length === 0)
69
+ return [undefined];
70
+ return addresses.map((iface) => ({ interface: iface }));
71
+ }
12
72
  const APPLE_TV_MODELS = new Set([
13
73
  'J33AP',
14
74
  'J33DAP',
@@ -34,12 +94,15 @@ function getPropertyIgnoreCase(properties, key) {
34
94
  }
35
95
  async function scan(timeout = 5000, onlyAppleTV = true) {
36
96
  return new Promise((resolve) => {
37
- const browser = (0, multicast_dns_1.default)();
97
+ // On macOS/Linux a single mdns() with no options works correctly.
98
+ // On Windows we need one instance per interface so the multicast group is
99
+ // joined explicitly on each adapter (0.0.0.0 binding is silently ignored).
100
+ const browsers = getMdnsOptions().map((opts) => opts ? (0, multicast_dns_1.default)(opts) : (0, multicast_dns_1.default)());
38
101
  const companionServices = new Map();
39
102
  const airplayServices = new Map();
40
103
  const deviceInfoModels = new Map(); // device name → model from _device-info
41
104
  const addressMap = new Map();
42
- browser.on('response', (response) => {
105
+ const handleResponse = (response) => {
43
106
  // Collect A/AAAA records for hostname→IP resolution
44
107
  for (const answer of [...(response.answers || []), ...(response.additionals || [])]) {
45
108
  if (answer.type === 'A') {
@@ -114,21 +177,28 @@ async function scan(timeout = 5000, onlyAppleTV = true) {
114
177
  }
115
178
  }
116
179
  }
117
- });
180
+ };
181
+ // Attach the shared response handler to every per-interface browser
182
+ for (const browser of browsers) {
183
+ browser.on('response', handleResponse);
184
+ }
118
185
  // Send queries for companion, airplay, and device-info services
119
186
  const queryServices = () => {
120
- browser.query([
121
- { name: '_companion-link._tcp.local', type: 'PTR' },
122
- { name: '_airplay._tcp.local', type: 'PTR' },
123
- { name: '_device-info._tcp.local', type: 'PTR' },
124
- ]);
187
+ for (const browser of browsers) {
188
+ browser.query([
189
+ { name: '_companion-link._tcp.local', type: 'PTR' },
190
+ { name: '_airplay._tcp.local', type: 'PTR' },
191
+ { name: '_device-info._tcp.local', type: 'PTR' },
192
+ ]);
193
+ }
125
194
  };
126
195
  // Send initial query
127
196
  queryServices();
128
197
  // Send a second query midway for better discovery
129
198
  setTimeout(queryServices, timeout / 2);
130
199
  setTimeout(() => {
131
- browser.destroy();
200
+ for (const browser of browsers)
201
+ browser.destroy();
132
202
  // Merge companion and airplay services by device name
133
203
  const devices = [];
134
204
  const allNames = new Set([...companionServices.keys(), ...airplayServices.keys()]);
package/dist/mdns.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mdns.js","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mdns.js","sourceRoot":"","sources":["../src/mdns.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bharper/atv-js",
3
- "version": "0.3.0",
3
+ "version": "0.3.4",
4
4
  "description": "Apple TV control library - mDNS discovery, AirPlay/Companion pairing, remote control, keyboard input",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,38 @@
1
+ codecov:
2
+ branch: master
3
+
4
+ coverage:
5
+ range: "80..100"
6
+
7
+ status:
8
+ project:
9
+ default:
10
+ target: auto
11
+ threshold: 5%
12
+
13
+ flags:
14
+ library:
15
+ paths:
16
+ - pyatv/
17
+ examples:
18
+ paths:
19
+ - examples/
20
+ configs:
21
+ paths:
22
+ - ".git*"
23
+ - "*.yml"
24
+ changelog:
25
+ - CHANGES/
26
+ - CHANGES.md
27
+ docs:
28
+ paths:
29
+ - docs/
30
+ - "*.md"
31
+ - "*.rst"
32
+ - "*.txt"
33
+ scripts:
34
+ paths:
35
+ - scripts/
36
+ tests:
37
+ paths:
38
+ - tests/
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: [postlund]
@@ -0,0 +1,80 @@
1
+ name: Bug report
2
+ description: Create a report to help us improve
3
+ labels: [bug]
4
+ body:
5
+ - type: textarea
6
+ id: bug-description
7
+ attributes:
8
+ label: Describe the bug
9
+ description: |
10
+ Thank you for reporting any bugs you find! Before opening a new issue, please look through already reported [bugs](https://github.com/postlund/pyatv/issues?q=is%3Aissue+label%3Abug) (someone else might have reported it already). Also, take a look in the [FAQ](https://pyatv.dev/support/faq/) and especially the *Known Issues* section at the bottom.
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: log
15
+ attributes:
16
+ label: Error log
17
+ description: Please paste any relevant error logs in this field.
18
+ value: |
19
+ ```log
20
+ <place log here>
21
+ ```
22
+ validations:
23
+ required: false
24
+ - type: textarea
25
+ id: to-reproduce
26
+ attributes:
27
+ label: How to reproduce the bug?
28
+ validations:
29
+ required: true
30
+ - type: textarea
31
+ id: expected-behavior
32
+ attributes:
33
+ label: What is expected behavior?
34
+ validations:
35
+ required: true
36
+ - type: input
37
+ id: os
38
+ attributes:
39
+ label: Operating System
40
+ description: What operating system are you running?
41
+ placeholder: Windows/Linux/macOS
42
+ validations:
43
+ required: true
44
+ - type: dropdown
45
+ id: python-version
46
+ attributes:
47
+ label: Python
48
+ description: What version of python do you use?
49
+ options:
50
+ - "3.9"
51
+ - "3.10"
52
+ - "3.11"
53
+ - "3.12"
54
+ - "3.13"
55
+ - "3.14"
56
+ - Other
57
+ validations:
58
+ required: true
59
+ - type: input
60
+ id: pyatv-version
61
+ attributes:
62
+ label: pyatv
63
+ description: What version of pyatv are you running?
64
+ placeholder: 0.8.2
65
+ validations:
66
+ required: true
67
+ - type: input
68
+ id: device
69
+ attributes:
70
+ label: Device
71
+ description: What device and software version do you have?
72
+ placeholder: Apple TV 4K tvOS 14.7
73
+ validations:
74
+ required: true
75
+ - type: textarea
76
+ id: additional-context
77
+ attributes:
78
+ label: Additional context
79
+ validations:
80
+ required: true
@@ -0,0 +1 @@
1
+ blank_issues_enabled: false
@@ -0,0 +1,22 @@
1
+ name: Feature request
2
+ description: Suggest an idea for this project
3
+ labels: [feature]
4
+ body:
5
+ - type: textarea
6
+ id: short-desc
7
+ attributes:
8
+ label: What feature would you like?
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ id: solution
13
+ attributes:
14
+ label: Describe the solution you'd like
15
+ validations:
16
+ required: true
17
+ - type: textarea
18
+ id: other
19
+ attributes:
20
+ label: Any other information to share?
21
+ validations:
22
+ required: true
@@ -0,0 +1,29 @@
1
+ name: Implementation Proposal
2
+ description: Suggest how a feature should be implemented
3
+ labels: [feature]
4
+ body:
5
+ - type: textarea
6
+ id: short-desc
7
+ attributes:
8
+ label: Short feature/function description
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ id: to-be-done
13
+ attributes:
14
+ label: What needs to be done?
15
+ validations:
16
+ required: true
17
+ - type: textarea
18
+ id: breaking-change
19
+ attributes:
20
+ label: Is this a breaking change?
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ id: other
25
+ attributes:
26
+ label: Anything else worth knowing?
27
+ validations:
28
+ required: true
29
+
@@ -0,0 +1,16 @@
1
+ name: Investigation
2
+ description: Use for investigations or if something is unclear before creating an implementation proposal
3
+ labels: [investigate]
4
+ body:
5
+ - type: textarea
6
+ id: to-investigate
7
+ attributes:
8
+ label: What to investigate?
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ id: expected-outcome
13
+ attributes:
14
+ label: Expected outcome
15
+ validations:
16
+ required: true
@@ -0,0 +1,10 @@
1
+ name: Minor Change
2
+ description: Use this to suggest minor changes to code or documentation.
3
+ body:
4
+ - type: textarea
5
+ id: minor-change
6
+ attributes:
7
+ label: What to change?
8
+ description: Please describe in as much detail as possible what to change.
9
+ validations:
10
+ required: true
@@ -0,0 +1,11 @@
1
+ name: Question or support
2
+ description: If you are using pyatv and have questions regarding how to use it in any way (e.g. development), use this template.
3
+ labels: [question]
4
+ body:
5
+ - type: textarea
6
+ id: question-support
7
+ attributes:
8
+ label: What do you need help with?
9
+ description: Please enter your question below. Make sure to include software versions, error logs, etc. when applicable. The more information you provide, the easier it will be to help.
10
+ validations:
11
+ required: true
@@ -0,0 +1,26 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/requirements"
5
+ schedule:
6
+ interval: daily
7
+ time: "04:00"
8
+ open-pull-requests-limit: 10
9
+ reviewers:
10
+ - postlund
11
+ assignees:
12
+ - postlund
13
+ labels:
14
+ - dependencies
15
+ - package-ecosystem: docker
16
+ directory: /
17
+ schedule:
18
+ interval: daily
19
+ time: "04:00"
20
+ open-pull-requests-limit: 3
21
+ reviewers:
22
+ - postlund
23
+ assignees:
24
+ - postlund
25
+ labels:
26
+ - dependencies
@@ -0,0 +1,71 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ master ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ master ]
20
+ schedule:
21
+ - cron: '36 5 * * 5'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'python' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
37
+ # Learn more:
38
+ # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
39
+
40
+ steps:
41
+ - name: Checkout repository
42
+ uses: actions/checkout@v2
43
+
44
+ # Initializes the CodeQL tools for scanning.
45
+ - name: Initialize CodeQL
46
+ uses: github/codeql-action/init@v1
47
+ with:
48
+ languages: ${{ matrix.language }}
49
+ # If you wish to specify custom queries, you can do so here or in a config file.
50
+ # By default, queries listed here will override any specified in a config file.
51
+ # Prefix the list here with "+" to use these queries and those in the config file.
52
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
53
+
54
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
55
+ # If this step fails, then you should remove it and run the build manually (see below)
56
+ - name: Autobuild
57
+ uses: github/codeql-action/autobuild@v1
58
+
59
+ # ℹ️ Command-line programs to run using the OS shell.
60
+ # 📚 https://git.io/JvXDl
61
+
62
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
63
+ # and modify them (or add more) to build your code if your project
64
+ # uses a compiled language
65
+
66
+ #- run: |
67
+ # make bootstrap
68
+ # make release
69
+
70
+ - name: Perform CodeQL Analysis
71
+ uses: github/codeql-action/analyze@v1
@@ -0,0 +1,160 @@
1
+ name: Publish containers and make release
2
+
3
+ on:
4
+ push:
5
+ branches: ['master', 'test_release_branch']
6
+ tags:
7
+ - '*'
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ REGISTRY: ghcr.io
12
+ PYTHON_VERSION: 3.12
13
+
14
+ jobs:
15
+ build_containers:
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ contents: read
19
+ packages: write
20
+
21
+ steps:
22
+ - name: Cargo download work-around
23
+ run: |
24
+ mkdir -p ~/.cargo
25
+ cat <<EOF > ~/.cargo/config.toml
26
+ [net]
27
+ git-fetch-with-cli = true
28
+ EOF
29
+
30
+ - name: Checkout repository
31
+ uses: actions/checkout@v3
32
+
33
+ - name: Set up QEMU
34
+ uses: docker/setup-qemu-action@v2
35
+
36
+ - name: Set up Buildx
37
+ id: buildx
38
+ uses: docker/setup-buildx-action@v2
39
+
40
+ - name: Set up Python ${{ matrix.python-version }}
41
+ uses: actions/setup-python@v5
42
+ with:
43
+ python-version: ${{ env.PYTHON_VERSION }}
44
+
45
+ - name: Build wheel
46
+ id: wheel
47
+ run: |
48
+ # If not a release branch, add SHA1 to patch version
49
+ if [ "$(python scripts/version.py is_release)" = "false" ]; then
50
+ python scripts/version.py sha1
51
+ fi
52
+
53
+ python -m pip install --upgrade build
54
+ python -m build
55
+ echo "version=$(python scripts/version.py get)" >> $GITHUB_OUTPUT
56
+
57
+ - name: Log in to the Container registry
58
+ uses: docker/login-action@v2
59
+ with:
60
+ registry: ${{ env.REGISTRY }}
61
+ username: ${{ github.actor }}
62
+ password: ${{ secrets.GITHUB_TOKEN }}
63
+
64
+ - name: Extract metadata (tags, labels) for Docker
65
+ id: meta
66
+ uses: docker/metadata-action@v4
67
+ with:
68
+ images: ${{ env.REGISTRY }}/${{ github.repository }}
69
+ labels: |
70
+ org.opencontainers.image.ref.name=${{ github.ref }}
71
+ tags: |
72
+ type=ref,event=branch
73
+ type=ref,event=pr,
74
+ type=semver,pattern={{version}}
75
+ type=semver,pattern={{major}}.{{minor}}
76
+ type=sha
77
+
78
+ - name: Build and push Docker image
79
+ uses: docker/build-push-action@v4
80
+ with:
81
+ context: .
82
+ github-token: ${{ secrets.GITHUB_TOKEN }}
83
+ builder: ${{ steps.buildx.outputs.name }}
84
+ platforms: linux/amd64,linux/arm64
85
+ push: true
86
+ cache-from: type=gha
87
+ cache-to: type=gha,mode=max
88
+ tags: ${{ steps.meta.outputs.tags }}
89
+ labels: ${{ steps.meta.outputs.labels }}
90
+ build-args: |
91
+ VERSION=${{ steps.wheel.outputs.version }}
92
+
93
+ - name: Upload built artifacts
94
+ uses: actions/upload-artifact@v4
95
+ with:
96
+ name: packages
97
+ path: |
98
+ dist
99
+
100
+ make_release:
101
+ if: ${{ startsWith(github.ref, 'refs/tags/v') }}
102
+ needs: build_containers
103
+ runs-on: ubuntu-latest
104
+
105
+ steps:
106
+ - name: Checkout repository
107
+ uses: actions/checkout@v3
108
+
109
+ - name: Set up Python ${{ matrix.python-version }}
110
+ uses: actions/setup-python@v4
111
+ with:
112
+ python-version: ${{ env.PYTHON_VERSION }}
113
+
114
+ - name: Download pre-built packages
115
+ uses: actions/download-artifact@v4.1.7
116
+ with:
117
+ name: packages
118
+ path: dist
119
+
120
+ - name: Extract release notes and name
121
+ id: info
122
+ shell: python {0}
123
+ run: |
124
+ import os
125
+ import re
126
+
127
+ name = None
128
+ version = None
129
+ notes = ""
130
+ with open("CHANGES.md", "r", encoding="utf-8") as handle:
131
+ for line in handle:
132
+ if line.startswith("##"):
133
+ if name is None:
134
+ version, name = re.match(r"## ([0-9.]+) ([^(]+) \(.*", line).groups()
135
+ else:
136
+ break
137
+ if name is not None:
138
+ notes += line
139
+
140
+ with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as fh:
141
+ fh.writelines([f"name={name}\n", f"version={version}\n"])
142
+
143
+ with open("notes.md", "w", encoding="utf-8") as handle:
144
+ handle.write(notes)
145
+
146
+ - name: Publish release
147
+ uses: ncipollo/release-action@v1
148
+ with:
149
+ artifacts: "dist/pyatv-${{ steps.info.outputs.version }}.tar.gz,dist/pyatv-${{ steps.info.outputs.version }}-*.whl"
150
+ bodyFile: "notes.md"
151
+ token: ${{ secrets.GITHUB_TOKEN }}
152
+ draft: false
153
+ tag: v${{ steps.info.outputs.version }}
154
+ name: ${{ steps.info.outputs.name }}
155
+
156
+ - name: Publish distribution to PyPI
157
+ uses: pypa/gh-action-pypi-publish@release/v1
158
+ with:
159
+ password: ${{ secrets.PYPI_API_TOKEN }}
160
+ skip_existing: true