@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.
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -9
- package/dist/index.js.map +1 -1
- package/dist/mdns.d.ts.map +1 -1
- package/dist/mdns.js +96 -11
- package/dist/mdns.js.map +1 -1
- package/examples/print-device-json.js +22 -0
- package/package.json +2 -3
- package/pyatv/.codecov.yml +38 -0
- package/pyatv/.github/FUNDING.yml +3 -0
- package/pyatv/.github/ISSUE_TEMPLATE/bug_report.yml +80 -0
- package/pyatv/.github/ISSUE_TEMPLATE/config.yml +1 -0
- package/pyatv/.github/ISSUE_TEMPLATE/feature_request.yml +22 -0
- package/pyatv/.github/ISSUE_TEMPLATE/implementation-proposal.yml +29 -0
- package/pyatv/.github/ISSUE_TEMPLATE/investigation.yml +16 -0
- package/pyatv/.github/ISSUE_TEMPLATE/minor-change.yml +10 -0
- package/pyatv/.github/ISSUE_TEMPLATE/question-or-idea.yml +11 -0
- package/pyatv/.github/dependabot.yml +26 -0
- package/pyatv/.github/workflows/codeql-analysis.yml +71 -0
- package/pyatv/.github/workflows/release.yml +160 -0
- package/pyatv/.github/workflows/tests.yml +104 -0
- package/pyatv/.gitpod.yml +23 -0
- package/pyatv/CHANGES.md +3708 -0
- package/pyatv/CODE_OF_CONDUCT.md +76 -0
- package/pyatv/CONTRIBUTING.md +72 -0
- package/pyatv/CONTRIBUTORS.md +3 -0
- package/pyatv/Dockerfile +15 -0
- package/pyatv/LICENSE.md +9 -0
- package/pyatv/MANIFEST.in +14 -0
- package/pyatv/README.md +111 -0
- package/pyatv/base_versions.txt +13 -0
- package/pyatv/chickn.yaml +75 -0
- package/pyatv/docs/404.html +24 -0
- package/pyatv/docs/CNAME +1 -0
- package/pyatv/docs/Gemfile +31 -0
- package/pyatv/docs/_config.yml +121 -0
- package/pyatv/docs/_includes/api +10 -0
- package/pyatv/docs/_includes/atvremote_scan +32 -0
- package/pyatv/docs/_includes/code +6 -0
- package/pyatv/docs/_includes/issue +14 -0
- package/pyatv/docs/_includes/pypi +5 -0
- package/pyatv/docs/_layouts/template.html +109 -0
- package/pyatv/docs/api/pyatv.conf.html +312 -0
- package/pyatv/docs/api/pyatv.const.html +974 -0
- package/pyatv/docs/api/pyatv.convert.html +106 -0
- package/pyatv/docs/api/pyatv.exceptions.html +489 -0
- package/pyatv/docs/api/pyatv.helpers.html +102 -0
- package/pyatv/docs/api/pyatv.html +120 -0
- package/pyatv/docs/api/pyatv.interface.html +2369 -0
- package/pyatv/docs/api/pyatv.settings.html +484 -0
- package/pyatv/docs/api/pyatv.storage.file_storage.html +102 -0
- package/pyatv/docs/api/pyatv.storage.html +186 -0
- package/pyatv/docs/api/pyatv.storage.memory_storage.html +83 -0
- package/pyatv/docs/assets/css/custom.css +19 -0
- package/pyatv/docs/assets/css/hljs.css +1 -0
- package/pyatv/docs/assets/css/normalize.css +349 -0
- package/pyatv/docs/assets/css/pdoc.css +287 -0
- package/pyatv/docs/assets/css/sanitize.css +566 -0
- package/pyatv/docs/assets/css/style.scss +9 -0
- package/pyatv/docs/assets/img/logo.svg +63 -0
- package/pyatv/docs/assets/js/highlight.9.12.0.min.js +3 -0
- package/pyatv/docs/assets/js/mermaid.8.9.2.min.js +32 -0
- package/pyatv/docs/assets/js/mermaid.min.js.map +1 -0
- package/pyatv/docs/development/apps.md +81 -0
- package/pyatv/docs/development/audio.md +42 -0
- package/pyatv/docs/development/control.md +56 -0
- package/pyatv/docs/development/development.md +15 -0
- package/pyatv/docs/development/device_info.md +36 -0
- package/pyatv/docs/development/examples.md +44 -0
- package/pyatv/docs/development/features.md +70 -0
- package/pyatv/docs/development/keyboard.md +51 -0
- package/pyatv/docs/development/listeners.md +144 -0
- package/pyatv/docs/development/logging.md +55 -0
- package/pyatv/docs/development/metadata.md +115 -0
- package/pyatv/docs/development/power_management.md +53 -0
- package/pyatv/docs/development/scan_pair_and_connect.md +331 -0
- package/pyatv/docs/development/services.md +9 -0
- package/pyatv/docs/development/storage.md +259 -0
- package/pyatv/docs/development/stream.md +241 -0
- package/pyatv/docs/development/testing.md +9 -0
- package/pyatv/docs/documentation/atvlog.md +64 -0
- package/pyatv/docs/documentation/atvproxy.md +244 -0
- package/pyatv/docs/documentation/atvremote.md +639 -0
- package/pyatv/docs/documentation/atvscript.md +275 -0
- package/pyatv/docs/documentation/concepts.md +168 -0
- package/pyatv/docs/documentation/documentation.md +130 -0
- package/pyatv/docs/documentation/getting_started.md +248 -0
- package/pyatv/docs/documentation/protocols.md +1959 -0
- package/pyatv/docs/documentation/supported_features.md +246 -0
- package/pyatv/docs/documentation/tutorial.md +1062 -0
- package/pyatv/docs/documentation/workspace.code-workspace +7 -0
- package/pyatv/docs/favicon.ico +0 -0
- package/pyatv/docs/index.md +109 -0
- package/pyatv/docs/internals/design.md +354 -0
- package/pyatv/docs/internals/documentation.md +84 -0
- package/pyatv/docs/internals/interfaces.md +95 -0
- package/pyatv/docs/internals/internals.md +157 -0
- package/pyatv/docs/internals/submit_pr.md +56 -0
- package/pyatv/docs/internals/testing.md +176 -0
- package/pyatv/docs/internals/tools.md +574 -0
- package/pyatv/docs/pdoc_templates/config.mako +46 -0
- package/pyatv/docs/pdoc_templates/html.mako +454 -0
- package/pyatv/docs/support/acknowledgements.md +87 -0
- package/pyatv/docs/support/faq.md +214 -0
- package/pyatv/docs/support/migration.md +138 -0
- package/pyatv/docs/support/scanning_issues.md +110 -0
- package/pyatv/docs/support/support.md +18 -0
- package/pyatv/docs/support/troubleshooting.md +83 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage.proto +13 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeMessage_pb2.pyi +37 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFadeResponseMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage.proto +5 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/AudioFormatSettingsMessage_pb2.pyi +27 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage.proto +16 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ClientUpdatesConfigMessage_pb2.pyi +44 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo.proto +117 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CommandInfo_pb2.pyi +325 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions.proto +36 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CommandOptions_pb2.pyi +115 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/Common.proto +79 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/Common_pb2.pyi +228 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ConfigureConnectionMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem.proto +27 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata.proto +213 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ContentItemMetadata_pb2.pyi +630 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ContentItem_pb2.pyi +94 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage.proto +15 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/CryptoPairingMessage_pb2.pyi +46 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage.proto +69 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/DeviceInfoMessage_pb2.pyi +226 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GenericMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetKeyboardSessionMessage_pb2.pyi +26 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage.proto +10 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetRemoteTextInputSessionMessage_pb2.pyi +26 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/GetVolumeResultMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage.proto +88 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/KeyboardMessage_pb2.pyi +261 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption.proto +9 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/LanguageOption_pb2.pyi +42 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage.proto +23 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ModifyOutputContextRequestMessage_pb2.pyi +86 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NotificationMessage_pb2.pyi +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingClient_pb2.pyi +49 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo.proto +24 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingInfo_pb2.pyi +79 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/NowPlayingPlayer_pb2.pyi +45 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/Origin.proto +17 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/OriginClientPropertiesMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/Origin_pb2.pyi +63 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue.proto +15 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities.proto +7 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueCapabilities_pb2.pyi +33 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext.proto +5 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueContext_pb2.pyi +27 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage.proto +29 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueueRequestMessage_pb2.pyi +87 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlaybackQueue_pb2.pyi +53 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage.proto +13 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlayerClientPropertiesMessage_pb2.pyi +37 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/PlayerPath_pb2.pyi +39 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage.proto +171 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/ProtocolMessage_pb2.pyi +377 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage.proto +18 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterForGameControllerEventsMessage_pb2.pyi +54 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterHIDDeviceResultMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RegisterVoiceInputDeviceResponseMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage.proto +13 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoteTextInputMessage_pb2.pyi +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveClientMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveEndpointsMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemoveOutputDevicesMessage_pb2.pyi +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/RemovePlayerMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage.proto +13 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendButtonEventMessage_pb2.pyi +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage.proto +16 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandMessage_pb2.pyi +43 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage.proto +100 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendCommandResultMessage_pb2.pyi +286 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage.proto +41 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendHIDEventMessage_pb2.pyi +63 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage.proto +24 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendPackedVirtualTouchEventMessage_pb2.pyi +64 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage.proto +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SendVoiceInputMessage_pb2.pyi +134 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetArtworkMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage.proto +18 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetConnectionStateMessage_pb2.pyi +54 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage.proto +28 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetDefaultSupportedCommandsMessage_pb2.pyi +74 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetDiscoveryModeMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetHiliteModeMessage_pb2.pyi +32 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingClientMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetNowPlayingPlayerMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage.proto +17 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetRecordingStateMessage_pb2.pyi +54 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage.proto +27 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetStateMessage_pb2.pyi +72 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SetVolumeMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands.proto +7 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/SupportedCommands_pb2.pyi +30 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage.proto +23 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TextInputMessage_pb2.pyi +76 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey.proto +6 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionKey_pb2.pyi +30 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage.proto +15 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionMessage_pb2.pyi +42 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPacket_pb2.pyi +41 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets.proto +7 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/TransactionPackets_pb2.pyi +30 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateClientMessage_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage.proto +14 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemArtworkMessage_pb2.pyi +41 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage.proto +14 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateContentItemMessage_pb2.pyi +41 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage.proto +25 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateEndPointsMessage_pb2.pyi +74 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage.proto +88 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdateOutputDeviceMessage_pb2.pyi +277 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath.proto +12 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/UpdatePlayerPath_pb2.pyi +34 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage.proto +8 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage_pb2.pyi +36 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage.proto +8 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage_pb2.pyi +35 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage.proto +23 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlAvailabilityMessage_pb2.pyi +71 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage.proto +14 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeControlCapabilitiesDidChangeMessage_pb2.pyi +40 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage.proto +13 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/VolumeDidChangeMessage_pb2.pyi +38 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage.proto +11 -0
- package/pyatv/pyatv/protocols/mrp/protobuf/WakeDeviceMessage_pb2.pyi +26 -0
- package/pyatv/pyatv/py.typed +0 -0
- package/pyatv/pylintrc +49 -0
- package/pyatv/pyproject.toml +74 -0
- package/pyatv/requirements/requirements.txt +14 -0
- package/pyatv/requirements/requirements_docs.txt +2 -0
- package/pyatv/requirements/requirements_test.txt +20 -0
- package/pyatv/scripts/build_docs.sh +17 -0
- package/pyatv/scripts/setup_dev_env.sh +83 -0
- package/pyatv/setup.cfg +14 -0
- package/pyatv/tests/data/README +23 -0
- package/pyatv/tests/data/audio_10_frames.wav +0 -0
- package/pyatv/tests/data/audio_1_packet_metadata.wav +0 -0
- package/pyatv/tests/data/audio_3_packets.wav +0 -0
- package/pyatv/tests/data/only_metadata.wav +0 -0
- package/pyatv/tests/data/only_title.wav +0 -0
- package/pyatv/tests/data/static_3sec.ogg +0 -0
- package/pyatv/tests/data/testfile.txt +1 -0
- package/pyatv/tests/support/pyatv.code-workspace +14 -0
- package/src/index.ts +122 -8
- package/src/mdns.ts +64 -11
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/VirtualTouchDeviceDescriptorMessage.proto";
|
|
5
|
+
|
|
6
|
+
extend ProtocolMessage {
|
|
7
|
+
optional RegisterHIDDeviceMessage registerHIDDeviceMessage = 11;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
message RegisterHIDDeviceMessage {
|
|
11
|
+
optional VirtualTouchDeviceDescriptor deviceDescriptor = 1;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2
|
|
12
|
+
import typing
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
@typing.final
|
|
17
|
+
class RegisterHIDDeviceMessage(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
|
|
20
|
+
DEVICEDESCRIPTOR_FIELD_NUMBER: builtins.int
|
|
21
|
+
@property
|
|
22
|
+
def deviceDescriptor(self) -> pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2.VirtualTouchDeviceDescriptor: ...
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
deviceDescriptor: pyatv.protocols.mrp.protobuf.VirtualTouchDeviceDescriptorMessage_pb2.VirtualTouchDeviceDescriptor | None = ...,
|
|
27
|
+
) -> None: ...
|
|
28
|
+
def HasField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> builtins.bool: ...
|
|
29
|
+
def ClearField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> None: ...
|
|
30
|
+
|
|
31
|
+
global___RegisterHIDDeviceMessage = RegisterHIDDeviceMessage
|
|
32
|
+
|
|
33
|
+
REGISTERHIDDEVICEMESSAGE_FIELD_NUMBER: builtins.int
|
|
34
|
+
registerHIDDeviceMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterHIDDeviceMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
|
|
5
|
+
extend ProtocolMessage {
|
|
6
|
+
optional RegisterHIDDeviceResultMessage registerHIDDeviceResultMessage = 12;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message RegisterHIDDeviceResultMessage {
|
|
10
|
+
optional int32 errorCode = 1;
|
|
11
|
+
optional int32 deviceIdentifier = 2;
|
|
12
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import typing
|
|
12
|
+
|
|
13
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
14
|
+
|
|
15
|
+
@typing.final
|
|
16
|
+
class RegisterHIDDeviceResultMessage(google.protobuf.message.Message):
|
|
17
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
18
|
+
|
|
19
|
+
ERRORCODE_FIELD_NUMBER: builtins.int
|
|
20
|
+
DEVICEIDENTIFIER_FIELD_NUMBER: builtins.int
|
|
21
|
+
errorCode: builtins.int
|
|
22
|
+
deviceIdentifier: builtins.int
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
errorCode: builtins.int | None = ...,
|
|
27
|
+
deviceIdentifier: builtins.int | None = ...,
|
|
28
|
+
) -> None: ...
|
|
29
|
+
def HasField(self, field_name: typing.Literal["deviceIdentifier", b"deviceIdentifier", "errorCode", b"errorCode"]) -> builtins.bool: ...
|
|
30
|
+
def ClearField(self, field_name: typing.Literal["deviceIdentifier", b"deviceIdentifier", "errorCode", b"errorCode"]) -> None: ...
|
|
31
|
+
|
|
32
|
+
global___RegisterHIDDeviceResultMessage = RegisterHIDDeviceResultMessage
|
|
33
|
+
|
|
34
|
+
REGISTERHIDDEVICERESULTMESSAGE_FIELD_NUMBER: builtins.int
|
|
35
|
+
registerHIDDeviceResultMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterHIDDeviceResultMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/VoiceInputDeviceDescriptorMessage.proto";
|
|
5
|
+
|
|
6
|
+
extend ProtocolMessage {
|
|
7
|
+
optional RegisterVoiceInputDeviceMessage registerVoiceInputDeviceMessage = 33;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
message RegisterVoiceInputDeviceMessage {
|
|
11
|
+
optional VoiceInputDeviceDescriptor deviceDescriptor = 1;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2
|
|
12
|
+
import typing
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
@typing.final
|
|
17
|
+
class RegisterVoiceInputDeviceMessage(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
|
|
20
|
+
DEVICEDESCRIPTOR_FIELD_NUMBER: builtins.int
|
|
21
|
+
@property
|
|
22
|
+
def deviceDescriptor(self) -> pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2.VoiceInputDeviceDescriptor: ...
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
deviceDescriptor: pyatv.protocols.mrp.protobuf.VoiceInputDeviceDescriptorMessage_pb2.VoiceInputDeviceDescriptor | None = ...,
|
|
27
|
+
) -> None: ...
|
|
28
|
+
def HasField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> builtins.bool: ...
|
|
29
|
+
def ClearField(self, field_name: typing.Literal["deviceDescriptor", b"deviceDescriptor"]) -> None: ...
|
|
30
|
+
|
|
31
|
+
global___RegisterVoiceInputDeviceMessage = RegisterVoiceInputDeviceMessage
|
|
32
|
+
|
|
33
|
+
REGISTERVOICEINPUTDEVICEMESSAGE_FIELD_NUMBER: builtins.int
|
|
34
|
+
registerVoiceInputDeviceMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterVoiceInputDeviceMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
|
|
5
|
+
extend ProtocolMessage {
|
|
6
|
+
optional RegisterVoiceInputDeviceResponseMessage registerVoiceInputDeviceResponseMessage = 34;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message RegisterVoiceInputDeviceResponseMessage {
|
|
10
|
+
optional int32 deviceID = 1;
|
|
11
|
+
optional int32 errorCode = 2;
|
|
12
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import typing
|
|
12
|
+
|
|
13
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
14
|
+
|
|
15
|
+
@typing.final
|
|
16
|
+
class RegisterVoiceInputDeviceResponseMessage(google.protobuf.message.Message):
|
|
17
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
18
|
+
|
|
19
|
+
DEVICEID_FIELD_NUMBER: builtins.int
|
|
20
|
+
ERRORCODE_FIELD_NUMBER: builtins.int
|
|
21
|
+
deviceID: builtins.int
|
|
22
|
+
errorCode: builtins.int
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
deviceID: builtins.int | None = ...,
|
|
27
|
+
errorCode: builtins.int | None = ...,
|
|
28
|
+
) -> None: ...
|
|
29
|
+
def HasField(self, field_name: typing.Literal["deviceID", b"deviceID", "errorCode", b"errorCode"]) -> builtins.bool: ...
|
|
30
|
+
def ClearField(self, field_name: typing.Literal["deviceID", b"deviceID", "errorCode", b"errorCode"]) -> None: ...
|
|
31
|
+
|
|
32
|
+
global___RegisterVoiceInputDeviceResponseMessage = RegisterVoiceInputDeviceResponseMessage
|
|
33
|
+
|
|
34
|
+
REGISTERVOICEINPUTDEVICERESPONSEMESSAGE_FIELD_NUMBER: builtins.int
|
|
35
|
+
registerVoiceInputDeviceResponseMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RegisterVoiceInputDeviceResponseMessage]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
|
|
5
|
+
extend ProtocolMessage {
|
|
6
|
+
optional RemoteTextInputMessage remoteTextInputMessage = 71;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message RemoteTextInputMessage {
|
|
10
|
+
optional double timestamp = 1;
|
|
11
|
+
optional uint64 version = 2;
|
|
12
|
+
optional bytes data = 3;
|
|
13
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import typing
|
|
12
|
+
|
|
13
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
14
|
+
|
|
15
|
+
@typing.final
|
|
16
|
+
class RemoteTextInputMessage(google.protobuf.message.Message):
|
|
17
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
18
|
+
|
|
19
|
+
TIMESTAMP_FIELD_NUMBER: builtins.int
|
|
20
|
+
VERSION_FIELD_NUMBER: builtins.int
|
|
21
|
+
DATA_FIELD_NUMBER: builtins.int
|
|
22
|
+
timestamp: builtins.float
|
|
23
|
+
version: builtins.int
|
|
24
|
+
data: builtins.bytes
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
*,
|
|
28
|
+
timestamp: builtins.float | None = ...,
|
|
29
|
+
version: builtins.int | None = ...,
|
|
30
|
+
data: builtins.bytes | None = ...,
|
|
31
|
+
) -> None: ...
|
|
32
|
+
def HasField(self, field_name: typing.Literal["data", b"data", "timestamp", b"timestamp", "version", b"version"]) -> builtins.bool: ...
|
|
33
|
+
def ClearField(self, field_name: typing.Literal["data", b"data", "timestamp", b"timestamp", "version", b"version"]) -> None: ...
|
|
34
|
+
|
|
35
|
+
global___RemoteTextInputMessage = RemoteTextInputMessage
|
|
36
|
+
|
|
37
|
+
REMOTETEXTINPUTMESSAGE_FIELD_NUMBER: builtins.int
|
|
38
|
+
remoteTextInputMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoteTextInputMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/NowPlayingClient.proto";
|
|
5
|
+
|
|
6
|
+
extend ProtocolMessage {
|
|
7
|
+
optional RemoveClientMessage removeClientMessage = 57;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
message RemoveClientMessage {
|
|
11
|
+
optional NowPlayingClient client = 1;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2
|
|
11
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
12
|
+
import typing
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
@typing.final
|
|
17
|
+
class RemoveClientMessage(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
|
|
20
|
+
CLIENT_FIELD_NUMBER: builtins.int
|
|
21
|
+
@property
|
|
22
|
+
def client(self) -> pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2.NowPlayingClient: ...
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
client: pyatv.protocols.mrp.protobuf.NowPlayingClient_pb2.NowPlayingClient | None = ...,
|
|
27
|
+
) -> None: ...
|
|
28
|
+
def HasField(self, field_name: typing.Literal["client", b"client"]) -> builtins.bool: ...
|
|
29
|
+
def ClearField(self, field_name: typing.Literal["client", b"client"]) -> None: ...
|
|
30
|
+
|
|
31
|
+
global___RemoveClientMessage = RemoveClientMessage
|
|
32
|
+
|
|
33
|
+
REMOVECLIENTMESSAGE_FIELD_NUMBER: builtins.int
|
|
34
|
+
removeClientMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveClientMessage]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import collections.abc
|
|
8
|
+
import google.protobuf.descriptor
|
|
9
|
+
import google.protobuf.internal.containers
|
|
10
|
+
import google.protobuf.internal.extension_dict
|
|
11
|
+
import google.protobuf.message
|
|
12
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
13
|
+
import typing
|
|
14
|
+
|
|
15
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
16
|
+
|
|
17
|
+
@typing.final
|
|
18
|
+
class RemoveEndpointsMessage(google.protobuf.message.Message):
|
|
19
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
20
|
+
|
|
21
|
+
ENDPOINTUIDS_FIELD_NUMBER: builtins.int
|
|
22
|
+
@property
|
|
23
|
+
def endpointUIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
*,
|
|
27
|
+
endpointUIDs: collections.abc.Iterable[builtins.str] | None = ...,
|
|
28
|
+
) -> None: ...
|
|
29
|
+
def ClearField(self, field_name: typing.Literal["endpointUIDs", b"endpointUIDs"]) -> None: ...
|
|
30
|
+
|
|
31
|
+
global___RemoveEndpointsMessage = RemoveEndpointsMessage
|
|
32
|
+
|
|
33
|
+
REMOVEENDPOINTSMESSAGE_FIELD_NUMBER: builtins.int
|
|
34
|
+
removeEndpointsMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveEndpointsMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
|
|
5
|
+
extend ProtocolMessage {
|
|
6
|
+
optional RemoveOutputDevicesMessage removeOutputDevicesMessage = 70;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message RemoveOutputDevicesMessage {
|
|
10
|
+
repeated string outputDeviceUIDs = 1;
|
|
11
|
+
optional string endpointUID = 2;
|
|
12
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import collections.abc
|
|
8
|
+
import google.protobuf.descriptor
|
|
9
|
+
import google.protobuf.internal.containers
|
|
10
|
+
import google.protobuf.internal.extension_dict
|
|
11
|
+
import google.protobuf.message
|
|
12
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
13
|
+
import typing
|
|
14
|
+
|
|
15
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
16
|
+
|
|
17
|
+
@typing.final
|
|
18
|
+
class RemoveOutputDevicesMessage(google.protobuf.message.Message):
|
|
19
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
20
|
+
|
|
21
|
+
OUTPUTDEVICEUIDS_FIELD_NUMBER: builtins.int
|
|
22
|
+
ENDPOINTUID_FIELD_NUMBER: builtins.int
|
|
23
|
+
endpointUID: builtins.str
|
|
24
|
+
@property
|
|
25
|
+
def outputDeviceUIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
*,
|
|
29
|
+
outputDeviceUIDs: collections.abc.Iterable[builtins.str] | None = ...,
|
|
30
|
+
endpointUID: builtins.str | None = ...,
|
|
31
|
+
) -> None: ...
|
|
32
|
+
def HasField(self, field_name: typing.Literal["endpointUID", b"endpointUID"]) -> builtins.bool: ...
|
|
33
|
+
def ClearField(self, field_name: typing.Literal["endpointUID", b"endpointUID", "outputDeviceUIDs", b"outputDeviceUIDs"]) -> None: ...
|
|
34
|
+
|
|
35
|
+
global___RemoveOutputDevicesMessage = RemoveOutputDevicesMessage
|
|
36
|
+
|
|
37
|
+
REMOVEOUTPUTDEVICESMESSAGE_FIELD_NUMBER: builtins.int
|
|
38
|
+
removeOutputDevicesMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemoveOutputDevicesMessage]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
|
|
5
|
+
|
|
6
|
+
extend ProtocolMessage {
|
|
7
|
+
optional RemovePlayerMessage removePlayerMessage = 58;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
message RemovePlayerMessage {
|
|
11
|
+
optional PlayerPath playerPath = 1;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
|
|
11
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
12
|
+
import typing
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
@typing.final
|
|
17
|
+
class RemovePlayerMessage(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
|
|
20
|
+
PLAYERPATH_FIELD_NUMBER: builtins.int
|
|
21
|
+
@property
|
|
22
|
+
def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
*,
|
|
26
|
+
playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
|
|
27
|
+
) -> None: ...
|
|
28
|
+
def HasField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> builtins.bool: ...
|
|
29
|
+
def ClearField(self, field_name: typing.Literal["playerPath", b"playerPath"]) -> None: ...
|
|
30
|
+
|
|
31
|
+
global___RemovePlayerMessage = RemovePlayerMessage
|
|
32
|
+
|
|
33
|
+
REMOVEPLAYERMESSAGE_FIELD_NUMBER: builtins.int
|
|
34
|
+
removePlayerMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___RemovePlayerMessage]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
|
|
5
|
+
extend ProtocolMessage {
|
|
6
|
+
optional SendButtonEventMessage sendButtonEventMessage = 43;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message SendButtonEventMessage {
|
|
10
|
+
optional uint32 usagePage = 1;
|
|
11
|
+
optional uint32 usage = 2;
|
|
12
|
+
optional bool buttonDown = 3;
|
|
13
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
11
|
+
import typing
|
|
12
|
+
|
|
13
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
14
|
+
|
|
15
|
+
@typing.final
|
|
16
|
+
class SendButtonEventMessage(google.protobuf.message.Message):
|
|
17
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
18
|
+
|
|
19
|
+
USAGEPAGE_FIELD_NUMBER: builtins.int
|
|
20
|
+
USAGE_FIELD_NUMBER: builtins.int
|
|
21
|
+
BUTTONDOWN_FIELD_NUMBER: builtins.int
|
|
22
|
+
usagePage: builtins.int
|
|
23
|
+
usage: builtins.int
|
|
24
|
+
buttonDown: builtins.bool
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
*,
|
|
28
|
+
usagePage: builtins.int | None = ...,
|
|
29
|
+
usage: builtins.int | None = ...,
|
|
30
|
+
buttonDown: builtins.bool | None = ...,
|
|
31
|
+
) -> None: ...
|
|
32
|
+
def HasField(self, field_name: typing.Literal["buttonDown", b"buttonDown", "usage", b"usage", "usagePage", b"usagePage"]) -> builtins.bool: ...
|
|
33
|
+
def ClearField(self, field_name: typing.Literal["buttonDown", b"buttonDown", "usage", b"usage", "usagePage", b"usagePage"]) -> None: ...
|
|
34
|
+
|
|
35
|
+
global___SendButtonEventMessage = SendButtonEventMessage
|
|
36
|
+
|
|
37
|
+
SENDBUTTONEVENTMESSAGE_FIELD_NUMBER: builtins.int
|
|
38
|
+
sendButtonEventMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___SendButtonEventMessage]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/CommandInfo.proto";
|
|
5
|
+
import "pyatv/protocols/mrp/protobuf/CommandOptions.proto";
|
|
6
|
+
import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
|
|
7
|
+
|
|
8
|
+
extend ProtocolMessage {
|
|
9
|
+
optional SendCommandMessage sendCommandMessage = 6;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
message SendCommandMessage {
|
|
13
|
+
optional Command command = 1;
|
|
14
|
+
optional CommandOptions options = 2;
|
|
15
|
+
optional PlayerPath playerPath = 3;
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import builtins
|
|
7
|
+
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.extension_dict
|
|
9
|
+
import google.protobuf.message
|
|
10
|
+
import pyatv.protocols.mrp.protobuf.CommandInfo_pb2
|
|
11
|
+
import pyatv.protocols.mrp.protobuf.CommandOptions_pb2
|
|
12
|
+
import pyatv.protocols.mrp.protobuf.PlayerPath_pb2
|
|
13
|
+
import pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2
|
|
14
|
+
import typing
|
|
15
|
+
|
|
16
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
17
|
+
|
|
18
|
+
@typing.final
|
|
19
|
+
class SendCommandMessage(google.protobuf.message.Message):
|
|
20
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
21
|
+
|
|
22
|
+
COMMAND_FIELD_NUMBER: builtins.int
|
|
23
|
+
OPTIONS_FIELD_NUMBER: builtins.int
|
|
24
|
+
PLAYERPATH_FIELD_NUMBER: builtins.int
|
|
25
|
+
command: pyatv.protocols.mrp.protobuf.CommandInfo_pb2.Command.ValueType
|
|
26
|
+
@property
|
|
27
|
+
def options(self) -> pyatv.protocols.mrp.protobuf.CommandOptions_pb2.CommandOptions: ...
|
|
28
|
+
@property
|
|
29
|
+
def playerPath(self) -> pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath: ...
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
*,
|
|
33
|
+
command: pyatv.protocols.mrp.protobuf.CommandInfo_pb2.Command.ValueType | None = ...,
|
|
34
|
+
options: pyatv.protocols.mrp.protobuf.CommandOptions_pb2.CommandOptions | None = ...,
|
|
35
|
+
playerPath: pyatv.protocols.mrp.protobuf.PlayerPath_pb2.PlayerPath | None = ...,
|
|
36
|
+
) -> None: ...
|
|
37
|
+
def HasField(self, field_name: typing.Literal["command", b"command", "options", b"options", "playerPath", b"playerPath"]) -> builtins.bool: ...
|
|
38
|
+
def ClearField(self, field_name: typing.Literal["command", b"command", "options", b"options", "playerPath", b"playerPath"]) -> None: ...
|
|
39
|
+
|
|
40
|
+
global___SendCommandMessage = SendCommandMessage
|
|
41
|
+
|
|
42
|
+
SENDCOMMANDMESSAGE_FIELD_NUMBER: builtins.int
|
|
43
|
+
sendCommandMessage: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[pyatv.protocols.mrp.protobuf.ProtocolMessage_pb2.ProtocolMessage, global___SendCommandMessage]
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
syntax = "proto2";
|
|
2
|
+
|
|
3
|
+
import "pyatv/protocols/mrp/protobuf/ProtocolMessage.proto";
|
|
4
|
+
import "pyatv/protocols/mrp/protobuf/PlayerPath.proto";
|
|
5
|
+
|
|
6
|
+
extend ProtocolMessage {
|
|
7
|
+
optional SendCommandResultMessage sendCommandResultMessage = 7;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
message SendError {
|
|
11
|
+
enum Enum {
|
|
12
|
+
NoError = 0; // This is None in original message definitions (no-go with python)
|
|
13
|
+
ApplicationNotFound = 1;
|
|
14
|
+
ConnectionFailed = 2;
|
|
15
|
+
Ignored = 3;
|
|
16
|
+
CouldNotLaunchApplication = 4;
|
|
17
|
+
TimedOut = 5;
|
|
18
|
+
OriginDoesNotExist = 6;
|
|
19
|
+
InvalidOptions = 7;
|
|
20
|
+
NoCommandHandlers = 8;
|
|
21
|
+
ApplicationNotInstalled = 9;
|
|
22
|
+
NotSupported = 10;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
message HandlerReturnStatus {
|
|
27
|
+
enum Enum {
|
|
28
|
+
Success = 0;
|
|
29
|
+
NoSuchContent = 1;
|
|
30
|
+
CommandFailed = 2;
|
|
31
|
+
NoActionableNowPlayingItem = 10;
|
|
32
|
+
DeviceNotFound = 20;
|
|
33
|
+
UIKitLegacy = 3;
|
|
34
|
+
SkipAdProhibited = 100;
|
|
35
|
+
QueueIsUserCurated = 101;
|
|
36
|
+
UserModifiedQueueDisabled = 102;
|
|
37
|
+
UserQueueModificationNotSupportedForCurrentItem = 103;
|
|
38
|
+
SubscriptionRequiredForSharedQueue = 104;
|
|
39
|
+
InsertionPositionNotSpecified = 105;
|
|
40
|
+
InvalidInsertionPosition = 106;
|
|
41
|
+
RequestParametersOutOfBounds = 107;
|
|
42
|
+
SkipLimitReached = 108;
|
|
43
|
+
AuthenticationFailure = 401;
|
|
44
|
+
MediaServiceUnavailable = 501;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
message SendCommandStatusCode {
|
|
49
|
+
enum Enum {
|
|
50
|
+
Success = 0;
|
|
51
|
+
NoSuchContent = 1;
|
|
52
|
+
CommandFailed = 2;
|
|
53
|
+
NoActionableNowPlayingItem = 10;
|
|
54
|
+
DeviceNotFound = 20;
|
|
55
|
+
UIKitLegacy = 3;
|
|
56
|
+
SkipAdProhibited = 100;
|
|
57
|
+
QueueIsUserCurated = 101;
|
|
58
|
+
UserModifiedQueueDisabled = 102;
|
|
59
|
+
UserQueueModificationNotSupportedForCurrentItem = 103;
|
|
60
|
+
SubscriptionRequiredForSharedQueue = 104;
|
|
61
|
+
InsertionPositionNotSpecified = 105;
|
|
62
|
+
InvalidInsertionPosition = 106;
|
|
63
|
+
RequestParametersOutOfBounds = 107;
|
|
64
|
+
SkipLimitReached = 108;
|
|
65
|
+
AuthenticationFailure = 401;
|
|
66
|
+
MediaServiceUnavailable = 501;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
message SendCommandResultType {
|
|
71
|
+
enum Enum {
|
|
72
|
+
Dialog = 1;
|
|
73
|
+
Error = 2;
|
|
74
|
+
Custom = 999;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
message SendCommandResultStatus {
|
|
79
|
+
optional SendCommandStatusCode.Enum statusCode = 1;
|
|
80
|
+
optional SendCommandResultType.Enum type = 2;
|
|
81
|
+
// optional ... dialog = 3;
|
|
82
|
+
// optional ... error = 4;
|
|
83
|
+
optional bytes customData = 5;
|
|
84
|
+
optional string customDataType = 6;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
message SendCommandResult {
|
|
88
|
+
optional PlayerPath playerPath = 1;
|
|
89
|
+
optional SendError.Enum sendError = 2;
|
|
90
|
+
repeated SendCommandResultStatus statuses = 3;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
message SendCommandResultMessage {
|
|
94
|
+
optional SendError.Enum sendError = 1;
|
|
95
|
+
optional HandlerReturnStatus.Enum handlerReturnStatus = 2;
|
|
96
|
+
repeated bytes handlerReturnStatusDatas = 3;
|
|
97
|
+
optional string commandID = 4;
|
|
98
|
+
optional PlayerPath playerPath = 5;
|
|
99
|
+
optional SendCommandResult commandResult = 6;
|
|
100
|
+
}
|