Mushroom - Media Player Card

Dans le dossier www

Good luck :sweat_smile:

bizarre elle n’apparaît pas … j’essaie de faire apparaître les contrôles sous plex mais ca n’apparaît pas, j’arrive pas non plus a bloquer la taille de la carte pour quelle ne change pas en veille mais rien n’y fait . je crois qu’il y a trop de code je vois plus clair.

Dites voir il y a moyen de faire la même chose avec Netflix ou prime vidéo. Afficher la jaquette lors de la lecture ?

Faut voir les attributs du media_player quand tu lances Netflix ou Prime.
Je l’utilise pas perso donc pas testé
Mais fais un screen pour voir tout ça

voici ce que j’ai…

Malheureusement il n’y a pas d’attribut ‹ picture_entity › qui génère un poster
Donc pas de possibilité de l’adapter à cette carte

C’est bien ce qu’il me semblait malheureusement. Par contre, toi qui est un peu plus doué dans le domaine que moi. Est-ce qu’à ton avis, il est possible de mettre une image fixe le logo de Netflix, par exemple quand je regarde.

J’ai bricoler ça :

Netflix

Je ne sais pas si cela peux t’intéresser

1 « J'aime »

Quelqu’un utilse une Fire TV ?
depuis un moment, je n’ai plus de pochette qui s’affiche, mais une capture ecran…!
meme sur le simple lecteur media de HA, ou le mini player, j’ai le meme soucis.
Mais uniquement avec des series, les films, il m’affiche la pochette, les series, j’ai des captures ecran.
quelqu’un peut me confirmer le soucis, et pourquoi pas une solution ?

Merci d’avance.

Concernant ma capture, c’est la meme serie et le meme episode, un sur apple tv (avec pochette)
l’autre sur fire tv (sans pochette)

apple tv:
Capture d’écran 2024-09-16 à 11.54.37

fire tv:
Capture d’écran 2024-09-16 à 11.54.44

@Guizmos
tu n’aurais pas une solution a ce problème stp ?
Merci d’avance…

je reviens vers vous j’arrive pas a trouver comment je peux arrondir l’mage du media .
merci a vous

pareil il n’y a pas moyen dans le volume de mettre + et - à la place du curseur?

j’essai également de mettre au hauteur fixe a la carte mais rien a faire.

type: vertical-stack
cards:
  - type: custom:stack-in-card
    cards:
      - type: custom:mushroom-media-player-card
        entity: media_player.currently_playing
        icon: mdi:play
        name: Lecteur média
        use_media_info: true
        use_media_artwork: false
        show_volume_level: false
        media_controls:
          - on_off
          - play_pause_stop
          - previous
          - next
        volume_controls:
          - volume_buttons
          - volume_set
        fill_container: true
        card_mod:
          style: |
            mushroom-shape-icon {
              display: flex;
              {% set media_type = state_attr(config.entity, 'media_content_type') %}
              {% if media_type == 'tvshow' %}
                --card-mod-icon: mdi:television-classic;
                animation: flicker 1s linear infinite alternate;
              {% elif media_type == 'movie' %}
                --card-mod-icon: mdi:movie-roll;
                animation: spin 2s linear infinite reverse;
              {% elif media_type == 'video' %}
                --card-mod-icon: mdi:movie-roll;
                animation: spin 2s linear infinite reverse;
              {% elif media_type == 'music' %}
                --card-mod-icon: mdi:music;
                animation: beat 1.3s ease-out infinite both;
              {% elif media_type == 'playlist' %}
                --card-mod-icon: mdi:music;
                animation: beat 1.3s ease-out infinite both;
              {% else %}
                --card-mod-icon: mdi:play;
              {% endif %}

              {{ 'animation: none;' if not is_state(config.entity, 'playing') }}

            }
            @keyframes flicker {
              0%, 31.98%, 32.98%, 34.98%, 36.98%, 39.98%, 67.98%, 68.98%, 95.98%, 96.98%, 97.98%, 98.98%, 100% { --icon-color: rgba(var(--rgb-indigo), 1); }
              32%, 33%, 35%, 36%, 37%, 40%, 68%, 69%, 96%, 97%, 98%, 99% { --icon-color: rgba(var(--rgb-indigo), 0.6); }
            }
            @keyframes beat {
              0%, 60% { --icon-symbol-size: 21px; }
              5%, 17%, 57% { --icon-symbol-size: 22px; }
              10%, 20%, 51% { --icon-symbol-size: 23px; }
              25%, 45% { --icon-symbol-size: 24px; }
              30%, 39% { --icon-symbol-size: 25px; }
              33% { --icon-symbol-size: 26px; }
            }
            ha-card {
              --ha-card-border-width: 0;
            }
            ha-card:before {
              transform: translate3d(0,0,0);
              -webkit-transform: translate3d(0,0,0);
              content: "";

              background: url('/local/idle_art.png') center no-repeat;
              {% if not (is_state('media_player.currently_playing', 'idle') or is_state('media_player.currently_playing', 'standby')) %}
                background: url( '{{ state_attr(config.entity, "entity_picture") }}') center no-repeat;
              {% endif %}
              
              width: 95%;
              height: 140% ;
              background-size: 80%;
              margin: 22px 2px 2px;
              margin-left: auto;
              margin-right: auto;
              filter: drop-shadow(4px 4px 6px rgba(0, 0, 0, 0.5));
              border-radius: var1(--control-border-radius);

              {% set media_type = state_attr(config.entity, 'media_content_type') %}
              {% if media_type == 'tvshow' %}
                aspect-ratio: 3 / 4;
              {% elif media_type == 'movie' %}
                aspect-ratio: 4 / 4;
              {% elif media_type == 'music' %}
                aspect-ratio: 4 / 3;
              {% elif media_type == 'video' %}
                aspect-ratio: 4 / 4;
              {% else %}
                aspect-ratio: 1 / 1;
              {% endif %}
            }
      - type: conditional
        conditions:
          - entity: media_player.currently_playing
            state_not: 'off'
          - entity: media_player.currently_playing
            state_not: idle
        card:
          entity: media_player.currently_playing
          hide:
            icon: true
            name: true
            runtime: true
            source: true
            power: true
            state_label: true
            volume: true
            info: true
            progress: false
            controls: true
          more_info: false
          type: custom:mini-media-player
          toggle_power: false
          group: true
          card_mod:
            style:
              mmp-progress$: |
                paper-progress {
                  /* Apply album art color to progress bar when paused */
                  --paper-progress-container-color: rgba(var(--album-art-color), 0.2) !important;
                  /* Apply album art color to progress bar when playing */
                  --paper-progress-active-color: rgb(var(--album-art-color)) !important;
                }
              .: |
                ha-card {
                    /* Move progress bar up into gap. Check if PLAY|STOP are supported */
                  --base-offset: calc(-2 * var(--mush-spacing, 12px)
                                      + 1.29 * var(--mush-spacing, 12px)
                                      + var(--mush-card-primary-line-height, 1.5) * var(--mush-card-primary-font-size, 14px)
                                      + var(--mush-card-secondary-line-height, 1.5) * var(--mush-card-secondary-font-size, 12px)
                                      + var(--mush-control-height, 42px));

                    /* Check if Play (16385) or Stop (4096) are supported and add control button height if they are */
                  {% if state_attr(config.entity, 'supported_features') | int | bitwise_and(20480) > 0 %}
                    --control-offset: calc(var(--mush-spacing, 12px) + var(--mush-control-height, 42px));
                  {% else %}
                    --control-offset: 0px;
                  {% endif %}

                    /* Check if album name is present and add to height if it is */
                  {% set album_name = state_attr(config.entity, 'media_album_name') %}
                  {% if album_name == None or album_name == "" %}
                    --album-offset: 0px;
                  {% else %}
                    --album-offset: calc(var(--mush-card-secondary-line-height, 1.5) * var(--mush-card-secondary-font-size, 12px));
                  {% endif %}

                    bottom: calc(var(--base-offset) + var(--control-offset) + var(--album-offset));

                    /* Correct margins for progress bar */
                  margin: 0px 28px -12px;

                    /* Set height of card to match pregress bar height */
                  height: var(--mmp-progress-height);

                    /* Remove border outline */
                  --ha-card-border-width: 0;

                    /* Round corners of progress bar */
                  --mmp-border-radius: var(--control-border-radius, 12px) !important;

                    /* Set height of progress bar */
                  --mmp-progress-height: 12px !important;

                    /* Remove transitions to prevent progress bar floating in */
                  transition: all 0s;
                }
    card_mod:
      style: |
        ha-card:before {
          transform: translate3d(0,0,0);
          -webkit-transform: translate3d(0,0,0);
          content: "";
          position: absolute;
          height: 100%;
          width: 100%;

          background: url('/local/idle_art.png') center no-repeat;
          {% if not (is_state('media_player.currently_playing', 'idle') or is_state('media_player.currently_playing', 'standby')) %}
            background: url( '{{ state_attr('media_player.currently_playing', "entity_picture") }}' ) center no-repeat;
          {% endif %}


          filter: blur(50px) saturate(50%);
          background-size: 150% 150%;
        }
        ha-card {
          transform: translate3d(0,0,0);
          -webkit-transform: translate3d(0,0,0);
        }
layout_options:
  grid_columns: 2
  grid_rows: auto

Screenshot 2024-09-29 07.34.28

Salut
J’ai pas de solution pour ce problème car c’est le media_player qui va générer l’image. Et en fonction de matériel que tu utilises et/ou du lecteur, l’image ne sera pas la même.

J’ai pas moyen de tester car je n’ai qu’une Apple TV sous le coude

Hello,

Carrément, comment as-tu fait ?

Merci pour le retour :slight_smile:

Alors, tu copie l’image de Netflix ci-dessous dans le dossier www

netflix

Et ensuite voici le code de ma carte :

type: custom:stack-in-card
cards:
  - type: custom:mushroom-media-player-card
    entity: media_player.plex_tv
    primary_info: none
    secondary_info: none
    icon_type: none
    use_media_info: false
    use_media_artwork: false
    show_volume_level: false
    fill_container: false
    card_mod:
      style: |
        ha-card {
          --ha-card-border-width: 0;
        }
        ha-card:before {
          transform: translate3d(0,0,0);
          -webkit-transform: translate3d(0,0,0);
          content: "";
          background: url('/local/netflix.gif') center no-repeat;
          background-size: contain;
          margin: 4px 4px 0px;
          filter: drop-shadow(4px 4px 6px rgba(0, 0, 0, 0.5));
          border-radius: var(--control-border-radius);
          aspect-ratio: 2 / 1;
        }
card_mod:
  style: |
    ha-card:before {
      transform: translate3d(0,0,0);
      -webkit-transform: translate3d(0,0,0);
      content: "";
      position: absolute;
      height: 100%;
      width: 100%;
      background: url('/local/netflix.gif') center no-repeat;
      filter: blur(100px) saturate(200%);
      background-size: 130% 130%;
    }
    ha-card {
      transform: translate3d(0,0,0);
      -webkit-transform: translate3d(0,0,0);
      border-radius: 30px;
      overflow: hidden !important;
      position: relative;
      border: none !important;
    }

Le principe est le même avec n’importe quel gif ou image, il te suffit de remplacer le nom dans la carte ( url(‹ /local/netflix.gif ›) ) par celui que tu auras choisi

Have fun

1 « J'aime »

Hello,

Alors j’ai quelques difficultés aussi pour les arrondis d’image.
Il faut que le format correspondent au code pour que les arrondis s’appliquent.

C’est donc cette partie du code qu’il faut modifier :

                        border-radius: var(--control-border-radius);
                       {% set app_type = state_attr(config.entity, 'app_name') %}
                        {% if app_type == 'Yattee' %}
                          aspect-ratio: 16 / 9;
                        {% endif %}
                       {% set media_type = state_attr(config.entity, 'media_content_type') %}
                        {% if media_type == 'tvshow' %}
                          aspect-ratio: 16 / 9;
                        {% elif media_type == 'movie' %}
                          aspect-ratio: 2 / 3;
                        {% elif media_type == 'video' %}
                          aspect-ratio: 2 / 3;
                        {% else %}
                          aspect-ratio: 1 / 1;
                        {% endif %}

Bonjour,

j’utilise cette card pour afficher ce qui passe sur la tv

Connaissez vous un de récupérer et d’afficher dans la card l’aperçu que l’on a quand on se connecte sur portail free OQUEE :

Salut

Montre moi le code de ta carte au complet s’il te plait.
Il me faut également quelques détails, utilises-tu des intégrations ? Si oui lesquels? Et quels sensors elle te remontent.
Merci

Bonjour @Guizmos,
désolé pour cette réponse tardive, je n’étais pas devant le pc :frowning:
Voici le code

type: custom:mushroom-media-player-card
entity: media_player.freebox_player_pop
use_media_info: true
show_volume_level: false
media_controls:
  - repeat
  - on_off
  - shuffle
  - previous
  - play_pause_stop
  - next
volume_controls:
  - volume_mute
  - volume_set
  - volume_buttons
collapsible_controls: false

J’utilise Android TV Remote

L’appareil c’est ma free Player POP :

Les 2 entités sont :

Je ne sais pas comment t’afficher les sensor qui t’intéresse

très bien, merci pour ces infos, est-ce que tu pourrais aller dans les outils de dev et regarder les attributs de tes media_player freebox en cours de lecture ?

Oups désolé je viens de voir que mon message était resté en brouillon… :man_facepalming:

Bonjour @Guizmos,

pas de soucis :smiley: Merci pour ton aide.
J’en profite pour te souhaiter mes voeux pour cette nouvelle année :slight_smile:

Voici ce que j’ai comme entités reconnues par HA :

Entité : media_player.freebox_player_pop_2

app_id: net.oqee.androidtv
app_name: net.oqee.androidtv
assumed_state: true
device_class: tv
friendly_name: Freebox Player POP
supported_features: 153529

Entité : media_player.freebox_player_pop

friendly_name: Freebox Player POP
supported_features: 152449
volume_level: 1
is_volume_muted: false
media_content_type: video
media_position_updated_at: "2025-01-08T18:13:00.215608+00:00"
app_id: AndroidNativeApp
app_name: OQEE by Free
entity_picture_local: null
media_content_id: ""
media_duration: 0
media_title: La meilleure boulangerie de France

Je n’ai pas mis les attributs de la remote par ce que l’on retrouve les informations dans l’entité « media_player.freebox_player_pop ».