diff --git a/pages/images/seasonalsection.png b/pages/images/seasonalsection.png
new file mode 100644
index 0000000..068d0e6
Binary files /dev/null and b/pages/images/seasonalsection.png differ
diff --git a/search.js b/search.js
index eda4447..2f99fc5 100644
--- a/search.js
+++ b/search.js
@@ -198,7 +198,7 @@
limit: '100',
recursive: 'true',
searchTerm,
- fields: 'PrimaryImageAspectRatio,CanDelete,MediaSourceCount',
+ fields: 'PrimaryImageAspectRatio,CanDelete',
imageTypeLimit: '1',
enableTotalRecordCount: 'false',
...additionalParams
@@ -277,7 +277,7 @@
// Use dedicated Artists endpoint for better results
const userId = ApiClient.getCurrentUserId();
const baseUrl = ApiClient.serverAddress();
- url = `${baseUrl}/Artists?limit=100&searchTerm=${encodeURIComponent(searchTerm)}&fields=PrimaryImageAspectRatio&fields=CanDelete&fields=MediaSourceCount&imageTypeLimit=1&userId=${userId}&enableTotalRecordCount=false`;
+ url = `${baseUrl}/Artists?limit=100&searchTerm=${encodeURIComponent(searchTerm)}&fields=PrimaryImageAspectRatio&fields=CanDelete&imageTypeLimit=1&userId=${userId}&enableTotalRecordCount=false`;
} else {
url = buildSearchUrl(searchTerm, [type]);
}
diff --git a/watchlist.js b/watchlist.js
index d6d38c2..d24dbdc 100644
--- a/watchlist.js
+++ b/watchlist.js
@@ -6,10 +6,6 @@
In the Custom Tabs plugin, add a new tab with the following HTML content:
*/
@@ -68,33 +64,8 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
}));
}
- function optimizeMovieDataForStorage(movieDataArray) {
- // Collect all unique people data
- const peopleCache = new Map();
-
- // First pass: collect all people data
- movieDataArray.forEach(movie => {
- if (movie.People) {
- movie.People.forEach(person => {
- if (person.Id && person.Name && person.Type) {
- peopleCache.set(person.Id, {
- Id: person.Id,
- Name: person.Name,
- Type: person.Type
- });
- }
- });
- }
- });
-
- // Store people cache separately
- if (peopleCache.size > 0) {
- const peopleArray = Array.from(peopleCache.values());
- localStorageCache.set('people', peopleArray);
- LOG(`Stored ${peopleArray.length} unique people in people cache`);
- }
-
- // Return optimized movie data with only people IDs
+ function optimizeMovieDataForStorage(movieDataArray) {
+ // Return optimized movie data
return movieDataArray.map(movie => ({
Id: movie.Id,
Name: movie.Name,
@@ -103,7 +74,6 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
PremiereDate: movie.PremiereDate,
RunTimeTicks: movie.RunTimeTicks,
ProductionYear: movie.ProductionYear,
- PeopleIds: movie.People ? movie.People.map(person => person.Id).filter(id => id) : [],
UserData: {
IsFavorite: movie.UserData.IsFavorite,
LastPlayedDate: movie.UserData.LastPlayedDate,
@@ -113,28 +83,6 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
}));
}
- // Reconstruct people data from IDs and people cache
- function reconstructPeopleData(movieDataArray) {
- // Get people cache
- const peopleCache = localStorageCache.get('people') || [];
- const peopleMap = new Map(peopleCache.map(person => [person.Id, person]));
-
- // Reconstruct people data for each movie
- return movieDataArray.map(movie => {
- const reconstructedMovie = { ...movie };
-
- // Reconstruct People array from PeopleIds
- if (movie.PeopleIds && Array.isArray(movie.PeopleIds)) {
- reconstructedMovie.People = movie.PeopleIds
- .map(id => peopleMap.get(id))
- .filter(person => person); // Remove any undefined entries
- delete reconstructedMovie.PeopleIds; // Remove the IDs array
- }
-
- return reconstructedMovie;
- });
- }
-
// Optimize watchlist data for localStorage storage
function optimizeWatchlistDataForStorage(watchlistDataArray) {
return watchlistDataArray.map(item => ({
@@ -159,58 +107,6 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
}));
}
- // Show loading state for watchlist tab
- function showWatchlistLoading() {
- const watchlistTab = document.querySelector('div[data-tab="watchlist"]');
- if (!watchlistTab) return;
-
- // Hide all watchlist sections
- const sections = ['movies', 'series', 'seasons', 'episodes'];
- sections.forEach(section => {
- const sectionEl = watchlistTab.querySelector(`.watchlist-${section}`);
- if (sectionEl) sectionEl.style.display = 'none';
- });
-
- // Show loading message
- const loadingEl = watchlistTab.querySelector('.watchlist-loading') || createWatchlistLoadingElement();
- loadingEl.style.display = 'block';
- }
-
- // Create loading element if it doesn't exist
- function createWatchlistLoadingElement() {
- const watchlistTab = document.querySelector('div[data-tab="watchlist"]');
- if (!watchlistTab) return null;
-
- const loadingEl = document.createElement('div');
- loadingEl.className = 'watchlist-loading';
- loadingEl.innerHTML = `
-
-
-
Loading watchlist...
-
- `;
- loadingEl.style.display = 'none';
- watchlistTab.appendChild(loadingEl);
- return loadingEl;
- }
-
- // Hide loading state and show watchlist sections
- function hideWatchlistLoading() {
- const watchlistTab = document.querySelector('div[data-tab="watchlist"]');
- if (!watchlistTab) return;
-
- // Hide loading message
- const loadingEl = watchlistTab.querySelector('.watchlist-loading');
- if (loadingEl) loadingEl.style.display = 'none';
-
- // Show all watchlist sections
- const sections = ['movies', 'series', 'seasons', 'episodes'];
- sections.forEach(section => {
- const sectionEl = watchlistTab.querySelector(`.watchlist-${section}`);
- if (sectionEl) sectionEl.style.display = 'block';
- });
- }
-
// Add refresh button to tab headers
function addRefreshButtons() {
const watchlistSection = getWatchlistSection();
@@ -2173,8 +2069,6 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
} catch (err) {
ERR('Error initializing watchlist tab:', err);
tabStates.watchlist.isFetching = false;
- // Hide loading state on error too
- hideWatchlistLoading();
}
}
@@ -3637,10 +3531,8 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
const cachedData = localStorageCache.get(`movies`);
if (cachedData) {
LOG('Using localStorage cache for movies');
- // Reconstruct people data from IDs and people cache
- const reconstructedData = reconstructPeopleData(cachedData);
- moviePagination.updateCache(reconstructedData);
- return reconstructedData;
+ moviePagination.updateCache(cachedData);
+ return cachedData;
}
}
@@ -3653,7 +3545,7 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
const token = apiClient.accessToken();
// Fetch movies that have been played
- const url = `${serverUrl}/Items?IncludeItemTypes=Movie&UserId=${userId}&Recursive=true&Filters=IsPlayed&Fields=UserData,ProviderIds,People&EnableImageTypes=Primary,Backdrop,Thumb&ImageTypeLimit=1&SortBy=DatePlayed&SortOrder=Descending`;
+ const url = `${serverUrl}/Items?IncludeItemTypes=Movie&UserId=${userId}&Recursive=true&Filters=IsPlayed&Fields=UserData,ProviderIds&EnableImageTypes=Primary,Backdrop,Thumb&ImageTypeLimit=1&SortBy=DatePlayed&SortOrder=Descending`;
try {
const res = await fetch(url, { headers: { "Authorization": `MediaBrowser Token=\"${token}\"` } });