Aller au contenu

fredokl

Recommended Posts

Quick App - Plex

 

Voici un QA pour avoir les informations de la lecture en cours sur un lecteur PlexIl est simple d'emploi. Il faut entrer l'IP du serveur Plex, le port et son Token.

Pour connaître son Token, suivez le lien officiel Plex : https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/

Le QA donne aussi bien les données sur les films que sur les séries  (Type de média, Titre+tagline, Acteurs, Durée, Année de sortie, format audio sélectionné, Résumé).

Vois pouvez ajouter assez facilement des données supplémentaire si vous le souhaitez.

 

Plex_Film.thumb.png.90dc7acedb7bac02cc907a38fd143220.png1868202950_Plex_Srie.thumb.png.5175ae27991eebf36bf76f9e782525b8.png

 

 


-- QuickApp pour le lecteur multimédia Plex
-- Generic Device
-- HISTORIQUE
-- L'idée de départ vient du forum www.domotique-fibaro.fr et du Virtual Device PLEX adapté de Christophe Lemoine
-- http://www.domotique-fibaro.fr/index.php/topic/1692-plex-films-en-cours-de-lecture/
-- Qui est lui adapté du Virtual Device de rls46 (forum officiel)
-- https://forum.fibaro.com/topic/18780-plex-virtual-device/?tab=comments#comment-67777
-- HC3 Version:
-- V1.0 (29/05/2020) QuickApp pour le lecteur multimédia Plex pour Home center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr
-- V1.1 (05/06/2020) QuickApp pour le lecteur multimédia Plex pour Home center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr
--      Problème avec la variable "Token". Suppression de la variable
--      Le Token doit être mis directement dans "function QuickApp:connectPlex()" ==> ["X-Plex-Token"] = "votre Token",
-- Utilisation:
--      Remplir les variables "IPAddress", "TCPPort" & "Token" avec votre IP, le port et le Token
--      Changer l'ID de votre icône
-- Vous pouvez le modifier et l'améliorer à votre guise.
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                      PARAMÈTRES                                                                  --
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:onInit()
    __TAG = "QA"..plugin.mainDeviceId.."_PLEX"

    self.ip = self:getVariable("IPAddress")
    self.port = tonumber(self:getVariable("TCPPort"))
    self.http = net.HTTPClient({timeout=3000})
    self:updateProperty("deviceIcon", 1051) -- ID de votre icône à mettre ici
    self:trace("===========================================================")
    self:debug("onInit")
    self:refreshAuto()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- CONNECTION PLEX
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:connectPlex()
 local address = "http://"..self.ip..":"..self.port.."/status/sessions"
self.http:request(address, {
        options = {
            headers = {
                ["X-Plex-Token"] = "votre Token",
                ["X-Plex-Client-Identifier"] = "myPlexApp",
                ["Accept"] = "application/json",
            },
            method = "GET"
        },
        success = function(response)
            plexdata = json.decode(response.data)
            --self:debug(response.data)
            self:videoData(plexdata)
            end,
        error = function(err) self:debug("Error: " .. err) end
    }
  )
  end
--------------------------------------------------------------------------------------------------------------------------------------
-- DECODE AUDIO FORMAT
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:textAudioFormat(text)
local translate = {
    aac = "Dolby Digital",
    ac3 = "Dolby Digital",
    dca = "DTS"
    }
if text then text = translate[text] end
return self:normeText(text)
end

--------------------------------------------------------------------------------------------------------------------------------------
-- DONNÉES FILMS & SÉRIES
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:videoData(plexdata)
    local metaDataInfo
    local media
    local audioCodec
    local duration
    local summary
    local year
    local title
    local role

    if tonumber(plexdata.MediaContainer.size) > 0 then
    metaDataInfo = plexdata.MediaContainer.Metadata[1]
    media = metaDataInfo.librarySectionTitle
    audioCodec = metaDataInfo.Media[1].audioCodec
    duration = self:convertTime(metaDataInfo.duration)
    summary = metaDataInfo.summary
    
        -- Titre Films ou Séries
        if media == "Films" then
        title = metaDataInfo.title.." - "..metaDataInfo.tagline
        year = "Année de sortie: "..metaDataInfo.year.." - "..metaDataInfo.Country[1].tag
        role = "Avec: "..metaDataInfo.Role[1].tag.." - "..metaDataInfo.Role[2].tag.." - "..metaDataInfo.Role[3].tag.." - "..metaDataInfo.Role[4].tag.." ..."
        else
        title = metaDataInfo.grandparentTitle.." - "..string.gsub(metaDataInfo.parentTitle, "Season ", "S").."EP"..metaDataInfo.index.." - "..metaDataInfo.title
        year = "Année de sortie: "..metaDataInfo.year
        role = " "
        end
    end

    self:trace("vidéo en cours: "..self:normeText(title))
    self:trace("Durée de la vidéo: "..self:normeText(duration))

    self:updateView("lblmedia", "text", self:normeText(media))
    self:updateView("lbltitre", "text", self:normeText(title))
    self:updateView("lblActors", "text", self:normeText(role))
    self:updateView("lblTime", "text", "Durée: "..self:normeText(duration))
    self:updateView("lblyear", "text", self:normeText(year))
    --self:updateView("lblyear", "text", "Année de sortie: "..self:normeText(year))
    self:updateView("lblaudiocodec", "text", self:textAudioFormat(audioCodec))    
    self:updateView("lblSynopsis", "text", self:normeText(summary))

    self:trace("===========================================================")
end

function QuickApp:normeText(text)
if text then return text end
return "N/A"
end
--------------------------------------------------------------------------------------------------------------------------------------
-- CONVERSION MILLISECONDE EN H:M:S
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:round(num)
return math.floor(num + 0.5)
end

function QuickApp:convertTime(ms)
secondes = self:round(ms/1000)
heures = math.floor(secondes/3600)
minutes = math.floor(secondes%3600/60)
secondes = math.floor(secondes%3600%60)
return string.format("%02d:%02d:%02d", heures, minutes, secondes)
end
--------------------------------------------------------------------------------------------------------------------------------------
-- BOUTON REFRESH
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:btnRefresh()
self:connectPlex()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- REFRESH AUTO
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:refreshAuto()
self:trace("refreshAuto")
self:connectPlex()
fibaro.setTimeout(1000*10, function() self:refreshAuto() end)
end
--------------------------------------------------------------------------------------------------------------------------------------
-- FIN DU CODE
--------------------------------------------------------------------------------------------------------------------------------------

QuickApp:

PLEX_V1.1.fqa

 

Icône:

188306602_PlexIcone128.png.2a4486110a92791f6a4ca9749a2db734.png

 

EDIT: Légère modification du code pour des problèmes de Token. Voir le header.

 

Modifié par fredokl
  • Like 5
  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

J’utilisais aussi XBMC avant de s’appeler KODI mais avec l’achat d’une AppleTV, KODI n’est pas pris en charge. Plex est pas mal.


Envoyé de mon iPhone en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Tu as vraiment mauvais goût [emoji23]
Apple tv ça ce vend encore [emoji16]
La shield est mieux en plus on peut mettre kodi ou plex

Envoyé de mon BLA-L29 en utilisant Tapatalk

  • Haha 1
Lien vers le commentaire
Partager sur d’autres sites

 

Oui et ça ce vend même bien. Je ne connais pas la shield. On est tous équipés avec la pomme à la maison.

On en est très satisfait. Après les trucs avec androïd c'est pas pour moi. Pas assez classe!:2:

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Hi @fredokl ,

unfortunately your QuickApp works only, when you define only one genre in Plex i.e. "films"

        -- Titre Films ou Séries
        if media == "Films" then

in my case i have defined many genres like: "drama","action","scifi", etc.

 

P.S.  Excusez moi, mais je ne parle pas français

Lien vers le commentaire
Partager sur d’autres sites

  • 2 years later...
Le 05/02/2023 à 21:47, fredokl a dit :

can you share your version?

Sure, but it's a dirty code, not very clean....

Enjoy it and please let me know if you have any suggestions, or useful ideas. :-D

 

Modifié par bodyart
  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

No, I took a break. I'm building my pool right now and it's taking me quite a while. I've already started tinkering with the code but nothing too impressive so far. But don't worry, as soon as I'm done, I'll share it.

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...
Le 02/03/2023 à 23:45, fredokl a dit :

No, I took a break. I'm building my pool right now and it's taking me quite a while. I've already started tinkering with the code but nothing too impressive so far. But don't worry, as soon as I'm done, I'll share it.

I hope at least your pool is ready now. :-)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...