Skip to content

Add support for searching media to Kodi - #161681

Draft
anishsane wants to merge 2 commits into
home-assistant:devfrom
anishsane:kodi_search_media
Draft

Add support for searching media to Kodi#161681
anishsane wants to merge 2 commits into
home-assistant:devfrom
anishsane:kodi_search_media

Conversation

@anishsane

@anishsane anishsane commented Jan 27, 2026

Copy link
Copy Markdown
Contributor

Kodi provides a mechanism to query the available movies, TV shows etc using jsonrpc.

This change adds a logic to match them against the search query using rapidfuzz.

This change only adds the support for searching movies and TV shows. I do not have music hosted in my kodi instance to test it. But the logic can be extended in the same way.

The search behaviour is as follows:
For movies, return the matching movie(s).
For TV shows, return the first unwatched episode for the matching show(s).

Sample usage:
"Play Avengers on Kodi"
"Play Brooklyn nine nine on Kodi"

Proposed change

Add initial HassMediaSearchAndPlay support for Kodi.

Kodi provides a mechanism to query the available movies, TV shows etc
using jsonrpc.

This change adds a logic to match them against the search query using
rapidfuzz.

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)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

Checklist

  • I understand the code I am submitting and can explain how it works.
  • 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
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works. (NA)
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

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 diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

@home-assistant

Copy link
Copy Markdown
Contributor

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

Code owner commands

Code owners of kodi can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign kodi Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

@epenet epenet changed the title Add initial HassMediaSearchAndPlay support for Kodi. Add initial HassMediaSearchAndPlay support for Kodi Jan 27, 2026
@anishsane
anishsane force-pushed the kodi_search_media branch 2 times, most recently from 1d681d7 to 26bbb7f Compare February 1, 2026 06:01
Kodi provides a mechanism to query the available movies, TV shows etc
using jsonrpc.

This change adds a logic to match them against the search query using
rapidfuzz.

This change only adds the support for searching movies and TV shows.
I do not have music hosted in my kodi instance to test it. But the logic
can be extended in the same way.

The search behaviour is as follows:
For movies, return the matching movie(s).
For TV shows, return the first unwatched episode for the matching
show(s).

Sample usage:
"Play Avengers on Kodi"
"Play Brooklyn nine nine on Kodi"
If the requester (say an llm conversation agent) sends an invalid
value for media class (e.g. 'tv' instead of 'tv_show') the current
logic will filter it out entirely. Instead we can default to the
allowed list when this happens.
@joostlek joostlek changed the title Add initial HassMediaSearchAndPlay support for Kodi Add support for searching media to Kodi Mar 16, 2026

@joostlek joostlek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

So while I think this is a neat change, I consider the matching of the titles a service specific, so would it make sense to move this to pykodi? The library seems to be maintained by codeowners, so we might be able to move it there and make our code less service specific

@home-assistant
home-assistant Bot marked this pull request as draft March 16, 2026 12:28
@home-assistant

Copy link
Copy Markdown
Contributor

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@anishsane

Copy link
Copy Markdown
Contributor Author

So while I think this is a neat change, I consider the matching of the titles a service specific, so would it make sense to move this to pykodi? The library seems to be maintained by codeowners, so we might be able to move it there and make our code less service specific

I would normally agree with you. However, the pykodi library does not seem to be maintained. The last checkin was almost 3 years ago.

@joostlek

Copy link
Copy Markdown
Member

Sent the maintainer a message

@joostlek

Copy link
Copy Markdown
Member

He just said he's open to such a PR :)

@anishsane

Copy link
Copy Markdown
Contributor Author

Thanks! Will update.

@anishsane

Copy link
Copy Markdown
Contributor Author

I have created a PR in PyKodi. OnFreund/PyKodi#21
Once it gets approved, I will update the PR here.

@github-actions

Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days.
If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!

@github-actions github-actions Bot added the stale label May 26, 2026
@anishsane

Copy link
Copy Markdown
Contributor Author

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes. Thank you for your contribution!

I have created a PR in PyKodi. OnFreund/PyKodi#21
Once it gets approved, I will update the PR here.

@github-actions github-actions Bot removed the stale label May 26, 2026
@issue-triage-workflows

Copy link
Copy Markdown

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days.
If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!

@anishsane

Copy link
Copy Markdown
Contributor Author

There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes. Thank you for your contribution!

I have created a PR in PyKodi. OnFreund/PyKodi#21
Once it gets approved, I will update the PR here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants