Remove "authSig" from media player source (#11394)

This commit is contained in:
Philip Allgaier 2022-01-22 02:27:40 +01:00 committed by GitHub
parent fb2a24d11e
commit 049c3caadd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 10 deletions

View File

@ -333,3 +333,12 @@ export const formatMediaTime = (seconds: number): string => {
: secondsString.substring(14, 19); : secondsString.substring(14, 19);
return secondsString.replace(/^0+/, "").padStart(4, "0"); return secondsString.replace(/^0+/, "").padStart(4, "0");
}; };
export const cleanupMediaTitle = (title?: string): string | undefined => {
if (!title) {
return undefined;
}
const index = title.indexOf("?authSig=");
return index > 0 ? title.slice(0, index) : title;
};

View File

@ -24,6 +24,7 @@ import "../../../components/ha-state-icon";
import { showMediaBrowserDialog } from "../../../components/media-player/show-media-browser-dialog"; import { showMediaBrowserDialog } from "../../../components/media-player/show-media-browser-dialog";
import { UNAVAILABLE_STATES } from "../../../data/entity"; import { UNAVAILABLE_STATES } from "../../../data/entity";
import { import {
cleanupMediaTitle,
computeMediaControls, computeMediaControls,
computeMediaDescription, computeMediaDescription,
getCurrentProgress, getCurrentProgress,
@ -182,6 +183,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
entityState === "on"); entityState === "on");
const mediaDescription = computeMediaDescription(stateObj); const mediaDescription = computeMediaDescription(stateObj);
const mediaTitleClean = cleanupMediaTitle(stateObj.attributes.media_title);
return html` return html`
<ha-card> <ha-card>
@ -244,24 +246,21 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
</div> </div>
</div> </div>
${!isUnavailable && ${!isUnavailable &&
(mediaDescription || stateObj.attributes.media_title || showControls) (mediaDescription || mediaTitleClean || showControls)
? html` ? html`
<div> <div>
<div class="title-controls"> <div class="title-controls">
${!mediaDescription && !stateObj.attributes.media_title ${!mediaDescription && !mediaTitleClean
? "" ? ""
: html` : html`
<div class="media-info"> <div class="media-info">
<hui-marquee <hui-marquee
.text=${stateObj.attributes.media_title || .text=${mediaTitleClean || mediaDescription}
mediaDescription}
.active=${this._marqueeActive} .active=${this._marqueeActive}
@mouseover=${this._marqueeMouseOver} @mouseover=${this._marqueeMouseOver}
@mouseleave=${this._marqueeMouseLeave} @mouseleave=${this._marqueeMouseLeave}
></hui-marquee> ></hui-marquee>
${!stateObj.attributes.media_title ${!mediaTitleClean ? "" : mediaDescription}
? ""
: mediaDescription}
</div> </div>
`} `}
${!showControls ${!showControls

View File

@ -30,6 +30,7 @@ import "../../components/ha-icon-button";
import { UNAVAILABLE_STATES } from "../../data/entity"; import { UNAVAILABLE_STATES } from "../../data/entity";
import { import {
BROWSER_PLAYER, BROWSER_PLAYER,
cleanupMediaTitle,
computeMediaControls, computeMediaControls,
computeMediaDescription, computeMediaDescription,
formatMediaTime, formatMediaTime,
@ -185,6 +186,7 @@ class BarMediaPlayer extends LitElement {
: [{}]; : [{}];
const mediaDescription = computeMediaDescription(stateObj); const mediaDescription = computeMediaDescription(stateObj);
const mediaDuration = formatMediaTime(stateObj!.attributes.media_duration!); const mediaDuration = formatMediaTime(stateObj!.attributes.media_duration!);
const mediaTitleClean = cleanupMediaTitle(stateObj.attributes.media_title);
return html` return html`
<div class="info"> <div class="info">
@ -195,7 +197,7 @@ class BarMediaPlayer extends LitElement {
: ""} : ""}
<div class="media-info"> <div class="media-info">
<hui-marquee <hui-marquee
.text=${stateObj.attributes.media_title || .text=${mediaTitleClean ||
mediaDescription || mediaDescription ||
this.hass.localize(`ui.card.media_player.nothing_playing`)} this.hass.localize(`ui.card.media_player.nothing_playing`)}
.active=${this._marqueeActive} .active=${this._marqueeActive}
@ -203,7 +205,7 @@ class BarMediaPlayer extends LitElement {
@mouseleave=${this._marqueeMouseLeave} @mouseleave=${this._marqueeMouseLeave}
></hui-marquee> ></hui-marquee>
<span class="secondary"> <span class="secondary">
${stateObj.attributes.media_title ? mediaDescription : ""} ${mediaTitleClean ? mediaDescription : ""}
</span> </span>
</div> </div>
</div> </div>

View File

@ -1,4 +1,5 @@
import { supportsFeature } from "../common/entity/supports-feature"; import { supportsFeature } from "../common/entity/supports-feature";
import { cleanupMediaTitle } from "../data/media-player";
export default class MediaPlayerEntity { export default class MediaPlayerEntity {
constructor(hass, stateObj) { constructor(hass, stateObj) {
@ -115,7 +116,7 @@ export default class MediaPlayerEntity {
} }
get primaryTitle() { get primaryTitle() {
return this._attr.media_title; return cleanupMediaTitle(this._attr.media_title);
} }
get secondaryTitle() { get secondaryTitle() {