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