Jump to content

Live TV Channels No Longer Included in Global Search


Recommended Posts

Posted
4 minutes ago, Ladiesman0217 said:

Submitting a problem report here, as I am facing the same issue.

Problem
Live TV channels are missing from search results for most users — unscoped search omits `TvChannel`, but works for one user with identical Live TV permissions

Summary
Searching for a Live TV channel by name returns no results for our users. The channel is present, indexed, and searchable — a search *scoped* to `TvChannel` finds it — but the unscoped search (`/Items?SearchTerm=…`) returns `TotalRecordCount: 0` for channel-only terms, so no Live TV section is rendered. VOD search works normally for the same users.

One user out of 28 returns channels correctly, despite having the same Live TV policy settings as the users where it fails.

Environment

  • Emby Server 4.10.1.0 (Linux, x64), Docker image `emby/embyserver:latest`
  • Host OS: Ubuntu 24.04, kernel 6.17.0-29-generic
  • Live TV source: M3U tuner, ~815 channels
  • Clients tested: 
    • Emby Web 4.10.1.0 (Edge/Chrome on Windows),
    • Emby for Android 3.5.55,
    • Emby for Samsung 2.3.6,
    • Fire TV (Emby/2.5.03a).
    • The issue reproduces via the REST API with no client involved.

Steps to reproduce

  1. Sign in as a user with Live TV enabled
  2. Search for `KMBC`. The channel exists and is named "ABC: KANSAS CITY KMBC" (channel number 488695).
  3. Observe: no results / no Live TV section.
  4. Repeat as another user (same Live TV flags) → the channel does appear.

Reproducable via API (replace `<APIKEY>` / `<UserId>`):

# Fails (0 results) for User 1:
GET /Items?api_key=<APIKEY>&UserId=User1&SearchTerm=KMBC&Recursive=true
→ TotalRecordCount: 0

# Succeeds (1 result) for the same user, when scoped to TvChannel:
GET /Items?api_key=<APIKEY>&UserId=User1&SearchTerm=KMBC&Recursive=true&IncludeItemTypes=TvChannel
→ TotalRecordCount: 1  → "ABC: KANSAS CITY KMBC"

# Succeeds (5 results) for a different user, unscoped:
GET /Items?api_key=<APIKEY>&UserId=User2&SearchTerm=KMBC&Recursive=true
→ TotalRecordCount: 6

Expected
The channel appears in search results (with the Live TV section) for any user with Live TV access, the same way it does for `User 2`.

Actual
Unscoped search returns zero channels for 27 of 28 users, including every user with Live TV enabled except one. VOD search returns results normally for those same users.

Evidence

1. The channel is in the search index.__ Direct query of `library.db` (read-only):

SELECT rowid, * FROM fts_search9 WHERE fts_search9 MATCH '"KMBC"*';
7877514|ABC: KANSAS CITY KMBC|||

Rowid `7877514` is the channel. Emby's own bound query for the search matches it, and the server log confirms the search ran:

2026-10-19 21:32:24.572 Info SqliteItemRepository: Original search term: KMBC. Bound search term: "KMBC"*
2026-10-19 21:36:36.461 Info SqliteItemRepository: Original search term: KMBC. Bound search term: "KMBC"*
2026-10-19 20:58:23.923 Info SqliteItemRepository: Original search term: kansas city. Bound search term: "kansas" "city"*

2. Per-user results (`GET /Items?SearchTerm=<term>&Recursive=true&Limit=5`, all 28 users tested; results are stable across repeated calls):
 

User EnableLiveTvAccess EnableAllChannels unscoped "NESN" unscoped "KMBC" unscoped VOD
User2 true false 5 (TvChannel) 6 —
User1 true false 0 0 NCIS 3, Atlas 6 ✅
User3 true false 0 0 ✅
User4 true false 0 0 ✅
User5 true false 0 0 ✅
User6 false true 0 0 ✅
23 others false false 0 0 ✅

3. Same term, same user — only the type scope differs:

User1, SearchTerm=NESN, no IncludeItemTypes            → 0
User1, SearchTerm=NESN, IncludeItemTypes=TvChannel     → 5  (US: NESN, US: NESN PLUS, US: NESN (S), …)

4. Guide data is present, so this isn't a missing-EPG case — the channel has a current program:

Channel "ABC: KANSAS CITY KMBC" (Number 488695) → CurrentProgram "Live: NFL Football",
StartDate 2026-10-20T00:15:00Z, EndDate 2026-10-20T03:15:00Z

5. Why no Live TV section appears in the UI. In `dashboard-ui/search/search.js` / `emby-apiclient/apiclient.js`, the search view builds one section per item type returned by a separate call:

promises.push(this.getItems(userId, query, signal)),
query.StartIndex || query.IncludeItemTypes || false === query.IncludeSearchTypes
    || promises.push(this.getItemTypes(userId, query, signal)),
… responses[0].ItemTypes = responses[1].Items

Because the unscoped search reports no channels, `TvChannel` is absent from `ItemTypes`, so the client never queries or renders a Live TV section.

6. Observation on the working user: `User2`'s "Live TV" view id is `268391`, while every other user's is `251` (`GET /Users/{id}/Views`). Not sure if it's relevant, but it's the only difference I found.
 

Screenshots:

User 1

image.thumb.png.c29e8b0bf01287546d48fbd89f8d30be.png

User 2

image.thumb.png.f4f35d5c92e5b3350d155f33cc553afc.png

 

Logs attached.

embyserver.txt 49.58 kB · 0 downloads embyserver-63928045966.txt 25.43 MB · 0 downloads

hi, did you check other parental control restrictions for that user?

Ladiesman0217
Posted

Hi Luke,

Both the user that CAN and the one the CAN NOT search live channels have the same setting for parental controls

image.png.02deed0e3e9967d4297400bd5a431cd8.png

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...