EmbyCrackedClient/web/modules/mediainfo/mediainfo.js

1 line
19 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import datetime from"./../common/datetime.js";import globalize from"./../common/globalize.js";import textEncoding from"./../common/textencoding.js";import itemHelper from"./../common/itemhelper.js";import itemManager from"./../common/itemmanager/itemmanager.js";import appRouter from"./../approuter.js";import"./../emby-elements/emby-button/emby-button.js";import dataFormatter from"./../common/dataformatter.js";import browser from"./../browser.js";require(["material-icons","css!modules/mediainfo/mediainfo.css","programStyles"]);let IconSvg={};function getTimerIndicator(item){let status;var itemType=item.Type;if("SeriesTimer"===itemType)return'<i class="md-icon md-icon-fill mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xe062;</i>';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==itemType)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'<i class="md-icon md-icon-fill mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xe062;</i>':'<i class="md-icon md-icon-fill mediaInfoItem mediaInfoIconItem">&#xe062;</i>':'<i class="md-icon md-icon-fill mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xe061;</i>'}function getProgramInfoHtml(item,options){var name,dummyChannel,html="",miscInfo=[];let text,date;if(options.programIndicator&&(item.IsLive?miscInfo.push(getShadedMediaInfoItem(globalize.translate("Live"),"mediaInfoProgramAttribute liveTvProgram")):item.IsPremiere?miscInfo.push(getShadedMediaInfoItem(globalize.translate("Premiere"),"mediaInfoProgramAttribute premiereTvProgram")):item.IsNew?miscInfo.push(getShadedMediaInfoItem(globalize.translate("AttributeNew"),"mediaInfoProgramAttribute newTvProgram")):item.IsRepeat&&miscInfo.push(getShadedMediaInfoItem(globalize.translate("Repeat"),"mediaInfoProgramAttribute repeatTvProgram"))),item.StartDate&&!1!==options.programTime)try{text="",date=new Date(Date.parse(item.StartDate)),!1!==options.startDate&&(text+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})),text+=" "+datetime.getDisplayTime(date),item.EndDate&&(date=new Date(Date.parse(item.EndDate)),text+=" &ndash; "+datetime.getDisplayTime(date)),miscInfo.push(text)}catch(e){console.log("Error parsing date: "+item.StartDate)}return item.ChannelName&&!1!==options.channelName&&(dummyChannel={ServerId:item.ServerId,Type:"TvChannel",Name:item.ChannelName,Id:item.ChannelId,Number:item.Number,ChannelNumber:item.ChannelNumber},name=itemManager.getDisplayName(dummyChannel,{}),options.interactive&&item.ChannelId?miscInfo.push({html:'<a is="emby-linkbutton" style="font-weight:inherit;" class="button-link button-link-color-inherit mediaInfoItem" href="'+appRouter.getRouteUrl(dummyChannel)+'">'+name+"</a>"}):miscInfo.push(name)),item.OfficialRating&&options.officialRating&&miscInfo.push(getBorderMediaInfoItem(item.OfficialRating)),options.timerIndicator&&(dummyChannel=getTimerIndicator(item))&&miscInfo.push({html:dummyChannel}),html+=miscInfo.map(getMediaInfoItem).join("")}function getGenresHtml(item,options){let context=options.context;var genres=(item.GenreItems||[]).slice(0);let genreLimit=options.genreLimit;null!=(genreLimit=null==genreLimit?1:genreLimit)&&genres.length>genreLimit&&(genres.length=genreLimit);let type;switch(context){case"games":type="GameGenre";break;case"music":type="MusicGenre";break;default:type="Genre"}options=options.genreConcat||", ";let html=genres.map(function(p){return'<a class="button-link button-link-color-inherit" is="emby-linkbutton" style="font-weight:inherit;" href="'+appRouter.getRouteUrl({Name:p.Name,Type:type,ServerId:item.ServerId,Id:p.Id},{context:context})+'">'+textEncoding.htmlEncode(p.Name)+"</a>"}).join(options);return html=html&&'<div class="mediaInfoItem" style="white-space:normal;">'+html+"</div>"}function getShadedMediaInfoItem(text,itemClass){let mainElementClass=("mediaInfoItem-shaded "+(itemClass||"")).trim();return browser.android||(mainElementClass+=" flex align-items-center"),{html:'<div class="mediaInfoItem '+mainElementClass+'"><span class="mediaInfoItem-shaded-text">'+text+"</spa