EmbyCrackedClient/web/music/suggestions.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
12 KiB
JavaScript

import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import BaseTab from"./../modules/tabbedview/basetab.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import listView from"./../modules/listview/listview.js";import globalize from"./../modules/common/globalize.js";import layoutManager from"./../modules/layoutmanager.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-button/emby-button.js";function MusicSuggestionsTab(view,params,options){if(BaseTab.apply(this,arguments),this.view=view,this.params=params,this.apiClient=connectionManager.getApiClient(params.serverId),"audiobooks"===options.item.CollectionType&&(view.querySelector(".latestSection .sectionTitle").innerHTML=globalize.translate("HeaderLatestAudioBooks"),view.querySelector(".favoriteArtistsSection .sectionTitle").innerHTML=globalize.translate("HeaderFavoriteAuthors"),view.querySelector(".favoriteAlbumsSection .sectionTitle").innerHTML=globalize.translate("HeaderFavoriteAudioBooks"),view.querySelector(".favoriteSongsSection .sectionTitle").innerHTML=globalize.translate("HeaderFavoriteEpisodes"),this.enableResume=!0),this.continueListeningItemsContainer=view.querySelector(".continueListeningSection .itemsContainer"),this.continueListeningItemsContainer.fetchData=fetchContinueListeningItems.bind(this),this.continueListeningItemsContainer.getListOptions=getContinueListeningListOptions.bind(this),this.continueListeningItemsContainer.parentContainer=view.querySelector(".continueListeningSection"),this.addFocusBehavior(this.continueListeningItemsContainer),this.latestItemsContainer=view.querySelector(".latestSection .itemsContainer"),this.latestItemsContainer.fetchData=fetchLatestItems.bind(this),this.latestItemsContainer.getListOptions=getLatestItemsListOptions.bind(this),this.latestItemsContainer.parentContainer=view.querySelector(".latestSection"),this.latestItemsContainer.maxTotalRecordCount=24,this.addFocusBehavior(this.latestItemsContainer),this.recentlyPlayedItemsContainer=view.querySelector(".recentlyPlayedSection .itemsContainer"),this.recentlyPlayedItemsContainer.fetchData=fetchRecentlyPlayedItems.bind(this),this.recentlyPlayedItemsContainer.getListOptions=getRecentlyPlayedListOptions.bind(this),this.recentlyPlayedItemsContainer.parentContainer=view.querySelector(".recentlyPlayedSection"),this.recentlyPlayedItemsContainer.maxTotalRecordCount=50,this.addFocusBehavior(this.recentlyPlayedItemsContainer),this.frequentlyPlayedItemsContainer=view.querySelector(".frequentlyPlayedSection .itemsContainer"),this.frequentlyPlayedItemsContainer.fetchData=fetchFrequentlyPlayedItems.bind(this),this.frequentlyPlayedItemsContainer.getListOptions=getFrequentlyPlayedListOptions.bind(this),this.frequentlyPlayedItemsContainer.parentContainer=view.querySelector(".frequentlyPlayedSection"),this.frequentlyPlayedItemsContainer.maxTotalRecordCount=50,this.addFocusBehavior(this.frequentlyPlayedItemsContainer),this.favoriteArtistsItemsContainer=view.querySelector(".favoriteArtistsSection .itemsContainer"),this.favoriteArtistsItemsContainer.fetchData=fetchFavoriteArtists.bind(this),this.favoriteArtistsItemsContainer.getListOptions=getFavoriteArtistListOptions.bind(this),this.favoriteArtistsItemsContainer.parentContainer=view.querySelector(".favoriteArtistsSection"),this.addFocusBehavior(this.favoriteArtistsItemsContainer),this.favoriteAlbumsItemsContainer=view.querySelector(".favoriteAlbumsSection .itemsContainer"),this.favoriteAlbumsItemsContainer.fetchData=fetchFavoriteAlbums.bind(this),this.favoriteAlbumsItemsContainer.getListOptions=getFavoriteAlbumListOptions.bind(this),this.favoriteAlbumsItemsContainer.parentContainer=view.querySelector(".favoriteAlbumsSection"),this.addFocusBehavior(this.favoriteAlbumsItemsContainer),this.favoriteSongsItemsContainer=view.querySelector(".favoriteSongsSection .itemsContainer"),this.favoriteSongsItemsContainer.fetchData=fetchFavoriteSongs.bind(this),this.favoriteSongsItemsContainer.getListOptions=getFavoriteSongListOptions.bind(this),this.favoriteSongsItemsContainer.parentContainer=view.querySelector(".favoriteSongsSection"),this.addFocusBehavior(this.favoriteSongsItemsContainer),params.parentId&&(this.continueListeningItemsContainer.setAttribute("data-parentid",params.parentId),this.latestItemsContainer.setAttribute("data-parentid",params.parentId),this.recentlyPlayedItemsContainer.setAttribute("data-parentid",params.parentId),this.frequentlyPlayedItemsContainer.setAttribute("data-parentid",params.parentId),this.favoriteArtistsItemsContainer.setAttribute("data-parentid",params.parentId),this.favoriteAlbumsItemsContainer.setAttribute("data-parentid",params.parentId),this.favoriteSongsItemsContainer.setAttribute("data-parentid",params.parentId)),enableWrappedListView()){let sectionTitleContainer=this.recentlyPlayedItemsContainer.parentContainer.querySelector(".sectionTitleContainer");sectionTitleContainer.classList.remove("sectionTitleContainer-cards"),sectionTitleContainer.classList.add("sectionTitleContainer-wrappedlistview"),(sectionTitleContainer=this.frequentlyPlayedItemsContainer.parentContainer.querySelector(".sectionTitleContainer")).classList.remove("sectionTitleContainer-cards"),sectionTitleContainer.classList.add("sectionTitleContainer-wrappedlistview"),(sectionTitleContainer=this.favoriteSongsItemsContainer.parentContainer.querySelector(".sectionTitleContainer")).classList.remove("sectionTitleContainer-cards"),sectionTitleContainer.classList.add("sectionTitleContainer-wrappedlistview")}initMoreButtons(view,params)}function enableWrappedListView(){return layoutManager.tv,!1}function initMoreButtons(view,params){[].forEach.call(view.querySelectorAll(".sectionTitleTextButton-link"),function(link){var href=link.getAttribute("data-href");href&&(link.href=href+"&serverId="+params.serverId+"&parentId="+params.parentId)})}function getCardOptions(items,options){return{renderer:cardBuilder,options:Object.assign({shape:"autooverflow",fields:["Name","ParentName"],centerText:!0,overlayPlayButton:!0,focusTransformTitleAdjust:!0},options),virtualScrollLayout:"horizontal-grid"}}function getListViewOptions(items,options){return{renderer:listView,options:Object.assign({action:"playallfromhere",overlayPlayButton:!1,verticalWrap:!0,mediaInfo:!1,enableSideMediaInfo:!1,enableUserDataButtons:!1,fields:["Name","ParentName"]},options),virtualScrollLayout:"horizontal-grid"}}function fetchContinueListeningItems(query){var apiClient,parentId;return this.enableResume?(apiClient=this.apiClient,parentId=this.params.parentId,apiClient.getResumableItems(apiClient.getCurrentUserId(),{Recursive:!0,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio,ProductionYear",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",MediaTypes:"Audio",ParentId:parentId})):Promise.resolve({Items:[],TotalRecordCount:0})}function getContinueListeningListOptions(items){var fields=[];return fields.push("Name"),fields.push("Album"),fields.push("ParentName"),{renderer:cardBuilder,options:{preferThumb:"auto",shape:"auto",fields:fields,showDetailsMenu:!0,overlayPlayButton:!0,context:"home",centerText:!0,cardLayout:!1,albumFirst:!0,focusTransformTitleAdjust:!0,animateProgressBar:!0},virtualScrollLayout:"horizontal-grid",commandOptions:{removeFromResume:!0}}}function fetchLatestItems(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getLatestItems({Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ParentId:parentId,ImageTypeLimit:1,Limit:24})}function getLatestItemsListOptions(items){return getCardOptions(items,{cardLayout:!0,vibrant:!0})}function fetchRecentlyPlayedItems(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({SortBy:"DatePlayed",SortOrder:"Descending",IncludeItemTypes:"Audio",Recursive:!0,Fields:this.getRequestedItemFields(),Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Logo"},query))}function fetchFrequentlyPlayedItems(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({SortBy:"PlayCount",SortOrder:"Descending",IncludeItemTypes:"Audio",Recursive:!0,Fields:this.getRequestedItemFields(),Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Logo"},query))}function getRecentlyPlayedListOptions(items){return enableWrappedListView()?getListViewOptions(items,{}):getCardOptions(items,{action:"playallfromhere",overlayPlayButton:!1,sideFooter:!0,centerText:!1})}function getFrequentlyPlayedListOptions(items){return enableWrappedListView()?getListViewOptions(items,{}):getCardOptions(items,{action:"playallfromhere",overlayPlayButton:!1,sideFooter:!0,centerText:!1})}function fetchFavoriteArtists(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getArtists(apiClient.getCurrentUserId(),Object.assign({SortBy:"SortName",SortOrder:"Ascending",Recursive:!0,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",Filters:"IsFavorite",StartIndex:0,ImageTypeLimit:1,EnableImageTypes:"Primary",ParentId:parentId},query))}function getFavoriteArtistListOptions(items){return getCardOptions(items,{overlayPlayButton:!0,fields:["Name"],round:!0})}function fetchFavoriteAlbums(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({SortBy:"SortName",IncludeItemTypes:"MusicAlbum",Recursive:!0,Fields:this.getRequestedItemFields(),Filters:"IsFavorite",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary"},query))}function getFavoriteAlbumListOptions(items){return getCardOptions(items,{overlayPlayButton:!0})}function fetchFavoriteSongs(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({SortBy:"SortName",IncludeItemTypes:"Audio",Recursive:!0,Fields:this.getRequestedItemFields(),Filters:"IsFavorite",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Logo"},query))}function getFavoriteSongListOptions(items){return enableWrappedListView()?getListViewOptions(items,{}):getCardOptions(items,{action:"playallfromhere",overlayPlayButton:!1,sideFooter:!0,centerText:!1})}Object.assign(MusicSuggestionsTab.prototype,BaseTab.prototype),MusicSuggestionsTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var promises=[];promises.push(this.continueListeningItemsContainer.resume(options)),promises.push(this.latestItemsContainer.resume(options)),promises.push(this.recentlyPlayedItemsContainer.resume(options)),promises.push(this.frequentlyPlayedItemsContainer.resume(options)),promises.push(this.favoriteArtistsItemsContainer.resume(options)),promises.push(this.favoriteAlbumsItemsContainer.resume(options)),promises.push(this.favoriteSongsItemsContainer.resume(options));let instance=this;Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus()})},MusicSuggestionsTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments),this.continueListeningItemsContainer.pause(),this.latestItemsContainer.pause(),this.recentlyPlayedItemsContainer.pause(),this.frequentlyPlayedItemsContainer.pause(),this.favoriteArtistsItemsContainer.pause(),this.favoriteAlbumsItemsContainer.pause(),this.favoriteSongsItemsContainer.pause()},MusicSuggestionsTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments),this.continueListeningItemsContainer=null,this.latestItemsContainer=null,this.recentlyPlayedItemsContainer=null,this.frequentlyPlayedItemsContainer=null,this.favoriteArtistsItemsContainer=null,this.favoriteAlbumsItemsContainer=null,this.favoriteSongsItemsContainer=null,this.enableResume=null};export default MusicSuggestionsTab;