<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>sujet Re: API decodeur TV plus dans Panne TV / VOD</title>
    <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1975942#M7857</link>
    <description>&lt;P&gt;Bonjour,&lt;BR /&gt;je suis dans le même cas que vous mais pour la box THD SFR &lt;BR /&gt;j'aimerais savoir s'il existe l'API Html pour la box THD de SFR.&lt;/P&gt;
&lt;P&gt;Si vous avez des infos de vos recherches...&lt;/P&gt;
&lt;P&gt;Merci&lt;/P&gt;</description>
    <pubDate>Tue, 21 Nov 2017 15:43:24 GMT</pubDate>
    <dc:creator>utilisateur_supprimé</dc:creator>
    <dc:date>2017-11-21T15:43:24Z</dc:date>
    <item>
      <title>API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1971115#M7855</link>
      <description>&lt;P&gt;Bonjour,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;j'aimerais savoir si il existe un API pour commander le décodeur TV plus?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Car j'aimerais pouvoir allumer mon décodeur avec ma box domotique. Il doit bien exister un moyen vu que l'appli telephone SFR TV arrive à commander le décodeur.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Merci&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 17:55:54 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1971115#M7855</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2017-11-08T17:55:54Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1971729#M7856</link>
      <description>&lt;P&gt;Je vois que le sujet inspire beaucoup de monde &lt;span class="lia-unicode-emoji" title=":visage_souriant_avec_des_yeux_rieurs:"&gt;😄&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Nov 2017 01:14:36 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1971729#M7856</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2017-11-10T01:14:36Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1975942#M7857</link>
      <description>&lt;P&gt;Bonjour,&lt;BR /&gt;je suis dans le même cas que vous mais pour la box THD SFR &lt;BR /&gt;j'aimerais savoir s'il existe l'API Html pour la box THD de SFR.&lt;/P&gt;
&lt;P&gt;Si vous avez des infos de vos recherches...&lt;/P&gt;
&lt;P&gt;Merci&lt;/P&gt;</description>
      <pubDate>Tue, 21 Nov 2017 15:43:24 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1975942#M7857</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2017-11-21T15:43:24Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1975945#M7858</link>
      <description>&lt;P&gt;Je n'ai rien trouvé .... J'ai peur que SFR ne soit pas intéressé pour donner la main sur leur box au client :'(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Du coup avec un broadlink RM PRO j'ai enregistré ma télécommande et j'envoie grace à ma box domotique les commandes vers mon decodeur.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Nov 2017 15:58:57 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/1975945#M7858</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2017-11-21T15:58:57Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2021540#M7859</link>
      <description>&lt;P&gt;Bonjour,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Un script Python existe... je m'en suis inspiré pour faire un script PHP pour la box de domotique eedomus.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://github.com/dragouf/sfrtvctl" target="_blank"&gt;https://github.com/dragouf/sfrtvctl&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Apr 2018 14:11:54 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2021540#M7859</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2018-04-10T14:11:54Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2060376#M7860</link>
      <description>&lt;P&gt;Bonjour&lt;/P&gt;
&lt;P&gt;N aurais tu pas pour&amp;nbsp; idéée de partager ton scritp en PHP ?&lt;/P&gt;
&lt;P&gt;j'utilise un raspeberry et Domoticz&amp;nbsp; et je n'arrive pas a tirer profit de&lt;SPAN class="css-truncate css-truncate-target"&gt;&lt;A id="5ee2fc85f6af7eaa38f5c709045205cf-ee65949b64ab1c40af5d301c86c578c69e650a68" class="js-navigation-open" title="sfrtvctl" href="https://github.com/dragouf/sfrtvctl/tree/master/sfrtvctl" target="_blank"&gt;s frtvctl&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 15 Sep 2018 18:26:09 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2060376#M7860</guid>
      <dc:creator>ELDOMO</dc:creator>
      <dc:date>2018-09-15T18:26:09Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2076829#M7861</link>
      <description>&lt;P&gt;bonsoir&lt;/P&gt;
&lt;P&gt;je suis curieux de jeter un oeil a ton script tu partages ?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Nov 2018 22:39:56 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2076829#M7861</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2018-11-15T22:39:56Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2186527#M7862</link>
      <description>&lt;P&gt;Bonjour,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;J'ai pas mal cherché (et perdu du temps) donc je partage...&lt;/P&gt;&lt;P&gt;Merci mille fois dragouf pour ton script python : &lt;A href="https://github.com/dragouf/sfrtvctl" target="_blank"&gt;https://github.com/dragouf/sfrtvctl&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ci-joint, un mini script en php pour utiliser les web sockets et démarrer le décodeur tv sfr SBT7.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&amp;lt;?php&lt;BR /&gt;&lt;BR /&gt;$IP="192.168.1.100"; // a changer&lt;BR /&gt;$PORT=7682;&lt;BR /&gt;&lt;BR /&gt;$ws = new ws(array('host' =&amp;gt; $IP,'port' =&amp;gt; $PORT,'wskey' =&amp;gt; 'XXXXXXXXXXXXXXXXXXXXXX=='));&lt;BR /&gt;$ws-&amp;gt;send('{"Params": {"Token": "LAN", "DeviceSoftVersion": "11.2.2", "Action": "ButtonEvent", "Press": [303], "DeviceModel": "iPhone"}}');&lt;BR /&gt;$ws-&amp;gt;close();&lt;BR /&gt;&lt;BR /&gt;class ws
{
	private $params;
	private $head;
	private $instance;
		
	public function __construct($params)
	{
		foreach($params as $key =&amp;gt; $value)
			$this-&amp;gt;params[$key] = $value;

		$this-&amp;gt;head =	"GET / HTTP/1.1\r\n" .
						"Upgrade: websocket\r\n" .
						"Host: ".$this-&amp;gt;params['host'].":".$this-&amp;gt;params['port']."\r\n" .
						"Origin: ".$this-&amp;gt;params['host'].":".$this-&amp;gt;params['port']."\r\n" .
						"Sec-WebSocket-Key: ".$this-&amp;gt;params['wskey']."\r\n" .
						"Sec-WebSocket-Version: 13\r\n" .
            "Connection: upgrade\r\n" .
            "Sec-WebSocket-Protocol: lws-bidirectional-protocol\r\n";		
	}

	public function send($method)
	{
		$this-&amp;gt;head .= "Content-Length: ".strlen($method)."\r\n\r\n";
		$this-&amp;gt;connect();		
		fwrite($this-&amp;gt;instance, $this-&amp;gt;hybi10Encode($method));
		//$wsdata = fread($this-&amp;gt;instance, 2000);
		//return $this-&amp;gt;hybi10Decode($wsdata);		
	}

	public function close()
	{
		if($this-&amp;gt;instance)
		{
			fclose($this-&amp;gt;instance);
			$this-&amp;gt;instance = NULL;
		}
	}
	
	private function connect()
	{
		$sock = fsockopen($this-&amp;gt;params['host'], $this-&amp;gt;params['port'], $errno, $errstr, 2);
		fwrite($sock, $this-&amp;gt;head);
		$headers = fread($sock, 2000);

		$this-&amp;gt;instance = $sock;		
	}
	
	private function hybi10Decode($data)
	{
		$bytes = $data;
		$dataLength = '';
		$mask = '';
		$coded_data = '';
		$decodedData = '';
		$secondByte = sprintf('%08b', ord($bytes[1]));
		$masked = ($secondByte[0]=='1') ? true : false;
		$dataLength = ($masked===true) ? ord($bytes[1]) &amp;amp; 127 : ord($bytes[1]);

		if ($masked===true)
		{
			if ($dataLength===126)
			{
				$mask = substr($bytes, 4, 4);
				$coded_data = substr($bytes, 8);
			}
			elseif ($dataLength===127)
			{
				$mask = substr($bytes, 10, 4);
				$coded_data = substr($bytes, 14);
			}
			else
			{
				$mask = substr($bytes, 2, 4);
				$coded_data = substr($bytes, 6);
			}
			for ($i = 0; $i&amp;lt;strlen($coded_data); $i++)
				$decodedData .= $coded_data[$i] ^ $mask[$i % 4];
		}
		else
		{
			if ($dataLength===126)
				$decodedData = substr($bytes, 4);
			elseif ($dataLength===127)
				$decodedData = substr($bytes, 10);
			else
				$decodedData = substr($bytes, 2);
		}

		return $decodedData;
	}

	private function hybi10Encode($payload, $type = 'text', $masked = true)
	{
		$frameHead = array();
		$frame = '';
		$payloadLength = strlen($payload);

		switch ($type)
		{
			case 'text' :
				// first byte indicates FIN, Text-Frame (10000001):
				$frameHead[0] = 129;
				break;

			case 'close' :
				// first byte indicates FIN, Close Frame(10001000):
				$frameHead[0] = 136;
				break;

			case 'ping' :
				// first byte indicates FIN, Ping frame (10001001):
				$frameHead[0] = 137;
				break;

			case 'pong' :
				// first byte indicates FIN, Pong frame (10001010):
				$frameHead[0] = 138;
				break;
		}

		// set mask and payload length (using 1, 3 or 9 bytes)
		if ($payloadLength&amp;gt;65535)
		{
			$payloadLengthBin = str_split(sprintf('%064b', $payloadLength), 8);
			$frameHead[1] = ($masked===true) ? 255 : 127;
			for ($i = 0; $i&amp;lt;8; $i++)
				$frameHead[$i + 2] = bindec($payloadLengthBin[$i]);

			// most significant bit MUST be 0 (close connection if frame too big)
			if ($frameHead[2]&amp;gt;127)
			{
				$this-&amp;gt;close(1004);
				return false;
			}
		}
		elseif ($payloadLength&amp;gt;125)
		{
			$payloadLengthBin = str_split(sprintf('%016b', $payloadLength), 8);
			$frameHead[1] = ($masked===true) ? 254 : 126;
			$frameHead[2] = bindec($payloadLengthBin[0]);
			$frameHead[3] = bindec($payloadLengthBin[1]);
		}
		else
			$frameHead[1] = ($masked===true) ? $payloadLength + 128 : $payloadLength;

		// convert frame-head to string:
		foreach (array_keys($frameHead) as $i)
			$frameHead[$i] = chr($frameHead[$i]);

		if ($masked===true)
		{
			// generate a random mask:
			$mask = array();
			for ($i = 0; $i&amp;lt;4; $i++)
				$mask[$i] = chr(rand(0, 255));

			$frameHead = array_merge($frameHead, $mask);
		}
		$frame = implode('', $frameHead);
		// append payload to frame:
		for ($i = 0; $i&amp;lt;$payloadLength; $i++)
			$frame .= ($masked===true) ? $payload[$i] ^ $mask[$i % 4] : $payload[$i];

		return $frame;
	}
}&lt;BR /&gt;?&amp;gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Les autres commandes disponibles : (&lt;A href="https://github.com/dragouf/sfrtvctl/blob/master/sfrtvctl/remote.py" target="_blank"&gt;https://github.com/dragouf/sfrtvctl/blob/master/sfrtvctl/remote.py&lt;/A&gt;)&lt;/P&gt;&lt;PRE&gt;    "VUP": 308,
    "VDOWN": 307,
    "RIGHT": 222,
    "LEFT": 293,
    "UP": 297,
    "DOWN": 294,
    "PUP": 290,
    "PDOWN": 291,
    "INFO": 301,
    "RETURN": 27,
    "OK": 13,
    "NUMBER": "THIRDARGUMENT_UTF8DECIMALCODE",
    "PLAYPAUSE": 306,
    "FORWARD": 305,
    "REWIND": 304,
    "MUTE": 302,
    "POWER": 30&lt;/PRE&gt;&lt;P&gt;Le payload pour afficher la chaine TF1 :&lt;/P&gt;&lt;PRE&gt;$key=1&lt;BR /&gt;$ws-&amp;gt;send("{\"Params\": {\"Token\": \"LAN\", \"DeviceSoftVersion\": \"11.2.2\", \"Params\": [$key, \"zapdigit\"], \"Action\": \"CustomEvent\", \"DeviceModel\": \"iPhone\", \"Event\": \"GotoLive\"}}");&lt;/PRE&gt;&lt;P&gt;Bonne journée,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Apr 2020 12:43:20 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2186527#M7862</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2020-04-01T12:43:20Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2189437#M7863</link>
      <description>Merci ça fonctionne par contre je n’arrive plus à naviguer quand j’arrive sur Netflix... sauriez vous comment faire ?</description>
      <pubDate>Fri, 10 Apr 2020 06:35:30 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2189437#M7863</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2020-04-10T06:35:30Z</dc:date>
    </item>
    <item>
      <title>Re: API decodeur TV plus</title>
      <link>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2210186#M20143</link>
      <description>&lt;P&gt;Bonjour,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Serait il possible d'avoir plus de précision...&lt;/P&gt;&lt;P&gt;Entre l'installation du script Python de Github qui me semble un peu léger.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Quand je lance l'instruction : "python setup.py install", j'ai un message d'erreur disant qu'il ne trouve pas le setup.py&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Et ensuite votre script PHP, ou l'installe t'on ?&lt;/P&gt;&lt;P&gt;désolé pour ces questions qui vous sembleront surement basic.&lt;/P&gt;</description>
      <pubDate>Sun, 28 Jun 2020 10:58:16 GMT</pubDate>
      <guid>https://la-communaute.sfr.fr/t5/panne-tv-vod/api-decodeur-tv-plus/m-p/2210186#M20143</guid>
      <dc:creator>utilisateur_supprimé</dc:creator>
      <dc:date>2020-06-28T10:58:16Z</dc:date>
    </item>
  </channel>
</rss>

