Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add media browser support to dlna_dmr #66425

Merged
merged 1 commit into from Feb 20, 2022

Conversation

chishm
Copy link
Contributor

@chishm chishm commented Feb 13, 2022

Proposed change

Uses media_source to browse any available source, including local files and DLNA Media Servers (when support is added in a future PR).

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • The code has been formatted using Black (black --fast homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.
  • Untested files have been added to .coveragerc.

The integration reached or maintains the following Integration Quality Scale:

  • No score or internal
  • 馃 Silver
  • 馃 Gold
  • 馃弳 Platinum

To help with the load of incoming pull requests:

Uses media_source to browse any available source, including local files
and DLNA Media Servers (when supported).
@probot-home-assistant
Copy link

Hey there @StevenLooman, mind taking a look at this pull request as it has been labeled with an integration (dlna_dmr) you are listed as a code owner for? Thanks!
(message by CodeOwnersMention)

Copy link
Contributor

@StevenLooman StevenLooman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Expected this to be more code, but glad hass already provides the infrastructure.

@chishm
Copy link
Contributor Author

chishm commented Feb 14, 2022

LGTM. Expected this to be more code, but glad hass already provides the infrastructure.

Thanks :) Some of the features in hass that this uses (like content_type filters and URL signing) were only very recently added (e.g. #64641 and #66120).

The DLNA Digital Media Server side of things is being done in a separate PR (#66437). That's where the bulk of the effort is.

@frenck frenck added the smash Indicator this PR is close to finish for merging or closing label Feb 15, 2022
media_type = sourced_media.mime_type
media_id = sourced_media.url
_LOGGER.debug("sourced_media is %s", sourced_media)
if sourced_metadata := getattr(sourced_media, "didl_metadata", None):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you use isinstance to detect if you're browsing UPNP media?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could (and did originally), but that then needs an explicit import of the dlna_dms component, and therefore a dependency within the dlna_dmr manifest. This current approach is also a bit more flexible because it can handle other integrations extending PlayMedia with a didl_metadata attribute, and they don't have to depend on dlna_dms for it to work.

This has also led me to think about how media sources can provide metadata to media players more generally. I'll work up an architecture discussion for that next week.

Copy link
Member

@balloob balloob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! 馃帀 1 tiny comment left.

@balloob balloob merged commit 3c15fe8 into home-assistant:dev Feb 20, 2022
@chishm chishm deleted the dlna_dmr-browse_media branch February 20, 2022 09:22
@github-actions github-actions bot locked and limited conversation to collaborators Feb 21, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
by-code-owner cla-signed has-tests integration: dlna_dmr new-feature smash Indicator this PR is close to finish for merging or closing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants