Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Remonté d'info PVR ( TVHeadend )

Répondre
JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 13 oct. 2018, 13:15

Hello,

Je rencontre un soucis sur la remonté d'info _uniquement_ pour le PVR, si je lance un film, une série, aucun probleme.

lorsque je lance une serie...

Code : Tout sélectionner

[2018-10-13 13:09:36][DEBUG] : Received : {"title":"The Walking Dead : S09E01 - A New Beginning","status":"Vidéo en cours","status_id":"1","cover":"http%3a%2f%2fwww.thetvdb.com%2fbanners%2fposters%2f153021-58.jpg/","type":"Séries","genre":"Adventure / Drama / Horror / Thriller","endtime":"1205","statusmedia":"Lecture","year":"2018-10-07","plot":"Rick and his group make a risky run into Washington, D.C. to search for artifacts they will need to build the civilization he and Carl envisioned."} from 192.168.105.38
[2018-10-13 13:09:36][DEBUG] : Plusieurs kodi dans Jeedom je cherche avec l'IP
[2018-10-13 13:09:36][DEBUG] : Saving cover : http://192.168.105.38:8080/image/image://http%253a%252f%252fwww.thetvdb.com%252fbanners%252fposters%252f153021-58.jpg to plugins/kodi/resources/192.168.105.38cover.jpg
[2018-10-13 13:09:37][DEBUG] : File size is : 112595
Je met stop....

Code : Tout sélectionner

[2018-10-13 13:10:22][DEBUG] : La réponse est {"id":1,"jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
[2018-10-13 13:10:22][DEBUG] : Kodi m'a dit que le playerid est 1
[2018-10-13 13:10:22][DEBUG] : params:{"playerid": 1}
[2018-10-13 13:10:22][DEBUG] : request:Player.Stop
[2018-10-13 13:10:22][DEBUG] : mac_address:e0:00:00:99:00:1d
[2018-10-13 13:10:22][DEBUG] : ip:192.168.105.38
[2018-10-13 13:10:22][DEBUG] : port:8080
[2018-10-13 13:10:23][DEBUG] : Received : {"title":"Aucun","status":"Vidéo arrêtée","status_id":"5","cover":"aucun","type":"aucun","genre":"aucun","endtime":"aucun","statusmedia":"Stop"} from 192.168.105.38
[2018-10-13 13:10:23][DEBUG] : Plusieurs kodi dans Jeedom je cherche avec l'IP
Jusque ici, RAS donc... maintenant je lance une chaine TV....

Aucune infos dans le log n'arrive à mon jeedom...

Puis je met stop....

Code : Tout sélectionner

[2018-10-13 13:12:48][DEBUG] : La réponse est {"id":1,"jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
[2018-10-13 13:12:48][DEBUG] : Kodi m'a dit que le playerid est 1
[2018-10-13 13:12:48][DEBUG] : params:{"playerid": 1}
[2018-10-13 13:12:48][DEBUG] : request:Player.Stop
[2018-10-13 13:12:48][DEBUG] : mac_address:e0:00:00:99:00:1d
[2018-10-13 13:12:48][DEBUG] : ip:192.168.105.38
[2018-10-13 13:12:48][DEBUG] : port:8080
[2018-10-13 13:12:50][DEBUG] : Received : {"title":"Aucun","status":"Vidéo arrêtée","status_id":"5","cover":"aucun","type":"aucun","genre":"aucun","endtime":"aucun","statusmedia":"Stop"} from 192.168.105.38
[2018-10-13 13:12:50][DEBUG] : Plusieurs kodi dans Jeedom je cherche avec l'IP
Je suppose que c'est pas bien méchant, il dois manquer un morceau de code pour catcher les infos du PVR, comment puis-je aider ?

Merci à tous !

OliS
Timide
Messages : 2
Inscription : 28 oct. 2016, 09:10

Re: Remonté d'info PVR ( TVHeadend )

Message par OliS » 28 nov. 2018, 11:54

Bonjour à tous,

Je rencontre le même soucis: Kodi + TVHeadend sans remontée de l'information de lecture dans jeedom.
Je peux aider également !

Olivier

Ap0p0
Timide
Messages : 38
Inscription : 10 mars 2017, 12:26

Re: Remonté d'info PVR ( TVHeadend )

Message par Ap0p0 » 14 janv. 2019, 00:20

Bonjour à tous,

même problème ici. Je vois que le support est proche de zéro, pour ne pas dire zéro. Pas mal pour un plugin officiel et encore mieux pour un plugin payant ....

Jeedom stable 3.2.12 - VM Debian 9
Kodi 17.6 - python 2.7.12 - python 3.5.2

Bref je rajouterai un peu de log venant de kodi. C'est le plugin Kodi qui crash lors du lancement d'une chaîne TV:

Code : Tout sélectionner

00:07:56.891 T:139951935563520   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.NameError'>
                                            Error Contents: global name 'pvr_title' is not defined
                                            Traceback (most recent call last):
                                              File "/home/user/.kodi/addons/script.jeedom/addon.py", line 153, in onPlayBackStarted
                                                Jeedom(u'{"title":"'+pvr_title.decode("utf-8")+u'","status":"'+status+u'","status_id":"1","cover":"aucun","type":"'+type+u'","genre":"aucun","endtime":"'+endtime.decode("utf-8")+'","statusmedia":"Lecture"}')
                                            NameError: global name 'pvr_title' is not defined
                                            -->End of Python script error report<--
Lors de l'arrêt d'une chaîne TV, pour ma part, le plugin Kodi ne réagit pas du tout, aucune trace nulle part.

Si on pouvait avoir un peu d'aide des dev, ça serait sympa. Merci.

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 13 août 2019, 06:54

Effectivement, pas la moindre MAJ du plugin depuis des lustres... ça deviens habituel les plugins jeedom tout moisis alors que ceux proposés par la communauté sont des vraies pépites... ( l'App Mobile est le plus bel exemple).

Il semble que le plugin ai des licences GPLv3, mais pas partout, je prendrais pas non plus le risque de le fork et de le proposer en gratuit, car desktop/php/kodi.php n'a aucune licence de défini.

J'aurais tendance à réécrire from scratch par sécurité du coup :|

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 13 août 2019, 22:02

J'ai écris une fonction afin de "remplir" les chaines TVs depuis le PVR ( J'utilise TVHeadend ). Il manque l'ajout des chaines de Radio, que je me met en TODO.

Il suffit de coller la fonction dans plugins/kodi/core/class/kodi.class.php, je l'ai collée entre preSave() et postSave() ( ligne 225 donc ? )

Puis, dans la fonction postSave() il faut appeller la fonction

Code : Tout sélectionner

		if (!$this->getId()) {
			return;
		}
		$this->doTVChannelImport(); // Ajout de l'appel de la fonction

		$notifications = $this->getCmd(null, 'notifications');
		

Code : Tout sélectionner

	public function doTVChannelImport() {
		$kodi = eqLogic::byId($this->id);
		if ($kodi->getIsEnable() == 1 && $kodi->getConfiguration('heartbeat', 0) == 1) {
			if ($kodi->getConfiguration('login') == '' && $kodi->getConfiguration('password') == '') {
				$requestHeader = 'http://' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
			} else {
				$requestHeader = 'http://' . $kodi->getConfiguration('login') . ':' . $kodi->getConfiguration('password') . '@' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
			}
			$json = array(
				'jsonrpc' => '2.0',
				'method'  => 'PVR.GetChannels',
				'id'      => rand(1, 9999999),
				'params' => array('channelgroupid' => 1)
			);
			$request = json_encode($json);
			$url=$requestHeader.'/jsonrpc';

			$ch = curl_init();
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
			$responseRaw = curl_exec($ch);
			$response = json_decode ($responseRaw);
			curl_close($ch);
			if (array_key_exists("channels", $response->result)) {
				foreach ($response->result->channels as $item) {
					$channel = $this->getCmd(null, 'tv_'.$item->label);
					if (!is_object($channel)) {
						$channel = new kodiCmd();
						$channel->setLogicalId('tv_'.$item->label);
						$channel->setIsVisible(1);
						$channel->setName($item->label);
					}
					$channel->setType('action');
					$channel->setSubType('other');
					$channel->setConfiguration('request', 'Player.Open');
					$channel->setConfiguration('parameters', '"item":{"channelid":'.$item->channelid."}");
					$channel->setEqLogic_id($this->getId());
					$channel->save();
				}
			}
		}
	}
On va encore dire que je fait que troll sans ecrire de code ( le PHP, c'est pas du tout mon rayon ;) ). Mon code est sous WTFPL.

Si besoin d'aide, faites signe :)

francois.a43
Timide
Messages : 17
Inscription : 01 nov. 2017, 21:34

Re: Remonté d'info PVR ( TVHeadend )

Message par francois.a43 » 15 août 2019, 18:36

Hello JujuBickoille,

Merci pour ta modification pour le plugins kodi, cependant j'ai un soucis, j'ai mis la fonction et l'appel de la fonction (je pense au bon endroit), mais lorsque que je clique sur "Sauvegarder", j'ai une erreur 500. Si je désactive l'appel de la fonction l'enregistrement marche. Aurais-tu une idée ?

Merci d'avance

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 21 août 2019, 19:36

Salut Francois.a43,

Visiblement, si tu à l'erreur, c'est que probablement tu à mis l'appel au bon endroit ( c'est dans postSave() ).

Pourrais-tu m'indiquer ce que tu à dans /var/www/html/log/http.error ?

Pour se faire, tu lance la commande "sudo tail -f /var/www/html/log/http.error" dans un terminal et tu reclique sur sauvegarder. Tu aura une ( ou plusieurs ) lignes qui apparaîtrons. Cela m'aidera à corriger le problème :)

francois.a43
Timide
Messages : 17
Inscription : 01 nov. 2017, 21:34

Re: Remonté d'info PVR ( TVHeadend )

Message par francois.a43 » 21 août 2019, 23:05

Hello JujuBickoille,

Voici le retour de la "sudo tail -f /var/www/html/log/http.error"


[Wed Aug 21 22:58:41.398070 2019] [:error] [pid 29844] [client 192.168.1.114:63930] PHP Fatal error: Uncaught Error: Call to undefined method kodi::doTVChannelImport() in /var/www/html/plugins/kodi/core/class/kodi.class.php:127\nStack trace:\n#0 /var/www/html/core/class/DB.class.php(199): kodi->postSave()\n#1 /var/www/html/core/class/eqLogic.class.php(979): DB::save(Object(kodi), false)\n#2 /var/www/html/core/ajax/eqLogic.ajax.php(343): eqLogic->save()\n#3 {main}\n thrown in /var/www/html/plugins/kodi/core/class/kodi.class.php on line 127, referer: http://192.168.1.14/index.php?v=d&m=kodi&p=kodi


J'ai aussi ajouter la fonction comme si dessous (extrait de mon kodi.class), raccourcis pour la longueur du post

public function preSave() {
if ($this->getType() == 'action' && $this->getConfiguration('request') == '') {
throw new Exception(__('La requete ne peut etre vide', __FILE__));
}
}

public function doTVChannelImport() {
$kodi = eqLogic::byId($this->id);
if ($kodi->getIsEnable() == 1 && $kodi->getConfiguration('heartbeat', 0) == 1) {
if ($kodi->getConfiguration('login') == '' && $kodi->getConfiguration('password') == '') {
$requestHeader = 'http://' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
} ....
}

public function reqjson($json = null) {
$kodi = $this->getEqLogic();
if ($kodi->getConfiguration('login') == '' && $kodi->getConfiguration('password') == '') {
$requestHeader = 'http://' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 22 août 2019, 18:59

Visiblement, il ne trouve pas la fonction doTVChannelImport() dans ton kodi.class.php

Ce que je trouve étrange, c'est qu'il semble assez different ton kodi.class.php, le miens ressemble à ceci:

Code : Tout sélectionner


        public function preSave() {
                $this->setLogicalId($this->getConfiguration('addr'));
        }

        public function doTVChannelImport() {
                $kodi = eqLogic::byId($this->id);
...blablabla...

                                        $channel->setConfiguration('parameters', '"item":{"channelid":'.$item->channelid."}");
                                        $channel->setEqLogic_id($this->getId());
                                        $channel->save();
                                }
                        }
                }
        }

        public function postSave() {
                if (!$this->getId()) {
                        return;
                }
                $this->doTVChannelImport();

                $notifications = $this->getCmd(null, 'notifications');
                if (!is_object($notifications)) {
                        $notifications = new kodiCmd();
                        $notifications->setLogicalId('notifications');
...blablabla...

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 22 août 2019, 19:02

Okay, j'ai compris !

Il faut que tu mette la fonction dans la classe "class kodi extends eqLogic" et non pas dans "class kodiCmd extends cmd".

J'avais pas vu, mais il y à DEUX fonctions preSave() dans le fichier ! :]

Je penses qu'en la mettant la fonction dans "class kodi extends eqLogic" et en l’appelant dans postSave() ( de la même classe ), tu n'aura plus le problème de l'erreur 500.

francois.a43
Timide
Messages : 17
Inscription : 01 nov. 2017, 21:34

Re: Remonté d'info PVR ( TVHeadend )

Message par francois.a43 » 26 août 2019, 18:39

Hello JujuBickoille,

Effectivement cela marche mieux quand on le met dans la bonne class =),
J'avais pas fait attention qu'il y'avais deux classes.
En tous cas maintenant cela fonctionne correctement =)

Merci pour ton aide et pour ton travail

JujuBickoille
Timide
Messages : 44
Inscription : 05 oct. 2017, 14:53

Re: Remonté d'info PVR ( TVHeadend )

Message par JujuBickoille » 29 août 2019, 12:53

Nice, effectivement, je n'avais pas vu non plus que deux classes avec les ( partiellement ) même noms de fonctions etait présentes.
Content de savoir que ça fonctionne chez toi :]

Je m'occupe ASAP de faire pareil pour les radios, c'est quasi le même code, je penses que je rendrais la fonction plus générique.

Si quelqu'un à une idée de comment "pull request" pour un plugin qui n'es pas sur github ( ou alors, que j'ai pas trouvé )

Répondre

Revenir vers « [Plugin Officiel] Kodi »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités